diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /arch/s390/kernel/compat_ptrace.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'arch/s390/kernel/compat_ptrace.h')
-rw-r--r-- | arch/s390/kernel/compat_ptrace.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/arch/s390/kernel/compat_ptrace.h b/arch/s390/kernel/compat_ptrace.h new file mode 100644 index 000000000000..419aef913ee1 --- /dev/null +++ b/arch/s390/kernel/compat_ptrace.h | |||
@@ -0,0 +1,83 @@ | |||
1 | #ifndef _PTRACE32_H | ||
2 | #define _PTRACE32_H | ||
3 | |||
4 | #include "compat_linux.h" /* needed for _psw_t32 */ | ||
5 | |||
6 | typedef struct { | ||
7 | __u32 cr[3]; | ||
8 | } per_cr_words32; | ||
9 | |||
10 | typedef struct { | ||
11 | __u16 perc_atmid; /* 0x096 */ | ||
12 | __u32 address; /* 0x098 */ | ||
13 | __u8 access_id; /* 0x0a1 */ | ||
14 | } per_lowcore_words32; | ||
15 | |||
16 | typedef struct { | ||
17 | union { | ||
18 | per_cr_words32 words; | ||
19 | } control_regs; | ||
20 | /* | ||
21 | * Use these flags instead of setting em_instruction_fetch | ||
22 | * directly they are used so that single stepping can be | ||
23 | * switched on & off while not affecting other tracing | ||
24 | */ | ||
25 | unsigned single_step : 1; | ||
26 | unsigned instruction_fetch : 1; | ||
27 | unsigned : 30; | ||
28 | /* | ||
29 | * These addresses are copied into cr10 & cr11 if single | ||
30 | * stepping is switched off | ||
31 | */ | ||
32 | __u32 starting_addr; | ||
33 | __u32 ending_addr; | ||
34 | union { | ||
35 | per_lowcore_words32 words; | ||
36 | } lowcore; | ||
37 | } per_struct32; | ||
38 | |||
39 | struct user_regs_struct32 | ||
40 | { | ||
41 | _psw_t32 psw; | ||
42 | u32 gprs[NUM_GPRS]; | ||
43 | u32 acrs[NUM_ACRS]; | ||
44 | u32 orig_gpr2; | ||
45 | s390_fp_regs fp_regs; | ||
46 | /* | ||
47 | * These per registers are in here so that gdb can modify them | ||
48 | * itself as there is no "official" ptrace interface for hardware | ||
49 | * watchpoints. This is the way intel does it. | ||
50 | */ | ||
51 | per_struct32 per_info; | ||
52 | u32 ieee_instruction_pointer; | ||
53 | /* Used to give failing instruction back to user for ieee exceptions */ | ||
54 | }; | ||
55 | |||
56 | struct user32 { | ||
57 | /* We start with the registers, to mimic the way that "memory" | ||
58 | is returned from the ptrace(3,...) function. */ | ||
59 | struct user_regs_struct32 regs; /* Where the registers are actually stored */ | ||
60 | /* The rest of this junk is to help gdb figure out what goes where */ | ||
61 | u32 u_tsize; /* Text segment size (pages). */ | ||
62 | u32 u_dsize; /* Data segment size (pages). */ | ||
63 | u32 u_ssize; /* Stack segment size (pages). */ | ||
64 | u32 start_code; /* Starting virtual address of text. */ | ||
65 | u32 start_stack; /* Starting virtual address of stack area. | ||
66 | This is actually the bottom of the stack, | ||
67 | the top of the stack is always found in the | ||
68 | esp register. */ | ||
69 | s32 signal; /* Signal that caused the core dump. */ | ||
70 | u32 u_ar0; /* Used by gdb to help find the values for */ | ||
71 | /* the registers. */ | ||
72 | u32 magic; /* To uniquely identify a core file */ | ||
73 | char u_comm[32]; /* User command that was responsible */ | ||
74 | }; | ||
75 | |||
76 | typedef struct | ||
77 | { | ||
78 | __u32 len; | ||
79 | __u32 kernel_addr; | ||
80 | __u32 process_addr; | ||
81 | } ptrace_area_emu31; | ||
82 | |||
83 | #endif /* _PTRACE32_H */ | ||