mirror of https://github.com/xqemu/xqemu.git
more physical memory access functions
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1587 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
05f3fb8de3
commit
aab3309407
|
@ -735,9 +735,15 @@ static inline void cpu_physical_memory_write(target_phys_addr_t addr,
|
||||||
{
|
{
|
||||||
cpu_physical_memory_rw(addr, (uint8_t *)buf, len, 1);
|
cpu_physical_memory_rw(addr, (uint8_t *)buf, len, 1);
|
||||||
}
|
}
|
||||||
|
uint32_t ldub_phys(target_phys_addr_t addr);
|
||||||
|
uint32_t lduw_phys(target_phys_addr_t addr);
|
||||||
uint32_t ldl_phys(target_phys_addr_t addr);
|
uint32_t ldl_phys(target_phys_addr_t addr);
|
||||||
|
uint64_t ldq_phys(target_phys_addr_t addr);
|
||||||
void stl_phys_notdirty(target_phys_addr_t addr, uint32_t val);
|
void stl_phys_notdirty(target_phys_addr_t addr, uint32_t val);
|
||||||
|
void stb_phys(target_phys_addr_t addr, uint32_t val);
|
||||||
|
void stw_phys(target_phys_addr_t addr, uint32_t val);
|
||||||
void stl_phys(target_phys_addr_t addr, uint32_t val);
|
void stl_phys(target_phys_addr_t addr, uint32_t val);
|
||||||
|
void stq_phys(target_phys_addr_t addr, uint64_t val);
|
||||||
|
|
||||||
int cpu_memory_rw_debug(CPUState *env, target_ulong addr,
|
int cpu_memory_rw_debug(CPUState *env, target_ulong addr,
|
||||||
uint8_t *buf, int len, int is_write);
|
uint8_t *buf, int len, int is_write);
|
||||||
|
|
45
exec.c
45
exec.c
|
@ -2284,6 +2284,30 @@ uint32_t ldl_phys(target_phys_addr_t addr)
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* XXX: optimize */
|
||||||
|
uint32_t ldub_phys(target_phys_addr_t addr)
|
||||||
|
{
|
||||||
|
uint8_t val;
|
||||||
|
cpu_physical_memory_read(addr, &val, 1);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX: optimize */
|
||||||
|
uint32_t lduw_phys(target_phys_addr_t addr)
|
||||||
|
{
|
||||||
|
uint16_t val;
|
||||||
|
cpu_physical_memory_read(addr, (uint8_t *)&val, 2);
|
||||||
|
return tswap16(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX: optimize */
|
||||||
|
uint64_t ldq_phys(target_phys_addr_t addr)
|
||||||
|
{
|
||||||
|
uint64_t val;
|
||||||
|
cpu_physical_memory_read(addr, (uint8_t *)&val, 8);
|
||||||
|
return tswap64(val);
|
||||||
|
}
|
||||||
|
|
||||||
/* warning: addr must be aligned. The ram page is not masked as dirty
|
/* warning: addr must be aligned. The ram page is not masked as dirty
|
||||||
and the code inside is not invalidated. It is useful if the dirty
|
and the code inside is not invalidated. It is useful if the dirty
|
||||||
bits are used to track modified PTEs */
|
bits are used to track modified PTEs */
|
||||||
|
@ -2345,6 +2369,27 @@ void stl_phys(target_phys_addr_t addr, uint32_t val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* XXX: optimize */
|
||||||
|
void stb_phys(target_phys_addr_t addr, uint32_t val)
|
||||||
|
{
|
||||||
|
uint8_t v = val;
|
||||||
|
cpu_physical_memory_write(addr, &v, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX: optimize */
|
||||||
|
void stw_phys(target_phys_addr_t addr, uint32_t val)
|
||||||
|
{
|
||||||
|
uint16_t v = tswap16(val);
|
||||||
|
cpu_physical_memory_write(addr, (const uint8_t *)&v, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX: optimize */
|
||||||
|
void stq_phys(target_phys_addr_t addr, uint64_t val)
|
||||||
|
{
|
||||||
|
val = tswap64(val);
|
||||||
|
cpu_physical_memory_write(addr, (const uint8_t *)&val, 8);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* virtual memory access for debug */
|
/* virtual memory access for debug */
|
||||||
|
|
Loading…
Reference in New Issue