mirror of
https://github.com/corda/corda.git
synced 2025-01-07 13:38:47 +00:00
various ARM fixes
This commit is contained in:
parent
c537dcfd34
commit
559af69269
@ -1571,6 +1571,10 @@ writeBootImage2(Thread* t, FILE* bootimageOutput, FILE* codeOutput,
|
|||||||
if (true) {
|
if (true) {
|
||||||
{ BootImage targetImage;
|
{ BootImage targetImage;
|
||||||
|
|
||||||
|
#ifdef FIELD
|
||||||
|
# undef FIELD
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FIELD(name) targetImage.name = targetV4(image->name);
|
#define FIELD(name) targetImage.name = targetV4(image->name);
|
||||||
#include "bootimage-fields.cpp"
|
#include "bootimage-fields.cpp"
|
||||||
#undef FIELD
|
#undef FIELD
|
||||||
|
@ -8347,7 +8347,8 @@ class MyProcessor: public Processor {
|
|||||||
#define THUNK(s) thunkTable[s##Index] = voidPointer(s);
|
#define THUNK(s) thunkTable[s##Index] = voidPointer(s);
|
||||||
#include "thunks.cpp"
|
#include "thunks.cpp"
|
||||||
#undef THUNK
|
#undef THUNK
|
||||||
thunkTable[dummyIndex] = 0;
|
thunkTable[dummyIndex] = reinterpret_cast<void*>
|
||||||
|
(~static_cast<uintptr_t>(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual Thread*
|
virtual Thread*
|
||||||
@ -9336,8 +9337,6 @@ boot(MyThread* t, BootImage* image, uint8_t* code)
|
|||||||
|
|
||||||
setRoot(t, VirtualThunks, bootObject(heap, image->virtualThunks));
|
setRoot(t, VirtualThunks, bootObject(heap, image->virtualThunks));
|
||||||
|
|
||||||
syncInstructionCache(code, image->codeSize);
|
|
||||||
|
|
||||||
{ object map = makeClassMap(t, bootClassTable, image->bootClassCount, heap);
|
{ object map = makeClassMap(t, bootClassTable, image->bootClassCount, heap);
|
||||||
set(t, root(t, Machine::BootLoader), ClassLoaderMap, map);
|
set(t, root(t, Machine::BootLoader), ClassLoaderMap, map);
|
||||||
}
|
}
|
||||||
@ -9400,11 +9399,14 @@ compileCall(MyThread* t, Context* c, ThunkIndex index, bool call = true)
|
|||||||
// use Architecture::virtualCallTarget register here as a scratch
|
// use Architecture::virtualCallTarget register here as a scratch
|
||||||
// register; any register that isn't used to pass arguments would
|
// register; any register that isn't used to pass arguments would
|
||||||
// be acceptable:
|
// be acceptable:
|
||||||
Assembler::Register tableRegister(t->arch->virtualCallTarget());
|
Assembler::Register scratch(t->arch->virtualCallTarget());
|
||||||
a->apply(Move, TargetBytesPerWord, MemoryOperand, &table,
|
a->apply(Move, TargetBytesPerWord, MemoryOperand, &table,
|
||||||
TargetBytesPerWord, RegisterOperand, &tableRegister);
|
TargetBytesPerWord, RegisterOperand, &scratch);
|
||||||
Assembler::Memory proc(tableRegister.low, index * TargetBytesPerWord);
|
Assembler::Memory proc(scratch.low, index * TargetBytesPerWord);
|
||||||
a->apply(call ? Call : Jump, TargetBytesPerWord, MemoryOperand, &proc);
|
a->apply(Move, TargetBytesPerWord, MemoryOperand, &proc,
|
||||||
|
TargetBytesPerWord, RegisterOperand, &scratch);
|
||||||
|
a->apply
|
||||||
|
(call ? Call : Jump, TargetBytesPerWord, RegisterOperand, &scratch);
|
||||||
} else {
|
} else {
|
||||||
Assembler::Constant proc
|
Assembler::Constant proc
|
||||||
(new (c->zone.allocate(sizeof(ResolvedPromise)))
|
(new (c->zone.allocate(sizeof(ResolvedPromise)))
|
||||||
|
Loading…
Reference in New Issue
Block a user