*/
ld r11,.SYS_CALL_TABLE@toc(2)
andi. r10,r10,_TIF_32BIT
- beq 15f
+ beq- 15f
ld r11,.SYS_CALL_TABLE32@toc(2)
clrldi r3,r3,32
clrldi r4,r4,32
15:
slwi r0,r0,3
ldx r10,r11,r0 /* Fetch system call handler [ptr] */
- mtctr r10
- bctrl /* Call handler */
+ mtlr r10
+ blrl /* Call handler */
syscall_exit:
#ifdef SHOW_SYSCALLS
stdcx. r0,0,r1 /* to clear the reservation */
andi. r6,r8,MSR_PR
ld r4,_LINK(r1)
- beq- 1f /* only restore r13 if */
+ beq 1f /* only restore r13 if */
ld r13,GPR13(r1) /* returning to usermode */
1: ld r2,GPR2(r1)
ld r1,GPR1(r1)
mtspr SRR0,r7
mtspr SRR1,r8
rfid
- b . /* prevent speculative execution */
syscall_enosys:
li r3,-ENOSYS
ld r1,GPR1(r1)
rfid
- b . /* prevent speculative execution */
+ b .
/* Note: this must change if we start using the TIF_NOTIFY_RESUME bit */
do_work:
mtspr SRR0,r5
mtspr SRR1,r6
rfid
- b . /* prevent speculative execution */
_STATIC(rtas_return_loc)
/* relocation is off at this point */
mtspr SRR0,r3
mtspr SRR1,r4
rfid
- b . /* prevent speculative execution */
_STATIC(rtas_restore_regs)
/* relocation is on at this point */