target-arm/arm-semi.c: Support widening APIs to 64 bits

The 64-bit A64 semihosting API has some pervasive changes from
the 32-bit version:
* all parameter blocks are arrays of 64-bit values, not 32-bit
* the semihosting call number is passed in W0
* the return value is a 64-bit value in X0

Implement the necessary handling for this widening.

Backports relevant parts of commit faacc041619581c566c21ed87aa1933420731282 from qemu
This commit is contained in:
Peter Maydell 2018-02-15 10:38:25 -05:00 committed by Lioncash
parent eabacd7daf
commit cdda3aec7f
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -512,7 +512,7 @@ typedef struct CPUARMState {
ARMCPU *cpu_arm_init(struct uc_struct *uc, const char *cpu_model);
int cpu_arm_exec(struct uc_struct *uc, CPUState *cpu);
uint32_t do_arm_semihosting(CPUARMState *env);
target_ulong do_arm_semihosting(CPUARMState *env);
void aarch64_sync_32_to_64(CPUARMState *env);
void aarch64_sync_64_to_32(CPUARMState *env);