mirror of
https://github.com/corda/corda.git
synced 2025-02-10 12:51:37 +00:00
powerpc bugfixes
This commit is contained in:
parent
2608a2ee43
commit
49a2c1846d
@ -2019,6 +2019,7 @@ class MyAssembler: public Assembler {
|
||||
int returnAddressSurrogate,
|
||||
int framePointerSurrogate)
|
||||
{
|
||||
if (TailCalls) {
|
||||
if (offset) {
|
||||
Register tmp(0);
|
||||
Memory returnAddressSrc(StackRegister, 8 + (footprint * BytesPerWord));
|
||||
@ -2050,6 +2051,9 @@ class MyAssembler: public Assembler {
|
||||
} else {
|
||||
popFrame();
|
||||
}
|
||||
} else {
|
||||
abort(&c);
|
||||
}
|
||||
}
|
||||
|
||||
virtual void popFrameAndPopArgumentsAndReturn(unsigned argumentFootprint) {
|
||||
@ -2058,7 +2062,7 @@ class MyAssembler: public Assembler {
|
||||
assert(&c, argumentFootprint >= StackAlignmentInWords);
|
||||
assert(&c, (argumentFootprint % StackAlignmentInWords) == 0);
|
||||
|
||||
if (argumentFootprint > StackAlignmentInWords) {
|
||||
if (TailCalls and argumentFootprint > StackAlignmentInWords) {
|
||||
Register tmp(0);
|
||||
Memory stackSrc(StackRegister, 0);
|
||||
moveMR(&c, BytesPerWord, &stackSrc, BytesPerWord, &tmp);
|
||||
@ -2072,16 +2076,17 @@ class MyAssembler: public Assembler {
|
||||
return_(&c);
|
||||
}
|
||||
|
||||
virtual void popFrameAndUpdateStackAndReturn(unsigned stackOffset) {
|
||||
virtual void popFrameAndUpdateStackAndReturn(unsigned stackOffsetFromThread)
|
||||
{
|
||||
popFrame();
|
||||
|
||||
Register tmp1(0);
|
||||
Memory stackSrc(StackRegister, 0);
|
||||
moveMR(&c, BytesPerWord, &stackSrc, BytesPerWord, &tmp1);
|
||||
|
||||
Register tmp2(arch_->returnLow());
|
||||
Memory newStackSrc(ThreadRegister, stackOffset);
|
||||
moveMR(&c, BytesPerWord, &stackSrc, BytesPerWord, &tmp2);
|
||||
Register tmp2(5);
|
||||
Memory newStackSrc(ThreadRegister, stackOffsetFromThread);
|
||||
moveMR(&c, BytesPerWord, &newStackSrc, BytesPerWord, &tmp2);
|
||||
|
||||
Register stack(StackRegister);
|
||||
subR(&c, BytesPerWord, &tmp2, &stack, &tmp2);
|
||||
|
Loading…
x
Reference in New Issue
Block a user