Merge branch 'next-i2c' of git://git.fluff.org/bjdooks/linux
[pandora-kernel.git] / arch / mn10300 / include / asm / ptrace.h
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 */