diff options
Diffstat (limited to 'arch/s390/include/asm')
| -rw-r--r-- | arch/s390/include/asm/ptrace.h | 13 | ||||
| -rw-r--r-- | arch/s390/include/asm/syscall.h | 7 |
2 files changed, 19 insertions, 1 deletions
diff --git a/arch/s390/include/asm/ptrace.h b/arch/s390/include/asm/ptrace.h index 95dcf183a28d..dd2d913afcae 100644 --- a/arch/s390/include/asm/ptrace.h +++ b/arch/s390/include/asm/ptrace.h | |||
| @@ -492,13 +492,24 @@ struct user_regs_struct | |||
| 492 | struct task_struct; | 492 | struct task_struct; |
| 493 | extern void user_enable_single_step(struct task_struct *); | 493 | extern void user_enable_single_step(struct task_struct *); |
| 494 | extern void user_disable_single_step(struct task_struct *); | 494 | extern void user_disable_single_step(struct task_struct *); |
| 495 | extern void show_regs(struct pt_regs * regs); | ||
| 495 | 496 | ||
| 496 | #define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0) | 497 | #define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0) |
| 497 | #define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN) | 498 | #define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN) |
| 498 | #define user_stack_pointer(regs)((regs)->gprs[15]) | 499 | #define user_stack_pointer(regs)((regs)->gprs[15]) |
| 499 | #define regs_return_value(regs)((regs)->gprs[2]) | 500 | #define regs_return_value(regs)((regs)->gprs[2]) |
| 500 | #define profile_pc(regs) instruction_pointer(regs) | 501 | #define profile_pc(regs) instruction_pointer(regs) |
| 501 | extern void show_regs(struct pt_regs * regs); | 502 | |
| 503 | int regs_query_register_offset(const char *name); | ||
| 504 | const char *regs_query_register_name(unsigned int offset); | ||
| 505 | unsigned long regs_get_register(struct pt_regs *regs, unsigned int offset); | ||
| 506 | unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, unsigned int n); | ||
| 507 | |||
| 508 | static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) | ||
| 509 | { | ||
| 510 | return regs->gprs[15] & PSW_ADDR_INSN; | ||
| 511 | } | ||
| 512 | |||
| 502 | #endif /* __KERNEL__ */ | 513 | #endif /* __KERNEL__ */ |
| 503 | #endif /* __ASSEMBLY__ */ | 514 | #endif /* __ASSEMBLY__ */ |
| 504 | 515 | ||
diff --git a/arch/s390/include/asm/syscall.h b/arch/s390/include/asm/syscall.h index e0a73d3eb837..8429686951f9 100644 --- a/arch/s390/include/asm/syscall.h +++ b/arch/s390/include/asm/syscall.h | |||
| @@ -15,6 +15,13 @@ | |||
| 15 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
| 16 | #include <asm/ptrace.h> | 16 | #include <asm/ptrace.h> |
| 17 | 17 | ||
| 18 | /* | ||
| 19 | * The syscall table always contains 32 bit pointers since we know that the | ||
| 20 | * address of the function to be called is (way) below 4GB. So the "int" | ||
| 21 | * type here is what we want [need] for both 32 bit and 64 bit systems. | ||
| 22 | */ | ||
| 23 | extern const unsigned int sys_call_table[]; | ||
| 24 | |||
| 18 | static inline long syscall_get_nr(struct task_struct *task, | 25 | static inline long syscall_get_nr(struct task_struct *task, |
| 19 | struct pt_regs *regs) | 26 | struct pt_regs *regs) |
| 20 | { | 27 | { |
