diff options
Diffstat (limited to 'libgloss/bfin/syscalls.c')
-rw-r--r-- | libgloss/bfin/syscalls.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/libgloss/bfin/syscalls.c b/libgloss/bfin/syscalls.c index b5bce2611..015e60454 100644 --- a/libgloss/bfin/syscalls.c +++ b/libgloss/bfin/syscalls.c @@ -32,10 +32,13 @@ register char *stack_ptr asm ("SP"); static inline int do_syscall (int reason, void *arg) { - register int r asm ("P0") = reason; - register void *a asm ("R0") = arg; - register int result asm ("R0"); - asm volatile ("excpt 0;" : "=r" (result) : "a" (r), "r" (a) : "memory", "CC"); + int result; + asm volatile ("[--sp] = %1; [--sp] = %2; \ + r1 = [sp++]; r0 = [sp++]; \ + raise 0; %0 = r0;" + : "=r" (result) + : "r" (reason), "r" (arg) + : "R0", "R1", "memory", "cc"); return result; } @@ -208,7 +211,7 @@ _times (struct tms * tp) } int -_isatty (int fd) +isatty (int fd) { return 1; } |