I was looking head-common.S
at the __mmap_switched:
.long init_thread_union + THREAD_START_SP @ sp //for stack pointer
THREAD_START_SP is defined THREAD_SIZE(8192) - 8 in "thread+info.h"
set stack size 8KB(8129) and minus 8byte.
why minus 8byte?
i suspect, i think DA(decrement after) right?
push/popmnemonics are implemented asstmfd sp!, ...andldmfd sp!, ...so it's decrement-before on pushes, increment-after on pops. But since words on ARM are only four bytes, that difference wouldn't explain why it keeps eight in reserve. My guess is an initialfp/lrpair, but would need to look up the eABI to validate that. - FrankH.