linux/arch/sh/include/asm/traps_32.h
<<
>>
Prefs
   1#ifndef __ASM_SH_TRAPS_32_H
   2#define __ASM_SH_TRAPS_32_H
   3
   4#include <linux/types.h>
   5#include <asm/mmu.h>
   6
   7#ifdef CONFIG_CPU_HAS_SR_RB
   8#define lookup_exception_vector()       \
   9({                                      \
  10        unsigned long _vec;             \
  11                                        \
  12        __asm__ __volatile__ (          \
  13                "stc r2_bank, %0\n\t"   \
  14                : "=r" (_vec)           \
  15        );                              \
  16                                        \
  17        _vec;                           \
  18})
  19#else
  20#define lookup_exception_vector()       \
  21({                                      \
  22        unsigned long _vec;             \
  23        __asm__ __volatile__ (          \
  24                "mov r4, %0\n\t"        \
  25                : "=r" (_vec)           \
  26        );                              \
  27                                        \
  28        _vec;                           \
  29})
  30#endif
  31
  32static inline void trigger_address_error(void)
  33{
  34        __asm__ __volatile__ (
  35                "ldc %0, sr\n\t"
  36                "mov.l @%1, %0"
  37                :
  38                : "r" (0x10000000), "r" (0x80000001)
  39        );
  40}
  41
  42asmlinkage void do_address_error(struct pt_regs *regs,
  43                                 unsigned long writeaccess,
  44                                 unsigned long address);
  45asmlinkage void do_divide_error(unsigned long r4);
  46asmlinkage void do_reserved_inst(void);
  47asmlinkage void do_illegal_slot_inst(void);
  48asmlinkage void do_exception_error(void);
  49
  50#define BUILD_TRAP_HANDLER(name)                                        \
  51asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5, \
  52                                    unsigned long r6, unsigned long r7, \
  53                                    struct pt_regs __regs)
  54
  55#define TRAP_HANDLER_DECL                               \
  56        struct pt_regs *regs = RELOC_HIDE(&__regs, 0);  \
  57        unsigned int vec = regs->tra;                   \
  58        (void)vec;
  59
  60#endif /* __ASM_SH_TRAPS_32_H */
  61