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 */ 47struct 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