mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-22 03:54:33 +02:00
8024344: PPC64 (part 112): C argument in register AND stack slot
On PPC, the first 13 floating point arguments to C calls are passed in floating point registers. Also, all but the first 8 arguments are passed on the stack. So there can be floating point arguments that are passed on the stack and in a register. We duplicate the regs datastructure in c_calling_convention() to represent this. Reviewed-by: kvn, cjplummer
This commit is contained in:
parent
2af861eed1
commit
081d2454fb
11 changed files with 28 additions and 13 deletions
|
@ -356,7 +356,15 @@ class SharedRuntime: AllStatic {
|
|||
const VMRegPair* regs) NOT_DEBUG_RETURN;
|
||||
|
||||
// Ditto except for calling C
|
||||
static int c_calling_convention(const BasicType *sig_bt, VMRegPair *regs, int total_args_passed);
|
||||
//
|
||||
// C argument in register AND stack slot.
|
||||
// Some architectures require that an argument must be passed in a register
|
||||
// AND in a stack slot. These architectures provide a second VMRegPair array
|
||||
// to be filled by the c_calling_convention method. On other architectures,
|
||||
// NULL is being passed as the second VMRegPair array, so arguments are either
|
||||
// passed in a register OR in a stack slot.
|
||||
static int c_calling_convention(const BasicType *sig_bt, VMRegPair *regs, VMRegPair *regs2,
|
||||
int total_args_passed);
|
||||
|
||||
// Generate I2C and C2I adapters. These adapters are simple argument marshalling
|
||||
// blobs. Unlike adapters in the tiger and earlier releases the code in these
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue