[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/16] Uninline get_page_addr_code()
From: |
Avi Kivity |
Subject: |
[Qemu-devel] [PATCH 07/16] Uninline get_page_addr_code() |
Date: |
Mon, 2 Jan 2012 18:33:26 +0200 |
Its use of IO_MEM_ROM and friends will later cause #include loops; and it
is too large to merit inlining.
Signed-off-by: Avi Kivity <address@hidden>
---
exec-all.h | 26 +-------------------------
exec.c | 26 ++++++++++++++++++++++++++
2 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/exec-all.h b/exec-all.h
index 7db22fb..3d72952 100644
--- a/exec-all.h
+++ b/exec-all.h
@@ -339,31 +339,7 @@ static inline tb_page_addr_t get_page_addr_code(CPUState
*env1, target_ulong add
return addr;
}
#else
-/* NOTE: this function can trigger an exception */
-/* NOTE2: the returned address is not exactly the physical address: it
- is the offset relative to phys_ram_base */
-static inline tb_page_addr_t get_page_addr_code(CPUState *env1, target_ulong
addr)
-{
- int mmu_idx, page_index, pd;
- void *p;
-
- page_index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
- mmu_idx = cpu_mmu_index(env1);
- if (unlikely(env1->tlb_table[mmu_idx][page_index].addr_code !=
- (addr & TARGET_PAGE_MASK))) {
- ldub_code(addr);
- }
- pd = env1->tlb_table[mmu_idx][page_index].addr_code & ~TARGET_PAGE_MASK;
- if (pd != IO_MEM_RAM && pd != IO_MEM_ROM && !(pd & IO_MEM_ROMD)) {
-#if defined(TARGET_ALPHA) || defined(TARGET_MIPS) || defined(TARGET_SPARC)
- cpu_unassigned_access(env1, addr, 0, 1, 0, 4);
-#else
- cpu_abort(env1, "Trying to execute code outside RAM or ROM at 0x"
TARGET_FMT_lx "\n", addr);
-#endif
- }
- p = (void *)((uintptr_t)addr +
env1->tlb_table[mmu_idx][page_index].addend);
- return qemu_ram_addr_from_host_nofail(p);
-}
+tb_page_addr_t get_page_addr_code(CPUState *env1, target_ulong addr);
#endif
typedef void (CPUDebugExcpHandler)(CPUState *env);
diff --git a/exec.c b/exec.c
index 4fc981b..1c40f60 100644
--- a/exec.c
+++ b/exec.c
@@ -4499,6 +4499,32 @@ void dump_exec_info(FILE *f, fprintf_function
cpu_fprintf)
tcg_dump_info(f, cpu_fprintf);
}
+/* NOTE: this function can trigger an exception */
+/* NOTE2: the returned address is not exactly the physical address: it
+ is the offset relative to phys_ram_base */
+tb_page_addr_t get_page_addr_code(CPUState *env1, target_ulong addr)
+{
+ int mmu_idx, page_index, pd;
+ void *p;
+
+ page_index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
+ mmu_idx = cpu_mmu_index(env1);
+ if (unlikely(env1->tlb_table[mmu_idx][page_index].addr_code !=
+ (addr & TARGET_PAGE_MASK))) {
+ ldub_code(addr);
+ }
+ pd = env1->tlb_table[mmu_idx][page_index].addr_code & ~TARGET_PAGE_MASK;
+ if (pd != IO_MEM_RAM && pd != IO_MEM_ROM && !(pd & IO_MEM_ROMD)) {
+#if defined(TARGET_ALPHA) || defined(TARGET_MIPS) || defined(TARGET_SPARC)
+ cpu_unassigned_access(env1, addr, 0, 1, 0, 4);
+#else
+ cpu_abort(env1, "Trying to execute code outside RAM or ROM at 0x"
TARGET_FMT_lx "\n", addr);
+#endif
+ }
+ p = (void *)((uintptr_t)addr +
env1->tlb_table[mmu_idx][page_index].addend);
+ return qemu_ram_addr_from_host_nofail(p);
+}
+
#define MMUSUFFIX _cmmu
#undef GETPC
#define GETPC() NULL
--
1.7.7.1
- [Qemu-devel] [PATCH 09/16] Switch cpu_register_physical_memory_log() to use MemoryRegions, (continued)
- [Qemu-devel] [PATCH 09/16] Switch cpu_register_physical_memory_log() to use MemoryRegions, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 02/16] exec: make phys_page_find() return a temporary, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 14/16] Remove IO_MEM_SUBPAGE, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 05/16] Fix wrong region_offset when overlaying a page with another, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 08/16] Convert IO_MEM_{RAM, ROM, UNASSIGNED, NOTDIRTY} to MemoryRegions, Avi Kivity, 2012/01/02
- Re: [Qemu-devel] [PATCH 08/16] Convert IO_MEM_{RAM, ROM, UNASSIGNED, NOTDIRTY} to MemoryRegions, Richard Henderson, 2012/01/02
- Re: [Qemu-devel] [PATCH 08/16] Convert IO_MEM_{RAM, ROM, UNASSIGNED, NOTDIRTY} to MemoryRegions, Stefan Hajnoczi, 2012/01/06
- [Qemu-devel] [PATCH 10/16] Convert the subpage wrapper to be a MemoryRegion, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 12/16] Convert io_mem_watch to be a MemoryRegion, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 07/16] Uninline get_page_addr_code(),
Avi Kivity <=
- [Qemu-devel] [PATCH 06/16] Avoid range comparisons on io index types, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 04/16] memory: remove MemoryRegion::backend_registered, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 03/16] memory: move mmio access to functions, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 15/16] Drop IO_MEM_ROMD, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 16/16] Remove IO_MEM_SHIFT, Avi Kivity, 2012/01/02
- [Qemu-devel] [PATCH 13/16] Direct dispatch through MemoryRegion, Avi Kivity, 2012/01/02
- Re: [Qemu-devel] [PATCH 00/16] Kill old-style I/O dispatch, Richard Henderson, 2012/01/02