1 /* MN10300 Exception frame layout and ptrace constants 2 * 3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 4 * Written by David Howells (dhowells@redhat.com) 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public Licence 8 * as published by the Free Software Foundation; either version 9 * 2 of the Licence, or (at your option) any later version. 10 */ 11 #ifndef _ASM_PTRACE_H 12 #define _ASM_PTRACE_H 13 14 #define PT_A3 0 15 #define PT_A2 1 16 #define PT_D3 2 17 #define PT_D2 3 18 #define PT_MCVF 4 19 #define PT_MCRL 5 20 #define PT_MCRH 6 21 #define PT_MDRQ 7 22 #define PT_E1 8 23 #define PT_E0 9 24 #define PT_E7 10 25 #define PT_E6 11 26 #define PT_E5 12 27 #define PT_E4 13 28 #define PT_E3 14 29 #define PT_E2 15 30 #define PT_SP 16 31 #define PT_LAR 17 32 #define PT_LIR 18 33 #define PT_MDR 19 34 #define PT_A1 20 35 #define PT_A0 21 36 #define PT_D1 22 37 #define PT_D0 23 38 #define PT_ORIG_D0 24 39 #define PT_EPSW 25 40 #define PT_PC 26 41 #define NR_PTREGS 27 42 43 /* 44 * This defines the way registers are stored in the event of an exception 45 * - the strange order is due to the MOVM instruction 46 */ 47 struct pt_regs { 48 unsigned long a3; /* syscall arg 3 */ 49 unsigned long a2; /* syscall arg 4 */ 50 unsigned long d3; /* syscall arg 5 */ 51 unsigned long d2; /* syscall arg 6 */ 52 unsigned long mcvf; 53 unsigned long mcrl; 54 unsigned long mcrh; 55 unsigned long mdrq; 56 unsigned long e1; 57 unsigned long e0; 58 unsigned long e7; 59 unsigned long e6; 60 unsigned long e5; 61 unsigned long e4; 62 unsigned long e3; 63 unsigned long e2; 64 unsigned long sp; 65 unsigned long lar; 66 unsigned long lir; 67 unsigned long mdr; 68 unsigned long a1; 69 unsigned long a0; /* syscall arg 1 */ 70 unsigned long d1; /* syscall arg 2 */ 71 unsigned long d0; /* syscall ret */ 72 struct pt_regs *next; /* next frame pointer */ 73 unsigned long orig_d0; /* syscall number */ 74 unsigned long epsw; 75 unsigned long pc; 76 }; 77 78 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ 79 #define PTRACE_GETREGS 12 80 #define PTRACE_SETREGS 13 81 #define PTRACE_GETFPREGS 14 82 #define PTRACE_SETFPREGS 15 83 84 /* options set using PTRACE_SETOPTIONS */ 85 #define PTRACE_O_TRACESYSGOOD 0x00000001 86 87 #ifdef __KERNEL__ 88 89 #define user_mode(regs) (((regs)->epsw & EPSW_nSL) == EPSW_nSL) 90 #define instruction_pointer(regs) ((regs)->pc) 91 #define user_stack_pointer(regs) ((regs)->sp) 92 93 #define arch_has_single_step() (1) 94 95 #define profile_pc(regs) ((regs)->pc) 96 97 #endif /* __KERNEL__ */ 98 #endif /* _ASM_PTRACE_H */ 99