mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-02 07:32:52 +00:00
PR9081: Split up LDM instruction with deprecated use of both LR and PC.
This is completely untested but pretty straightforward, so hopefully I got it right. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124694 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9a14a362d0
commit
692df93de4
@ -43,7 +43,7 @@ static TargetJITInfo::JITCompilerFn JITCompilerFunction;
|
|||||||
#define ASMPREFIX GETASMPREFIX(__USER_LABEL_PREFIX__)
|
#define ASMPREFIX GETASMPREFIX(__USER_LABEL_PREFIX__)
|
||||||
|
|
||||||
// CompilationCallback stub - We can't use a C function with inline assembly in
|
// CompilationCallback stub - We can't use a C function with inline assembly in
|
||||||
// it, because we the prolog/epilog inserted by GCC won't work for us (we need
|
// it, because the prolog/epilog inserted by GCC won't work for us. (We need
|
||||||
// to preserve more context and manipulate the stack directly). Instead,
|
// to preserve more context and manipulate the stack directly). Instead,
|
||||||
// write our own wrapper, which does things our way, so we have complete
|
// write our own wrapper, which does things our way, so we have complete
|
||||||
// control over register saving and restoring.
|
// control over register saving and restoring.
|
||||||
@ -99,7 +99,8 @@ extern "C" {
|
|||||||
// The above twiddling of the saved return addresses allows us to
|
// The above twiddling of the saved return addresses allows us to
|
||||||
// deallocate everything, including the LR the stub saved, all in one
|
// deallocate everything, including the LR the stub saved, all in one
|
||||||
// pop instruction.
|
// pop instruction.
|
||||||
"ldmia sp!, {r0, r1, r2, r3, lr, pc}\n"
|
"ldmia sp!, {r0, r1, r2, r3, lr}\n"
|
||||||
|
"ldr pc, [sp], #4\n"
|
||||||
);
|
);
|
||||||
#else // Not an ARM host
|
#else // Not an ARM host
|
||||||
void ARMCompilationCallback() {
|
void ARMCompilationCallback() {
|
||||||
|
Loading…
Reference in New Issue
Block a user