diff options
Diffstat (limited to 'arch/arm/kernel/traps.c')
| -rw-r--r-- | arch/arm/kernel/traps.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index f838f36eb702..3f361a783f43 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c  | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* | 
| 2 | * linux/arch/arm/kernel/traps.c | 2 | * linux/arch/arm/kernel/traps.c | 
| 3 | * | 3 | * | 
| 4 | * Copyright (C) 1995-2002 Russell King | 4 | * Copyright (C) 1995-2009 Russell King | 
| 5 | * Fragments that appear the same as linux/arch/i386/kernel/traps.c (C) Linus Torvalds | 5 | * Fragments that appear the same as linux/arch/i386/kernel/traps.c (C) Linus Torvalds | 
| 6 | * | 6 | * | 
| 7 | * This program is free software; you can redistribute it and/or modify | 7 | * This program is free software; you can redistribute it and/or modify | 
| @@ -528,7 +528,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
| 528 | * __kuser_cmpxchg code in entry-armv.S should be aware of its | 528 | * __kuser_cmpxchg code in entry-armv.S should be aware of its | 
| 529 | * existence. Don't ever use this from user code. | 529 | * existence. Don't ever use this from user code. | 
| 530 | */ | 530 | */ | 
| 531 | case 0xfff0: | 531 | case NR(cmpxchg): | 
| 532 | for (;;) { | 532 | for (;;) { | 
| 533 | extern void do_DataAbort(unsigned long addr, unsigned int fsr, | 533 | extern void do_DataAbort(unsigned long addr, unsigned int fsr, | 
| 534 | struct pt_regs *regs); | 534 | struct pt_regs *regs); | 
| @@ -573,7 +573,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
| 573 | if not implemented, rather than raising SIGILL. This | 573 | if not implemented, rather than raising SIGILL. This | 
| 574 | way the calling program can gracefully determine whether | 574 | way the calling program can gracefully determine whether | 
| 575 | a feature is supported. */ | 575 | a feature is supported. */ | 
| 576 | if (no <= 0x7ff) | 576 | if ((no & 0xffff) <= 0x7ff) | 
| 577 | return -ENOSYS; | 577 | return -ENOSYS; | 
| 578 | break; | 578 | break; | 
| 579 | } | 579 | } | 
| @@ -751,6 +751,8 @@ void __init early_trap_init(void) | |||
| 751 | */ | 751 | */ | 
| 752 | memcpy((void *)KERN_SIGRETURN_CODE, sigreturn_codes, | 752 | memcpy((void *)KERN_SIGRETURN_CODE, sigreturn_codes, | 
| 753 | sizeof(sigreturn_codes)); | 753 | sizeof(sigreturn_codes)); | 
| 754 | memcpy((void *)KERN_RESTART_CODE, syscall_restart_code, | ||
| 755 | sizeof(syscall_restart_code)); | ||
| 754 | 756 | ||
| 755 | flush_icache_range(vectors, vectors + PAGE_SIZE); | 757 | flush_icache_range(vectors, vectors + PAGE_SIZE); | 
| 756 | modify_domain(DOMAIN_USER, DOMAIN_CLIENT); | 758 | modify_domain(DOMAIN_USER, DOMAIN_CLIENT); | 
