瀏覽代碼

Fix trapa value for _syscall6() to conform with new sh syscall ABI.

The old sh system call interface used 0x00 - 0x0f for the trapa value
(number of arguments), whereas the new ABI uses the 0x10 - 0x1f range.
For some reason we were using an off-by-1 trapa immediate which ended up
trashing r1 in the _syscall6() case, so we fix it up..
Paul Mundt 19 年之前
父節點
當前提交
244b9f3802
共有 2 個文件被更改,包括 2 次插入2 次删除
  1. 1 1
      libc/sysdeps/linux/sh/bits/syscalls.h
  2. 1 1
      libc/sysdeps/linux/sh/syscall.c

+ 1 - 1
libc/sysdeps/linux/sh/bits/syscalls.h

@@ -126,7 +126,7 @@ register long __sc6 __asm__ ("r6") = (long) arg3; \
 register long __sc7 __asm__ ("r7") = (long) arg4; \
 register long __sc0 __asm__ ("r0") = (long) arg5; \
 register long __sc1 __asm__ ("r1") = (long) arg6; \
-__asm__ __volatile__ ("trapa	#0x15" \
+__asm__ __volatile__ ("trapa	#0x16" \
 	: "=z" (__sc0) \
 	: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7), \
 	  "r" (__sc3), "r" (__sc1) \

+ 1 - 1
libc/sysdeps/linux/sh/syscall.c

@@ -16,7 +16,7 @@ register long __sc6 __asm__ ("r6") = (long) arg3;
 register long __sc7 __asm__ ("r7") = (long) arg4;
 register long __sc0 __asm__ ("r0") = (long) arg5;
 register long __sc1 __asm__ ("r1") = (long) arg6;
-__asm__ __volatile__ ("trapa	#0x15" \
+__asm__ __volatile__ ("trapa	#0x16" \
 	: "=z" (__sc0) \
 	: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7), \
 	  "r" (__sc3), "r" (__sc1) \