diff options
| -rw-r--r-- | libc/sysdeps/linux/or1k/or1k_clone.S | 8 | ||||
| -rw-r--r-- | libc/sysdeps/linux/or1k/sysdep.h | 32 | 
2 files changed, 6 insertions, 34 deletions
diff --git a/libc/sysdeps/linux/or1k/or1k_clone.S b/libc/sysdeps/linux/or1k/or1k_clone.S index a2c16ac9e..2de873a02 100644 --- a/libc/sysdeps/linux/or1k/or1k_clone.S +++ b/libc/sysdeps/linux/or1k/or1k_clone.S @@ -71,7 +71,11 @@ L(oldpid):  	 l.ori r3, r11, 0  L(error): -	l.j SYSCALL_ERROR_NAME +#ifdef __PIC__ +	l.j plt(__syscall_error) +#else +	l.j __syscall_error +#endif  	 l.ori r3,r11,0 -PSEUDO_END (__or1k_clone) +END (__or1k_clone) diff --git a/libc/sysdeps/linux/or1k/sysdep.h b/libc/sysdeps/linux/or1k/sysdep.h index 4dba3f2a0..782981c55 100644 --- a/libc/sysdeps/linux/or1k/sysdep.h +++ b/libc/sysdeps/linux/or1k/sysdep.h @@ -43,38 +43,6 @@ License along with the GNU C Library; if not, see      l.sys 1; \      l.nop -#define PSEUDO(name, syscall_name, args) \ -  ENTRY (name); \ -  DO_CALL(syscall_name); \ -  /* if -4096 < ret < 0 holds, it's an error */ \ -  l.sfgeui r11, 0xf001; \ -  l.bf L(pseudo_end); \ -   l.nop - -#define PSEUDO_NOERRNO(name, syscall_name, args)  \ -  ENTRY (name);           \ -  DO_CALL(syscall_name) - -#define PSEUDO_END(name) \ -L(pseudo_end): \ -  l.j SYSCALL_ERROR_NAME; \ -  l.ori r3,r11,0; \ -  END (name) - -#define PSEUDO_END_NOERRNO(name) \ -  END (name) - -#ifndef PIC -/* For static code, on error jump to __syscall_error directly. */ -# define SYSCALL_ERROR_NAME __syscall_error -#elif NOT_IN_libc -/* Use the internal name for libc/libpthread shared objects. */ -# define SYSCALL_ERROR_NAME __GI___syscall_error -#else -/* Otherwise, on error do a full PLT jump. */ -# define SYSCALL_ERROR_NAME plt(__syscall_error) -#endif -  /* Make use of .size directive.  */  #define ASM_SIZE_DIRECTIVE(name) .size name,.-name;  | 
