Microblaze patches for 4.0-rc4

- Fix syscall error recovery
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.10 (GNU/Linux)
 
 iEYEABECAAYFAlUBReoACgkQykllyylKDCE2JQCdGkwwVSH7hoPHSUUAIcstxR1U
 JJYAoIElkFV8azSi1y4Cf6spNL76mYNs
 =JekW
 -----END PGP SIGNATURE-----

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
This commit is contained in:
Linus Torvalds 2015-03-12 09:34:10 -07:00
Родитель 5627511205 c2219eda54
Коммит d3dd73fc9e
1 изменённых файлов: 4 добавлений и 3 удалений

Просмотреть файл

@ -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):
/* 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):
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 */