Linux ARM : Add linux_locore.s that contains a translation in ARM assembler of linux_sigcode(), linux_rt_sigcode() and linux_vsyscall() functions
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
Comment Actions
Rework linux_sigcode() and linux_rt_sigcode() after andrew comments
- Use # instead of $ (but $ seems to works too)
- Bad computation of return address (that should be the instruction following branch one)
- Frame was taken from r0, but it should be take from sp
sys/arm/linux/linux_locore.s | ||
---|---|---|
20 | I don't think b [r1] does what you think it does. The b instruction will only branch to a label, not a register value. For armv6 you could use the blx instruction to branch to an address in a register. This will save lr so there would be no need calculate it. | |
43 | How is this called? r7 is callee saved so if it's called directly you will need to backup this value. FreeBSD uses the same calling convention. The libc part of it is in lib/libc/arm/SYS.h |
Comment Actions
Rework linux_locore.s. Now linux_sigcode() and linux_rt_sigcode() are simpler because all parameters all pre positioned in linux_sysvec.c while precedent implementation was just a translation.