Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.26-rc2 125 lines 2.6 kB view raw
1#ifndef __ASM_SH_PTRACE_H 2#define __ASM_SH_PTRACE_H 3 4/* 5 * Copyright (C) 1999, 2000 Niibe Yutaka 6 * 7 */ 8#if defined(__SH5__) || defined(CONFIG_SUPERH64) 9struct pt_regs { 10 unsigned long long pc; 11 unsigned long long sr; 12 unsigned long long syscall_nr; 13 unsigned long long regs[63]; 14 unsigned long long tregs[8]; 15 unsigned long long pad[2]; 16}; 17#else 18/* 19 * GCC defines register number like this: 20 * ----------------------------- 21 * 0 - 15 are integer registers 22 * 17 - 22 are control/special registers 23 * 24 - 39 fp registers 24 * 40 - 47 xd registers 25 * 48 - fpscr register 26 * ----------------------------- 27 * 28 * We follows above, except: 29 * 16 --- program counter (PC) 30 * 22 --- syscall # 31 * 23 --- floating point communication register 32 */ 33#define REG_REG0 0 34#define REG_REG15 15 35 36#define REG_PC 16 37 38#define REG_PR 17 39#define REG_SR 18 40#define REG_GBR 19 41#define REG_MACH 20 42#define REG_MACL 21 43 44#define REG_SYSCALL 22 45 46#define REG_FPREG0 23 47#define REG_FPREG15 38 48#define REG_XFREG0 39 49#define REG_XFREG15 54 50 51#define REG_FPSCR 55 52#define REG_FPUL 56 53 54/* 55 * This struct defines the way the registers are stored on the 56 * kernel stack during a system call or other kernel entry. 57 */ 58struct pt_regs { 59 unsigned long regs[16]; 60 unsigned long pc; 61 unsigned long pr; 62 unsigned long sr; 63 unsigned long gbr; 64 unsigned long mach; 65 unsigned long macl; 66 long tra; 67}; 68 69/* 70 * This struct defines the way the DSP registers are stored on the 71 * kernel stack during a system call or other kernel entry. 72 */ 73struct pt_dspregs { 74 unsigned long a1; 75 unsigned long a0g; 76 unsigned long a1g; 77 unsigned long m0; 78 unsigned long m1; 79 unsigned long a0; 80 unsigned long x0; 81 unsigned long x1; 82 unsigned long y0; 83 unsigned long y1; 84 unsigned long dsr; 85 unsigned long rs; 86 unsigned long re; 87 unsigned long mod; 88}; 89 90#define PTRACE_GETDSPREGS 55 91#define PTRACE_SETDSPREGS 56 92#endif 93 94#ifdef __KERNEL__ 95#include <asm/addrspace.h> 96 97#define user_mode(regs) (((regs)->sr & 0x40000000)==0) 98#define instruction_pointer(regs) ((unsigned long)(regs)->pc) 99 100extern void show_regs(struct pt_regs *); 101 102#ifdef CONFIG_SH_DSP 103#define task_pt_regs(task) \ 104 ((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE \ 105 - sizeof(struct pt_dspregs) - sizeof(unsigned long)) - 1) 106#else 107#define task_pt_regs(task) \ 108 ((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE \ 109 - sizeof(unsigned long)) - 1) 110#endif 111 112static inline unsigned long profile_pc(struct pt_regs *regs) 113{ 114 unsigned long pc = instruction_pointer(regs); 115 116#ifdef P2SEG 117 if (pc >= P2SEG && pc < P3SEG) 118 pc -= 0x20000000; 119#endif 120 121 return pc; 122} 123#endif /* __KERNEL__ */ 124 125#endif /* __ASM_SH_PTRACE_H */