mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
softmmu templates: optionally pass CPUState to memory access functions
Optionally, make memory access helpers take a parameter for CPUState instead of relying on global env. On most targets, perform simple moves to reorder registers. On i386, switch from regparm(3) calling convention to standard stack-based version. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
6a18ae2d29
commit
e141ab52d2
16 changed files with 576 additions and 44 deletions
|
@ -9,6 +9,7 @@
|
|||
#ifndef SOFTMMU_DEFS_H
|
||||
#define SOFTMMU_DEFS_H
|
||||
|
||||
#ifndef CONFIG_TCG_PASS_AREG0
|
||||
uint8_t __ldb_mmu(target_ulong addr, int mmu_idx);
|
||||
void __stb_mmu(target_ulong addr, uint8_t val, int mmu_idx);
|
||||
uint16_t __ldw_mmu(target_ulong addr, int mmu_idx);
|
||||
|
@ -26,5 +27,32 @@ uint32_t __ldl_cmmu(target_ulong addr, int mmu_idx);
|
|||
void __stl_cmmu(target_ulong addr, uint32_t val, int mmu_idx);
|
||||
uint64_t __ldq_cmmu(target_ulong addr, int mmu_idx);
|
||||
void __stq_cmmu(target_ulong addr, uint64_t val, int mmu_idx);
|
||||
#else
|
||||
uint8_t helper_ldb_mmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||
void helper_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
|
||||
int mmu_idx);
|
||||
uint16_t helper_ldw_mmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||
void helper_stw_mmu(CPUArchState *env, target_ulong addr, uint16_t val,
|
||||
int mmu_idx);
|
||||
uint32_t helper_ldl_mmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||
void helper_stl_mmu(CPUArchState *env, target_ulong addr, uint32_t val,
|
||||
int mmu_idx);
|
||||
uint64_t helper_ldq_mmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||
void helper_stq_mmu(CPUArchState *env, target_ulong addr, uint64_t val,
|
||||
int mmu_idx);
|
||||
|
||||
uint8_t helper_ldb_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||
void helper_stb_cmmu(CPUArchState *env, target_ulong addr, uint8_t val,
|
||||
int mmu_idx);
|
||||
uint16_t helper_ldw_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||
void helper_stw_cmmu(CPUArchState *env, target_ulong addr, uint16_t val,
|
||||
int mmu_idx);
|
||||
uint32_t helper_ldl_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||
void helper_stl_cmmu(CPUArchState *env, target_ulong addr, uint32_t val,
|
||||
int mmu_idx);
|
||||
uint64_t helper_ldq_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
|
||||
void helper_stq_cmmu(CPUArchState *env, target_ulong addr, uint64_t val,
|
||||
int mmu_idx);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue