mirror of
https://github.com/corda/corda.git
synced 2025-01-22 12:28:11 +00:00
fix PowerPC floating point argument and return value marshalling
This commit is contained in:
parent
2abc4e28a5
commit
665c4448bd
@ -136,9 +136,18 @@ LOCAL(call):
|
|||||||
|
|
||||||
LOCAL(float):
|
LOCAL(float):
|
||||||
cmpwi r14,FLOAT_TYPE
|
cmpwi r14,FLOAT_TYPE
|
||||||
beq LOCAL(copy)
|
bne LOCAL(double)
|
||||||
|
stfs f1,32(r19)
|
||||||
|
lwz r4,32(r19)
|
||||||
|
b LOCAL(exit)
|
||||||
|
LOCAL(double):
|
||||||
cmpwi r14,DOUBLE_TYPE
|
cmpwi r14,DOUBLE_TYPE
|
||||||
beq LOCAL(copy)
|
bne LOCAL(int64)
|
||||||
|
stfd f1,32(r19)
|
||||||
|
lwz r3,32(r19)
|
||||||
|
lwz r4,36(r19)
|
||||||
|
b LOCAL(exit)
|
||||||
|
LOCAL(int64):
|
||||||
cmpwi r14,INT64_TYPE
|
cmpwi r14,INT64_TYPE
|
||||||
beq LOCAL(exit)
|
beq LOCAL(exit)
|
||||||
mr r4,r3
|
mr r4,r3
|
||||||
|
@ -196,7 +196,7 @@ dynamicCall(void* function, uintptr_t* arguments, uint8_t* argumentTypes,
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
case DOUBLE_TYPE: {
|
case DOUBLE_TYPE: {
|
||||||
if (fprIndex + (8 / BytesPerWord) <= FprCount) {
|
if (fprIndex + 1 <= FprCount) {
|
||||||
memcpy(fprTable + fprIndex, arguments + ai, 8);
|
memcpy(fprTable + fprIndex, arguments + ai, 8);
|
||||||
++ fprIndex;
|
++ fprIndex;
|
||||||
SKIP(gprIndex, 8 / BytesPerWord);
|
SKIP(gprIndex, 8 / BytesPerWord);
|
||||||
|
Loading…
Reference in New Issue
Block a user