diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-01-05 06:48:10 -0500 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2011-01-05 06:47:31 -0500 |
commit | 5e9a26928f550157563cfc06ce12c4ae121a02ec (patch) | |
tree | fc58668f8c6151a5f58c0430f92a0691d727af42 /arch/s390/include/asm/ptrace.h | |
parent | da7f51c11d5fedca9ba779ee220063ccb4f0a27e (diff) |
[S390] ptrace cleanup
Overhaul program event recording and the code dealing with the ptrace
user space interface.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/ptrace.h')
-rw-r--r-- | arch/s390/include/asm/ptrace.h | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/arch/s390/include/asm/ptrace.h b/arch/s390/include/asm/ptrace.h index d9d42b1e46fa..9ad628a8574a 100644 --- a/arch/s390/include/asm/ptrace.h +++ b/arch/s390/include/asm/ptrace.h | |||
@@ -331,10 +331,60 @@ struct pt_regs | |||
331 | unsigned short ilc; | 331 | unsigned short ilc; |
332 | unsigned short svcnr; | 332 | unsigned short svcnr; |
333 | }; | 333 | }; |
334 | |||
335 | /* | ||
336 | * Program event recording (PER) register set. | ||
337 | */ | ||
338 | struct per_regs { | ||
339 | unsigned long control; /* PER control bits */ | ||
340 | unsigned long start; /* PER starting address */ | ||
341 | unsigned long end; /* PER ending address */ | ||
342 | }; | ||
343 | |||
344 | /* | ||
345 | * PER event contains information about the cause of the last PER exception. | ||
346 | */ | ||
347 | struct per_event { | ||
348 | unsigned short cause; /* PER code, ATMID and AI */ | ||
349 | unsigned long address; /* PER address */ | ||
350 | unsigned char paid; /* PER access identification */ | ||
351 | }; | ||
352 | |||
353 | /* | ||
354 | * Simplified per_info structure used to decode the ptrace user space ABI. | ||
355 | */ | ||
356 | struct per_struct_kernel { | ||
357 | unsigned long cr9; /* PER control bits */ | ||
358 | unsigned long cr10; /* PER starting address */ | ||
359 | unsigned long cr11; /* PER ending address */ | ||
360 | unsigned long bits; /* Obsolete software bits */ | ||
361 | unsigned long starting_addr; /* User specified start address */ | ||
362 | unsigned long ending_addr; /* User specified end address */ | ||
363 | unsigned short perc_atmid; /* PER trap ATMID */ | ||
364 | unsigned long address; /* PER trap instruction address */ | ||
365 | unsigned char access_id; /* PER trap access identification */ | ||
366 | }; | ||
367 | |||
368 | #define PER_EVENT_MASK 0xE9000000UL | ||
369 | |||
370 | #define PER_EVENT_BRANCH 0x80000000UL | ||
371 | #define PER_EVENT_IFETCH 0x40000000UL | ||
372 | #define PER_EVENT_STORE 0x20000000UL | ||
373 | #define PER_EVENT_STORE_REAL 0x08000000UL | ||
374 | #define PER_EVENT_NULLIFICATION 0x01000000UL | ||
375 | |||
376 | #define PER_CONTROL_MASK 0x00a00000UL | ||
377 | |||
378 | #define PER_CONTROL_BRANCH_ADDRESS 0x00800000UL | ||
379 | #define PER_CONTROL_ALTERATION 0x00200000UL | ||
380 | |||
334 | #endif | 381 | #endif |
335 | 382 | ||
336 | /* | 383 | /* |
337 | * Now for the program event recording (trace) definitions. | 384 | * Now for the user space program event recording (trace) definitions. |
385 | * The following structures are used only for the ptrace interface, don't | ||
386 | * touch or even look at it if you don't want to modify the user-space | ||
387 | * ptrace interface. In particular stay away from it for in-kernel PER. | ||
338 | */ | 388 | */ |
339 | typedef struct | 389 | typedef struct |
340 | { | 390 | { |