summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sh/brk.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/sh/brk.c')
-rw-r--r--sysdeps/unix/sysv/linux/sh/brk.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/sysdeps/unix/sysv/linux/sh/brk.c b/sysdeps/unix/sysv/linux/sh/brk.c
index 79c43b717c..5ce67df0cb 100644
--- a/sysdeps/unix/sysv/linux/sh/brk.c
+++ b/sysdeps/unix/sysv/linux/sh/brk.c
@@ -28,14 +28,12 @@ int
__brk (void *addr)
{
void *newbrk;
+ register long r3 asm ("%r3") = SYS_ify (brk);
+ register long r4 asm ("%r4") = (long)addr;
- asm ("mov %1, r4\n"
- "mov %2, r0\n"
- "trapa #0\n" /* do the system call */
- "mov r0, %0;" /* keep the return value */
- : "=r"(newbrk)
- : "r"(addr), "i" (SYS_ify (brk))
- : "r0");
+ asm volatile ("trapa #0x11"
+ : "=z"(newbrk)
+ : "r" (r3), "r" (r4));
__curbrk = newbrk;