-
Notifications
You must be signed in to change notification settings - Fork 29
Open
Description
Help me understand this line?
Lines 99 to 100 in e18e09d
stack_top -= 32; | |
stack_top &= ~((unsigned long) 15); |
Lines 143 to 144 in e18e09d
stack_top -= 32; | |
stack_top &= ~((unsigned long long) 15); |
It's obvious why it aligns down by 16 bytes, but why subtract 32? It looks arbitrary; nothing is ever written there (?), so why are we wasting them here?
Also, check the ARM version:
Lines 24 to 28 in e18e09d
static const unsigned long co_swap_function[1024] = { | |
0xe8a16ff0, /* stmia r1!, {r4-r11,sp,lr} */ | |
0xe8b0aff0, /* ldmia r0!, {r4-r11,sp,pc} */ | |
0xe12fff1e, /* bx lr */ | |
}; |
Why is that final
bx lr
instruction there? The line before loads pc
, that should be unreachable code... is there a reason?Metadata
Metadata
Assignees
Labels
No labels