mirror of https://github.com/acidanthera/audk.git
Fix semihosting on gcc. We need to save lr as svc instruction will change it.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11171 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
32732a333a
commit
7d9524051e
|
@ -27,9 +27,15 @@ INTERWORK_FUNC(GccSemihostCall)
|
|||
|
||||
R0 - operation type
|
||||
R1 - block containing all other parametes
|
||||
|
||||
lr - must be saved as svc instruction will cause an svc exception and write
|
||||
the svc lr register. That happens to be the one we are using, so we must
|
||||
save it or we will not be able to return.
|
||||
*/
|
||||
ASM_PFX(GccSemihostCall):
|
||||
stmfd sp!, {lr}
|
||||
svc #0x123456
|
||||
ldmfd sp!, {lr}
|
||||
bx lr
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue