[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 1/8] cputlb: add physical address to CPUTLBEntry
From: |
Emilio G. Cota |
Subject: |
[Qemu-devel] [RFC 1/8] cputlb: add physical address to CPUTLBEntry |
Date: |
Fri, 8 May 2015 17:02:07 -0400 |
Having the physical address in the TLB entry will allow us
to portably obtain the physical address of a memory access,
which will prove useful when implementing a scalable emulation
of atomic instructions.
Signed-off-by: Emilio G. Cota <address@hidden>
---
cputlb.c | 1 +
include/exec/cpu-defs.h | 11 ++++++-----
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/cputlb.c b/cputlb.c
index 7606548..2cd5912 100644
--- a/cputlb.c
+++ b/cputlb.c
@@ -330,6 +330,7 @@ void tlb_set_page_with_attrs(CPUState *cpu, target_ulong
vaddr,
} else {
te->addr_write = -1;
}
+ te->addr_phys = paddr;
}
/* Add a new TLB entry, but without specifying the memory
diff --git a/include/exec/cpu-defs.h b/include/exec/cpu-defs.h
index 3f56546..67aa0a0 100644
--- a/include/exec/cpu-defs.h
+++ b/include/exec/cpu-defs.h
@@ -75,10 +75,10 @@ typedef uint64_t target_ulong;
/* use a fully associative victim tlb of 8 entries */
#define CPU_VTLB_SIZE 8
-#if HOST_LONG_BITS == 32 && TARGET_LONG_BITS == 32
-#define CPU_TLB_ENTRY_BITS 4
-#else
+#if TARGET_LONG_BITS == 32
#define CPU_TLB_ENTRY_BITS 5
+#else
+#define CPU_TLB_ENTRY_BITS 6
#endif
typedef struct CPUTLBEntry {
@@ -91,13 +91,14 @@ typedef struct CPUTLBEntry {
target_ulong addr_read;
target_ulong addr_write;
target_ulong addr_code;
+ target_ulong addr_phys;
/* Addend to virtual address to get host address. IO accesses
use the corresponding iotlb value. */
uintptr_t addend;
/* 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(uintptr_t) - 1)) +
+ (sizeof(target_ulong) * 4 +
+ ((-sizeof(target_ulong) * 4) & (sizeof(uintptr_t) - 1)) +
sizeof(uintptr_t))];
} CPUTLBEntry;
--
1.8.3
- [Qemu-devel] [RFC 0/8] Helper-based Atomic Instruction Emulation (AIE), Emilio G. Cota, 2015/05/08
- [Qemu-devel] [RFC 1/8] cputlb: add physical address to CPUTLBEntry,
Emilio G. Cota <=
- [Qemu-devel] [RFC 3/8] tiny_set: add module to test for membership in a tiny set of pointers, Emilio G. Cota, 2015/05/08
- [Qemu-devel] [RFC 2/8] softmmu: add helpers to get ld/st physical addresses, Emilio G. Cota, 2015/05/08
- [Qemu-devel] [RFC 4/8] radix-tree: add generic lockless radix tree module, Emilio G. Cota, 2015/05/08
- [Qemu-devel] [RFC 5/8] aie: add module for Atomic Instruction Emulation, Emilio G. Cota, 2015/05/08
- [Qemu-devel] [RFC 6/8] aie: add target helpers, Emilio G. Cota, 2015/05/08
- [Qemu-devel] [RFC 7/8] target-arm: emulate atomic instructions using AIE, Emilio G. Cota, 2015/05/08
- [Qemu-devel] [RFC 8/8] target-i386: emulate atomic instructions using AIE, Emilio G. Cota, 2015/05/08