mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
use simpler REGPARM convention - make CPUTLBEntry size a power of two
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3935 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
0019ad5346
commit
d656469f44
4 changed files with 28 additions and 17 deletions
16
cpu-defs.h
16
cpu-defs.h
|
@ -102,6 +102,12 @@ typedef unsigned long ram_addr_t;
|
|||
#define CPU_TLB_BITS 8
|
||||
#define CPU_TLB_SIZE (1 << CPU_TLB_BITS)
|
||||
|
||||
#if TARGET_PHYS_ADDR_BITS == 32 && TARGET_LONG_BITS == 32
|
||||
#define CPU_TLB_ENTRY_BITS 4
|
||||
#else
|
||||
#define CPU_TLB_ENTRY_BITS 5
|
||||
#endif
|
||||
|
||||
typedef struct CPUTLBEntry {
|
||||
/* bit 31 to TARGET_PAGE_BITS : virtual address
|
||||
bit TARGET_PAGE_BITS-1..IO_MEM_SHIFT : if non zero, memory io
|
||||
|
@ -113,7 +119,17 @@ typedef struct CPUTLBEntry {
|
|||
target_ulong addr_write;
|
||||
target_ulong addr_code;
|
||||
/* addend to virtual address to get physical address */
|
||||
#if TARGET_PHYS_ADDR_BITS == 64
|
||||
/* on i386 Linux make sure it is aligned */
|
||||
target_phys_addr_t addend __attribute__((aligned(8)));
|
||||
#else
|
||||
target_phys_addr_t addend;
|
||||
#endif
|
||||
/* padding to get a power of two size */
|
||||
uint8_t dummy[(1 << CPU_TLB_ENTRY_BITS) -
|
||||
(sizeof(target_ulong) * 3 +
|
||||
((-sizeof(target_ulong) * 3) & (sizeof(target_phys_addr_t) - 1)) +
|
||||
sizeof(target_phys_addr_t))];
|
||||
} CPUTLBEntry;
|
||||
|
||||
#define CPU_COMMON \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue