linux/arch/hexagon/kernel/vm_events.c
<<
>>
Prefs
   1/*
   2 * Mostly IRQ support for Hexagon
   3 *
   4 * Copyright (c) 2010-2012, The Linux Foundation. All rights reserved.
   5 *
   6 * This program is free software; you can redistribute it and/or modify
   7 * it under the terms of the GNU General Public License version 2 and
   8 * only version 2 as published by the Free Software Foundation.
   9 *
  10 * This program is distributed in the hope that it will be useful,
  11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13 * GNU General Public License for more details.
  14 *
  15 * You should have received a copy of the GNU General Public License
  16 * along with this program; if not, write to the Free Software
  17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  18 * 02110-1301, USA.
  19 */
  20
  21#include <linux/kernel.h>
  22#include <asm/registers.h>
  23#include <linux/irq.h>
  24#include <linux/hardirq.h>
  25
  26/*
  27 * show_regs - print pt_regs structure
  28 * @regs: pointer to pt_regs
  29 *
  30 * To-do:  add all the accessor definitions to registers.h
  31 *
  32 * Will make this routine a lot easier to write.
  33 */
  34void show_regs(struct pt_regs *regs)
  35{
  36        show_regs_print_info(KERN_EMERG);
  37
  38        printk(KERN_EMERG "restart_r0: \t0x%08lx   syscall_nr: %ld\n",
  39               regs->restart_r0, regs->syscall_nr);
  40        printk(KERN_EMERG "preds: \t\t0x%08lx\n", regs->preds);
  41        printk(KERN_EMERG "lc0: \t0x%08lx   sa0: 0x%08lx   m0:  0x%08lx\n",
  42               regs->lc0, regs->sa0, regs->m0);
  43        printk(KERN_EMERG "lc1: \t0x%08lx   sa1: 0x%08lx   m1:  0x%08lx\n",
  44               regs->lc1, regs->sa1, regs->m1);
  45        printk(KERN_EMERG "gp: \t0x%08lx   ugp: 0x%08lx   usr: 0x%08lx\n",
  46               regs->gp, regs->ugp, regs->usr);
  47        printk(KERN_EMERG "cs0: \t0x%08lx   cs1: 0x%08lx\n",
  48               regs->cs0, regs->cs1);
  49        printk(KERN_EMERG "r0: \t0x%08lx %08lx %08lx %08lx\n", regs->r00,
  50                regs->r01,
  51                regs->r02,
  52                regs->r03);
  53        printk(KERN_EMERG "r4:  \t0x%08lx %08lx %08lx %08lx\n", regs->r04,
  54                regs->r05,
  55                regs->r06,
  56                regs->r07);
  57        printk(KERN_EMERG "r8:  \t0x%08lx %08lx %08lx %08lx\n", regs->r08,
  58                regs->r09,
  59                regs->r10,
  60                regs->r11);
  61        printk(KERN_EMERG "r12: \t0x%08lx %08lx %08lx %08lx\n", regs->r12,
  62                regs->r13,
  63                regs->r14,
  64                regs->r15);
  65        printk(KERN_EMERG "r16: \t0x%08lx %08lx %08lx %08lx\n", regs->r16,
  66                regs->r17,
  67                regs->r18,
  68                regs->r19);
  69        printk(KERN_EMERG "r20: \t0x%08lx %08lx %08lx %08lx\n", regs->r20,
  70                regs->r21,
  71                regs->r22,
  72                regs->r23);
  73        printk(KERN_EMERG "r24: \t0x%08lx %08lx %08lx %08lx\n", regs->r24,
  74                regs->r25,
  75                regs->r26,
  76                regs->r27);
  77        printk(KERN_EMERG "r28: \t0x%08lx %08lx %08lx %08lx\n", regs->r28,
  78                regs->r29,
  79                regs->r30,
  80                regs->r31);
  81
  82        printk(KERN_EMERG "elr: \t0x%08lx   cause: 0x%08lx   user_mode: %d\n",
  83                pt_elr(regs), pt_cause(regs), user_mode(regs));
  84        printk(KERN_EMERG "psp: \t0x%08lx   badva: 0x%08lx   int_enabled: %d\n",
  85                pt_psp(regs), pt_badva(regs), ints_enabled(regs));
  86}
  87
  88void dummy_handler(struct pt_regs *regs)
  89{
  90        unsigned int elr = pt_elr(regs);
  91        printk(KERN_ERR "Unimplemented handler; ELR=0x%08x\n", elr);
  92}
  93
  94
  95void arch_do_IRQ(struct pt_regs *regs)
  96{
  97        int irq = pt_cause(regs);
  98        struct pt_regs *old_regs = set_irq_regs(regs);
  99
 100        irq_enter();
 101        generic_handle_irq(irq);
 102        irq_exit();
 103        set_irq_regs(old_regs);
 104}
 105