aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-12-13 16:14:30 -0200
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-12-20 16:55:26 -0200
commit8d2d239cb7db9df7b486d5f153c90865443e7abb (patch)
tree465984a5c7699deb3ef3503aef1c6c06eff3df06 /sysdeps/unix/sysv
parent24d1d8ec9e529ed66c49e17366fe5a889d483670 (diff)
downloadglibc-8d2d239cb7db9df7b486d5f153c90865443e7abb.zip
glibc-8d2d239cb7db9df7b486d5f153c90865443e7abb.tar.gz
glibc-8d2d239cb7db9df7b486d5f153c90865443e7abb.tar.bz2
Simplify tile assembly definitions
With tilepro removal, the uppercase instruction are not anymore required to be defines as potentially macros. This is a mechanical change done by the following shell script: --- INSNS="LD LD4U ST ST4 BNEZ BEQZ BEQZT BGTZ CMPEQI CMPEQ CMOVEQZ CMOVNEZ" FILES=$(find sysdeps/tile sysdeps/unix/sysv/linux/tile -iname *.S) for insn in $INSNS; do repl=$(echo $insn | tr '[:upper:]' '[:lower:]') sed -i 's/\b'$insn'\b/'$repl'/g' $FILES done --- Checked with a build for tilegx-linux-gnu and tilegx-linux-gnu-32 with and without the patch, there is no difference in generated binary with a dissassemble. * sysdeps/tile/__longjmp.S (__longjmp): Use lowercase instructions. * sysdeps/tile/__tls_get_addr.S (__tls_get_addr): Likewise. * sysdeps/tile/_mcount.S (__mcount): Likewise. * sysdeps/tile/crti.S (_init, _fini): Likewise. * sysdeps/tile/crtn.S: Likewise. * sysdeps/tile/dl-start.S (_start): Likewise. * sysdeps/tile/dl-trampoline.S: Likewise. * sysdeps/tile/setjmp.S (__sigsetjmp): Likewise. * sysdeps/tile/start.S (_start): Likewise. * sysdeps/unix/sysv/linux/tile/clone.S (_clone): Likewise. * sysdeps/unix/sysv/linux/tile/getcontext.S (__getcontext): Likewise. * sysdeps/unix/sysv/linux/tile/ioctl.S (__ioctl): Likewise. * sysdeps/unix/sysv/linux/tile/setcontext.S (__setcontext): Likewise. * sysdeps/unix/sysv/linux/tile/swapcontext.S (__swapcontext): Likewise. * sysdeps/unix/sysv/linux/tile/syscall.S (syscall): Likewise. * sysdeps/unix/sysv/linux/tile/vfork.S (__vfork): Likewise.
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r--sysdeps/unix/sysv/linux/tile/clone.S28
-rw-r--r--sysdeps/unix/sysv/linux/tile/getcontext.S58
-rw-r--r--sysdeps/unix/sysv/linux/tile/ioctl.S2
-rw-r--r--sysdeps/unix/sysv/linux/tile/setcontext.S98
-rw-r--r--sysdeps/unix/sysv/linux/tile/swapcontext.S22
-rw-r--r--sysdeps/unix/sysv/linux/tile/syscall.S2
-rw-r--r--sysdeps/unix/sysv/linux/tile/vfork.S2
7 files changed, 106 insertions, 106 deletions
diff --git a/sysdeps/unix/sysv/linux/tile/clone.S b/sysdeps/unix/sysv/linux/tile/clone.S
index 9610acd..2f624e6 100644
--- a/sysdeps/unix/sysv/linux/tile/clone.S
+++ b/sysdeps/unix/sysv/linux/tile/clone.S
@@ -44,32 +44,32 @@ ENTRY (__clone)
/* Create a stack frame so we can pass callee-saves to new task. */
{
move r10, sp
- ST sp, lr
+ st sp, lr
ADDI_PTR sp, sp, -FRAME_SIZE
}
cfi_offset (lr, 0)
cfi_def_cfa_offset (FRAME_SIZE)
ADDI_PTR r11, sp, FRAME_SP
{
- ST r11, r10
+ st r11, r10
ADDI_PTR r11, sp, FRAME_R30
}
{
- ST r11, r30
+ st r11, r30
ADDI_PTR r11, sp, FRAME_R31
}
cfi_offset (r30, FRAME_R30 - FRAME_SIZE)
{
- ST r11, r31
+ st r11, r31
ADDI_PTR r11, sp, FRAME_R32
}
cfi_offset (r31, FRAME_R31 - FRAME_SIZE)
- ST r11, r32
+ st r11, r32
cfi_offset (r32, FRAME_R32 - FRAME_SIZE)
/* sanity check arguments */
- BEQZ r0, .Linvalid
- BEQZ r1, .Linvalid
+ beqz r0, .Linvalid
+ beqz r1, .Linvalid
/* Make sure child stack is properly aligned, and set up the
top frame so that we can call out of it immediately in the
@@ -79,7 +79,7 @@ ENTRY (__clone)
ADDI_PTR r1, r1, -C_ABI_SAVE_AREA_SIZE
andi r1, r1, -C_ABI_SAVE_AREA_SIZE
ADDI_PTR r9, r1, REGSIZE /* sp of this frame on entry, i.e. zero */
- ST r9, zero
+ st r9, zero
/* We need to switch the argument convention around from
libc to kernel:
@@ -118,30 +118,30 @@ ENTRY (__clone)
moveli TREG_SYSCALL_NR_NAME, __NR_clone
}
swint1
- BEQZ r0, .Lthread_start /* If in child task. */
+ beqz r0, .Lthread_start /* If in child task. */
.Ldone:
/* Restore the callee-saved registers and return. */
ADDLI_PTR lr, sp, FRAME_SIZE
{
- LD lr, lr
+ ld lr, lr
ADDLI_PTR r30, sp, FRAME_R30
}
{
- LD r30, r30
+ ld r30, r30
ADDLI_PTR r31, sp, FRAME_R31
}
{
- LD r31, r31
+ ld r31, r31
ADDLI_PTR r32, sp, FRAME_R32
}
{
- LD r32, r32
+ ld r32, r32
ADDI_PTR sp, sp, FRAME_SIZE
}
cfi_def_cfa_offset (0)
- BNEZ r1, .Lerror
+ bnez r1, .Lerror
jrp lr
.Lerror:
diff --git a/sysdeps/unix/sysv/linux/tile/getcontext.S b/sysdeps/unix/sysv/linux/tile/getcontext.S
index e7561ea..1a346cf 100644
--- a/sysdeps/unix/sysv/linux/tile/getcontext.S
+++ b/sysdeps/unix/sysv/linux/tile/getcontext.S
@@ -33,38 +33,38 @@ ENTRY (__getcontext)
Save value "1" to uc_flags to later recognize getcontext(). */
{ movei r11, 1; ADDI_PTR r10, r0, UC_FLAGS_OFFSET }
{ ST_PTR r10, r11; addli r10, r0, UC_REG(30) }
- { ST r10, r30; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r31; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r32; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r33; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r34; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r35; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r36; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r37; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r38; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r39; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r40; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r41; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r42; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r43; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r44; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r45; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r46; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r47; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r48; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r49; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r50; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r51; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, r52; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, tp; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, sp; ADDI_PTR r10, r10, REGSIZE }
- { ST r10, lr; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r30; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r31; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r32; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r33; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r34; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r35; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r36; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r37; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r38; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r39; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r40; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r41; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r42; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r43; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r44; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r45; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r46; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r47; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r48; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r49; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r50; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r51; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r52; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, tp; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, sp; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, lr; ADDI_PTR r10, r10, REGSIZE }
lnk r11 /* Point PC at the "jrp lr" instruction. */
addli r11, r11, .Lreturn - .
- { ST r10, r11; ADDI_PTR r10, r10, REGSIZE }
+ { st r10, r11; ADDI_PTR r10, r10, REGSIZE }
mfspr r11, INTERRUPT_CRITICAL_SECTION
{
- ST r10, r11
+ st r10, r11
movei r1, 0
}
@@ -78,7 +78,7 @@ ENTRY (__getcontext)
moveli TREG_SYSCALL_NR_NAME, __NR_rt_sigprocmask
}
swint1
- BNEZ r1, .Lsyscall_error
+ bnez r1, .Lsyscall_error
.Lreturn:
{
diff --git a/sysdeps/unix/sysv/linux/tile/ioctl.S b/sysdeps/unix/sysv/linux/tile/ioctl.S
index 43f9563..9816c18 100644
--- a/sysdeps/unix/sysv/linux/tile/ioctl.S
+++ b/sysdeps/unix/sysv/linux/tile/ioctl.S
@@ -35,7 +35,7 @@ ENTRY (__ioctl)
moveli TREG_SYSCALL_NR_NAME, __NR_ioctl
}
swint1
- BNEZ r1, 0f
+ bnez r1, 0f
jrp lr
PSEUDO_END (__ioctl)
libc_hidden_def (__ioctl)
diff --git a/sysdeps/unix/sysv/linux/tile/setcontext.S b/sysdeps/unix/sysv/linux/tile/setcontext.S
index 8039e7e..2b60c3c 100644
--- a/sysdeps/unix/sysv/linux/tile/setcontext.S
+++ b/sysdeps/unix/sysv/linux/tile/setcontext.S
@@ -39,15 +39,15 @@ ENTRY (__setcontext)
#endif
LD_PTR r10, r0
{
- BEQZ r10, .Lsigreturn
+ beqz r10, .Lsigreturn
addi r10, r10, -1 /* Confirm that it has value "1". */
}
- BNEZ r10, .Lbadcontext
+ bnez r10, .Lbadcontext
/* Save lr and r0 briefly on the stack and set the signal mask:
rt_sigprocmask (SIG_SETMASK, &ucp->uc_sigmask, NULL, _NSIG / 8). */
{
- ST sp, lr
+ st sp, lr
ADDI_PTR r11, sp, -(2 * REGSIZE)
move r10, sp
}
@@ -55,11 +55,11 @@ ENTRY (__setcontext)
cfi_def_cfa_offset (3 * REGSIZE)
cfi_offset (lr, 0)
{
- ST r11, r10
+ st r11, r10
ADDI_PTR r10, sp, (2 * REGSIZE)
}
{
- ST r10, r0
+ st r10, r0
ADDLI_PTR r1, r0, UC_SIGMASK_OFFSET
}
cfi_offset (r0, -REGSIZE)
@@ -74,62 +74,62 @@ ENTRY (__setcontext)
swint1
ADDI_PTR r11, sp, 2 * REGSIZE /* Restore uc_context to r11. */
{
- LD r11, r11
+ ld r11, r11
ADDI_PTR sp, sp, 3 * REGSIZE
}
cfi_def_cfa_offset (0)
- LD lr, sp
+ ld lr, sp
{
ADDI_PTR r10, r11, UC_REG(0)
- BNEZ r1, .Lsyscall_error
+ bnez r1, .Lsyscall_error
}
/* Restore the argument registers; note they will be random
unless makecontext() has been called. */
- { LD r0, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r1, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r2, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r3, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r4, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r5, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r6, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r7, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r8, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r9, r10; ADDLI_PTR r10, r10, UC_REG(30) - UC_REG(9) }
+ { ld r0, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r1, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r2, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r3, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r4, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r5, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r6, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r7, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r8, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r9, r10; ADDLI_PTR r10, r10, UC_REG(30) - UC_REG(9) }
/* Restore the callee-saved GPRs. */
- { LD r30, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r31, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r32, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r33, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r34, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r35, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r36, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r37, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r38, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r39, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r40, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r41, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r42, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r43, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r44, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r45, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r46, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r47, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r48, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r49, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r50, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r51, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r52, r10; ADDI_PTR r10, r10, REGSIZE * 2 }
+ { ld r30, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r31, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r32, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r33, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r34, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r35, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r36, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r37, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r38, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r39, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r40, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r41, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r42, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r43, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r44, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r45, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r46, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r47, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r48, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r49, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r50, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r51, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r52, r10; ADDI_PTR r10, r10, REGSIZE * 2 }
/* Skip tp since it must not change for a given thread. */
- { LD sp, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD lr, r10; ADDI_PTR r10, r10, REGSIZE }
- { LD r11, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld sp, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld lr, r10; ADDI_PTR r10, r10, REGSIZE }
+ { ld r11, r10; ADDI_PTR r10, r10, REGSIZE }
/* Construct an iret context; we set ICS so we can validly load
EX_CONTEXT for iret without being interrupted halfway through. */
{
- LD r12, r10
+ ld r12, r10
movei r13, 1
}
{
@@ -157,15 +157,15 @@ ENTRY (__setcontext)
cfi_def_cfa_offset (C_ABI_SAVE_AREA_SIZE + SI_MAX_SIZE + UC_SIZE)
moveli r2, UC_SIZE / REGSIZE
0: {
- LD r10, r0
+ ld r10, r0
ADDI_PTR r0, r0, REGSIZE
}
{
- ST r1, r10
+ st r1, r10
ADDI_PTR r1, r1, REGSIZE
addi r2, r2, -1
}
- BNEZ r2, 0b
+ bnez r2, 0b
moveli TREG_SYSCALL_NR_NAME, __NR_rt_sigreturn
swint1
@@ -193,7 +193,7 @@ ENTRY (__startcontext)
cfi_undefined (lr)
FEEDBACK_ENTER(__startcontext)
jalr r31
- BEQZ r30, 1f
+ beqz r30, 1f
{
move r0, r30
jal __setcontext
diff --git a/sysdeps/unix/sysv/linux/tile/swapcontext.S b/sysdeps/unix/sysv/linux/tile/swapcontext.S
index 1778dfa..a955ca1 100644
--- a/sysdeps/unix/sysv/linux/tile/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/tile/swapcontext.S
@@ -27,7 +27,7 @@ ENTRY (__swapcontext)
FEEDBACK_ENTER(__swapcontext)
/* Set up a frame and save r0 and r1. */
{
- ST sp, lr
+ st sp, lr
ADDI_PTR r11, sp, -(3 * REGSIZE)
move r10, sp
}
@@ -35,43 +35,43 @@ ENTRY (__swapcontext)
cfi_def_cfa_offset (4 * REGSIZE)
cfi_offset (lr, 0)
{
- ST r11, r10
+ st r11, r10
ADDI_PTR r10, sp, (2 * REGSIZE)
}
{
- ST r10, r0
+ st r10, r0
ADDI_PTR r10, sp, (3 * REGSIZE)
}
- ST r10, r1
+ st r10, r1
/* Save the current context. */
jal __getcontext
/* Tear down the frame and restore r0, r1, and lr. */
{
- BNEZ r0, .Lerror
+ bnez r0, .Lerror
ADDI_PTR r1, sp, 3 * REGSIZE
}
{
- LD r1, r1
+ ld r1, r1
ADDI_PTR r0, sp, 2 * REGSIZE
}
{
- LD r0, r0
+ ld r0, r0
ADDI_PTR sp, sp, 4 * REGSIZE
}
cfi_def_cfa_offset (0)
{
- LD lr, sp
+ ld lr, sp
ADDLI_PTR r10, r0, UC_REG(54)
}
/* Update the stored sp and lr. */
{
- ST r10, sp
+ st r10, sp
ADDLI_PTR r10, r0, UC_REG(55)
}
- ST r10, lr
+ st r10, lr
/* Tail-call setcontext to finish up. */
{
@@ -82,7 +82,7 @@ ENTRY (__swapcontext)
.Lerror:
ADDI_PTR sp, sp, 4 * REGSIZE
cfi_def_cfa_offset (0)
- LD lr, sp
+ ld lr, sp
jrp lr
END (__swapcontext)
diff --git a/sysdeps/unix/sysv/linux/tile/syscall.S b/sysdeps/unix/sysv/linux/tile/syscall.S
index 627ab0e..3aa0a2b 100644
--- a/sysdeps/unix/sysv/linux/tile/syscall.S
+++ b/sysdeps/unix/sysv/linux/tile/syscall.S
@@ -27,6 +27,6 @@ ENTRY (syscall)
{ move r3, r4; move r4, r5 }
{ move r5, r6; move r6, r7 }
swint1
- BNEZ r1, 0f
+ bnez r1, 0f
jrp lr
PSEUDO_END (syscall)
diff --git a/sysdeps/unix/sysv/linux/tile/vfork.S b/sysdeps/unix/sysv/linux/tile/vfork.S
index 725bd4b..1f4885f 100644
--- a/sysdeps/unix/sysv/linux/tile/vfork.S
+++ b/sysdeps/unix/sysv/linux/tile/vfork.S
@@ -40,7 +40,7 @@ ENTRY (__vfork)
moveli TREG_SYSCALL_NR_NAME, __NR_clone
swint1
- BNEZ r1, 0f
+ bnez r1, 0f
jrp lr
PSEUDO_END (__vfork)
libc_hidden_def (__vfork)