Commit d3dd73fc authored by Linus Torvalds's avatar Linus Torvalds

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
parents 56275112 c2219eda
...@@ -348,8 +348,9 @@ C_ENTRY(_user_exception): ...@@ -348,8 +348,9 @@ C_ENTRY(_user_exception):
* The LP register should point to the location where the called function * The LP register should point to the location where the called function
* should return. [note that MAKE_SYS_CALL uses label 1] */ * should return. [note that MAKE_SYS_CALL uses label 1] */
/* See if the system call number is valid */ /* See if the system call number is valid */
blti r12, 5f
addi r11, r12, -__NR_syscalls; addi r11, r12, -__NR_syscalls;
bgei r11,5f; bgei r11, 5f;
/* Figure out which function to use for this system call. */ /* Figure out which function to use for this system call. */
/* Note Microblaze barrel shift is optional, so don't rely on it */ /* Note Microblaze barrel shift is optional, so don't rely on it */
add r12, r12, r12; /* convert num -> ptr */ add r12, r12, r12; /* convert num -> ptr */
...@@ -375,7 +376,7 @@ C_ENTRY(_user_exception): ...@@ -375,7 +376,7 @@ C_ENTRY(_user_exception):
/* The syscall number is invalid, return an error. */ /* The syscall number is invalid, return an error. */
5: 5:
rtsd r15, 8; /* looks like a normal subroutine return */ braid ret_from_trap
addi r3, r0, -ENOSYS; addi r3, r0, -ENOSYS;
/* Entry point used to return from a syscall/trap */ /* Entry point used to return from a syscall/trap */
...@@ -411,7 +412,7 @@ C_ENTRY(ret_from_trap): ...@@ -411,7 +412,7 @@ C_ENTRY(ret_from_trap):
bri 1b bri 1b
/* Maybe handle a signal */ /* Maybe handle a signal */
5: 5:
andi r11, r19, _TIF_SIGPENDING | _TIF_NOTIFY_RESUME; andi r11, r19, _TIF_SIGPENDING | _TIF_NOTIFY_RESUME;
beqi r11, 4f; /* Signals to handle, handle them */ beqi r11, 4f; /* Signals to handle, handle them */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment