Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/powerpc/sigcode64.S
Show First 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | |||||
CNAME(sigcode64_elfv2): | CNAME(sigcode64_elfv2): | ||||
addi 1,1,-112 /* reserved space for callee */ | addi 1,1,-112 /* reserved space for callee */ | ||||
mflr 12 /* ELFv2 wants the address in r12 */ | mflr 12 /* ELFv2 wants the address in r12 */ | ||||
blrl | blrl | ||||
addi 3,1,112+SF_UC /* restore sp, and get &frame->sf_uc */ | addi 3,1,112+SF_UC /* restore sp, and get &frame->sf_uc */ | ||||
li 0,SYS_sigreturn | li 0,SYS_sigreturn | ||||
sc /* sigreturn(scp) */ | sc /* sigreturn(scp) */ | ||||
/* | |||||
* If we get back to here, it means sigreturn failed. | |||||
* As such, we are now stuck in the wrong context. | |||||
* Exit immediately without touching the stack. | |||||
*/ | |||||
li 0,SYS_exit | li 0,SYS_exit | ||||
sc /* exit(errno) */ | sc /* exit(errno) */ | ||||
nop /* align to doubleword */ | |||||
endsigcode64: | endsigcode64: | ||||
bdragon: Actually this comment is incorrect now that I remember what I was thinking at the time… | |||||
.data | .data | ||||
CNAME(szsigcode64): | CNAME(szsigcode64): | ||||
.long endsigcode64 - CNAME(sigcode64) | .long endsigcode64 - CNAME(sigcode64) | ||||
CNAME(szsigcode64_elfv2): | CNAME(szsigcode64_elfv2): | ||||
.long endsigcode64 - CNAME(sigcode64_elfv2) | .long endsigcode64 - CNAME(sigcode64_elfv2) | ||||
Actually this comment is incorrect now that I remember what I was thinking at the time regarding it being exec_copyout_strings() that cares.
When I was tracing through this, I was confused about how it worked. Apparently the code in exec_copyout_strings() is only used when a unified shared page is not used.
The rest of the comment should be accurate though.