diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-03-12 09:34:10 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-03-12 09:34:10 -0700 |
commit | d3dd73fc9eaa81348f21c6ec33d531fa0397b7bf (patch) | |
tree | d4ed9f63debf16ff37be19aa8f722c575288a926 /arch | |
parent | 5627511205e474f960d37a6242749c6964993836 (diff) | |
parent | c2219eda547813c0c50dba90d9e989ae36cc3ab8 (diff) | |
download | lwn-d3dd73fc9eaa81348f21c6ec33d531fa0397b7bf.tar.gz lwn-d3dd73fc9eaa81348f21c6ec33d531fa0397b7bf.zip |
Merge tag 'microblaze-4.0-rc4' of git://git.monstr.eu/linux-2.6-microblaze
Pull arch/microblaze fixes from Michal Simek:
"Fix syscall error recovery.
Two patches - one is just preparation patch for the second which is
fixing the problem with syscalls"
* tag 'microblaze-4.0-rc4' of git://git.monstr.eu/linux-2.6-microblaze:
microblaze: Fix syscall error recovery for invalid syscall IDs
microblaze: Coding style cleanup
Diffstat (limited to 'arch')
-rw-r--r-- | arch/microblaze/kernel/entry.S | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S index 0536bc021cc6..ef548510b951 100644 --- a/arch/microblaze/kernel/entry.S +++ b/arch/microblaze/kernel/entry.S @@ -348,8 +348,9 @@ C_ENTRY(_user_exception): * The LP register should point to the location where the called function * should return. [note that MAKE_SYS_CALL uses label 1] */ /* See if the system call number is valid */ + blti r12, 5f addi r11, r12, -__NR_syscalls; - bgei r11,5f; + bgei r11, 5f; /* Figure out which function to use for this system call. */ /* Note Microblaze barrel shift is optional, so don't rely on it */ add r12, r12, r12; /* convert num -> ptr */ @@ -375,7 +376,7 @@ C_ENTRY(_user_exception): /* The syscall number is invalid, return an error. */ 5: - rtsd r15, 8; /* looks like a normal subroutine return */ + braid ret_from_trap addi r3, r0, -ENOSYS; /* Entry point used to return from a syscall/trap */ @@ -411,7 +412,7 @@ C_ENTRY(ret_from_trap): bri 1b /* Maybe handle a signal */ -5: +5: andi r11, r19, _TIF_SIGPENDING | _TIF_NOTIFY_RESUME; beqi r11, 4f; /* Signals to handle, handle them */ |