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:
andrewfish 2010-12-15 02:39:00 +00:00
parent 32732a333a
commit 7d9524051e
1 changed files with 7 additions and 1 deletions

View File

@ -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