diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-08 15:17:25 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-08 15:17:25 -0400 |
commit | 09b56d5a418b7ced4ca427c7cf8faf11df72364c (patch) | |
tree | 88ad1fe20f8fd7df89131cef5c7f8ef96f15406d /arch/arm/kernel/process.c | |
parent | fe1b518075d86976db3a93e7e8b640d24d477519 (diff) | |
parent | 98becb781e3e27d74efe5f3653b948d39f694cfb (diff) |
Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
Pull ARM updates from Russell King:
- add support for ftrace-with-registers, which is needed for kgraft and
other ftrace tools
- support for mremap() for the sigpage/vDSO so that checkpoint/restore
can work
- add timestamps to each line of the register dump output
- remove the unused KTHREAD_SIZE from nommu
- align the ARM bitops APIs with the generic API (using unsigned long
pointers rather than void pointers)
- make the configuration of userspace Thumb support an expert option so
that we can default it on, and avoid some hard to debug userspace
crashes
* 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
ARM: 8684/1: NOMMU: Remove unused KTHREAD_SIZE definition
ARM: 8683/1: ARM32: Support mremap() for sigpage/vDSO
ARM: 8679/1: bitops: Align prototypes to generic API
ARM: 8678/1: ftrace: Adds support for CONFIG_DYNAMIC_FTRACE_WITH_REGS
ARM: make configuration of userspace Thumb support an expert option
ARM: 8673/1: Fix __show_regs output timestamps
Diffstat (limited to 'arch/arm/kernel/process.c')
-rw-r--r-- | arch/arm/kernel/process.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 939e8b58c59d..d96714e1858c 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -123,10 +123,10 @@ void __show_regs(struct pt_regs *regs) | |||
123 | 123 | ||
124 | print_symbol("PC is at %s\n", instruction_pointer(regs)); | 124 | print_symbol("PC is at %s\n", instruction_pointer(regs)); |
125 | print_symbol("LR is at %s\n", regs->ARM_lr); | 125 | print_symbol("LR is at %s\n", regs->ARM_lr); |
126 | printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n" | 126 | printk("pc : [<%08lx>] lr : [<%08lx>] psr: %08lx\n", |
127 | "sp : %08lx ip : %08lx fp : %08lx\n", | 127 | regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr); |
128 | regs->ARM_pc, regs->ARM_lr, regs->ARM_cpsr, | 128 | printk("sp : %08lx ip : %08lx fp : %08lx\n", |
129 | regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); | 129 | regs->ARM_sp, regs->ARM_ip, regs->ARM_fp); |
130 | printk("r10: %08lx r9 : %08lx r8 : %08lx\n", | 130 | printk("r10: %08lx r9 : %08lx r8 : %08lx\n", |
131 | regs->ARM_r10, regs->ARM_r9, | 131 | regs->ARM_r10, regs->ARM_r9, |
132 | regs->ARM_r8); | 132 | regs->ARM_r8); |
@@ -404,9 +404,17 @@ static unsigned long sigpage_addr(const struct mm_struct *mm, | |||
404 | static struct page *signal_page; | 404 | static struct page *signal_page; |
405 | extern struct page *get_signal_page(void); | 405 | extern struct page *get_signal_page(void); |
406 | 406 | ||
407 | static int sigpage_mremap(const struct vm_special_mapping *sm, | ||
408 | struct vm_area_struct *new_vma) | ||
409 | { | ||
410 | current->mm->context.sigpage = new_vma->vm_start; | ||
411 | return 0; | ||
412 | } | ||
413 | |||
407 | static const struct vm_special_mapping sigpage_mapping = { | 414 | static const struct vm_special_mapping sigpage_mapping = { |
408 | .name = "[sigpage]", | 415 | .name = "[sigpage]", |
409 | .pages = &signal_page, | 416 | .pages = &signal_page, |
417 | .mremap = sigpage_mremap, | ||
410 | }; | 418 | }; |
411 | 419 | ||
412 | int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) | 420 | int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) |