exec: Make stb_phys input an AddressSpace
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
This commit is contained in:
parent
5ce5944dc0
commit
db3be60deb
6
exec.c
6
exec.c
@ -1625,7 +1625,7 @@ static void watch_mem_write(void *opaque, hwaddr addr,
|
|||||||
check_watchpoint(addr & ~TARGET_PAGE_MASK, ~(size - 1), BP_MEM_WRITE);
|
check_watchpoint(addr & ~TARGET_PAGE_MASK, ~(size - 1), BP_MEM_WRITE);
|
||||||
switch (size) {
|
switch (size) {
|
||||||
case 1:
|
case 1:
|
||||||
stb_phys(addr, val);
|
stb_phys(&address_space_memory, addr, val);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
stw_phys(&address_space_memory, addr, val);
|
stw_phys(&address_space_memory, addr, val);
|
||||||
@ -2621,10 +2621,10 @@ void stl_be_phys(AddressSpace *as, hwaddr addr, uint32_t val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* XXX: optimize */
|
/* XXX: optimize */
|
||||||
void stb_phys(hwaddr addr, uint32_t val)
|
void stb_phys(AddressSpace *as, hwaddr addr, uint32_t val)
|
||||||
{
|
{
|
||||||
uint8_t v = val;
|
uint8_t v = val;
|
||||||
cpu_physical_memory_write(addr, &v, 1);
|
address_space_rw(as, addr, &v, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* warning: addr must be aligned */
|
/* warning: addr must be aligned */
|
||||||
|
@ -74,7 +74,7 @@ static inline void
|
|||||||
vmw_shmem_st8(hwaddr addr, uint8_t value)
|
vmw_shmem_st8(hwaddr addr, uint8_t value)
|
||||||
{
|
{
|
||||||
VMW_SHPRN("SHMEM store8: %" PRIx64 " (value 0x%X)", addr, value);
|
VMW_SHPRN("SHMEM store8: %" PRIx64 " (value 0x%X)", addr, value);
|
||||||
stb_phys(addr, value);
|
stb_phys(&address_space_memory, addr, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t
|
static inline uint32_t
|
||||||
|
@ -63,27 +63,27 @@ ram_addr_t ppc405_set_bootinfo (CPUPPCState *env, ppc4xx_bd_info_t *bd,
|
|||||||
stl_be_phys(cs->as, bdloc + 0x1C, bd->bi_bootflags);
|
stl_be_phys(cs->as, bdloc + 0x1C, bd->bi_bootflags);
|
||||||
stl_be_phys(cs->as, bdloc + 0x20, bd->bi_ipaddr);
|
stl_be_phys(cs->as, bdloc + 0x20, bd->bi_ipaddr);
|
||||||
for (i = 0; i < 6; i++) {
|
for (i = 0; i < 6; i++) {
|
||||||
stb_phys(bdloc + 0x24 + i, bd->bi_enetaddr[i]);
|
stb_phys(cs->as, bdloc + 0x24 + i, bd->bi_enetaddr[i]);
|
||||||
}
|
}
|
||||||
stw_be_phys(cs->as, bdloc + 0x2A, bd->bi_ethspeed);
|
stw_be_phys(cs->as, bdloc + 0x2A, bd->bi_ethspeed);
|
||||||
stl_be_phys(cs->as, bdloc + 0x2C, bd->bi_intfreq);
|
stl_be_phys(cs->as, bdloc + 0x2C, bd->bi_intfreq);
|
||||||
stl_be_phys(cs->as, bdloc + 0x30, bd->bi_busfreq);
|
stl_be_phys(cs->as, bdloc + 0x30, bd->bi_busfreq);
|
||||||
stl_be_phys(cs->as, bdloc + 0x34, bd->bi_baudrate);
|
stl_be_phys(cs->as, bdloc + 0x34, bd->bi_baudrate);
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
stb_phys(bdloc + 0x38 + i, bd->bi_s_version[i]);
|
stb_phys(cs->as, bdloc + 0x38 + i, bd->bi_s_version[i]);
|
||||||
}
|
}
|
||||||
for (i = 0; i < 32; i++) {
|
for (i = 0; i < 32; i++) {
|
||||||
stb_phys(bdloc + 0x3C + i, bd->bi_r_version[i]);
|
stb_phys(cs->as, bdloc + 0x3C + i, bd->bi_r_version[i]);
|
||||||
}
|
}
|
||||||
stl_be_phys(cs->as, bdloc + 0x5C, bd->bi_plb_busfreq);
|
stl_be_phys(cs->as, bdloc + 0x5C, bd->bi_plb_busfreq);
|
||||||
stl_be_phys(cs->as, bdloc + 0x60, bd->bi_pci_busfreq);
|
stl_be_phys(cs->as, bdloc + 0x60, bd->bi_pci_busfreq);
|
||||||
for (i = 0; i < 6; i++) {
|
for (i = 0; i < 6; i++) {
|
||||||
stb_phys(bdloc + 0x64 + i, bd->bi_pci_enetaddr[i]);
|
stb_phys(cs->as, bdloc + 0x64 + i, bd->bi_pci_enetaddr[i]);
|
||||||
}
|
}
|
||||||
n = 0x6A;
|
n = 0x6A;
|
||||||
if (flags & 0x00000001) {
|
if (flags & 0x00000001) {
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
stb_phys(bdloc + n++, bd->bi_pci_enetaddr2[i]);
|
stb_phys(cs->as, bdloc + n++, bd->bi_pci_enetaddr2[i]);
|
||||||
}
|
}
|
||||||
stl_be_phys(cs->as, bdloc + n, bd->bi_opbfreq);
|
stl_be_phys(cs->as, bdloc + n, bd->bi_opbfreq);
|
||||||
n += 4;
|
n += 4;
|
||||||
|
@ -370,7 +370,7 @@ static target_ulong register_vpa(CPUPPCState *env, target_ulong vpa)
|
|||||||
|
|
||||||
tmp = ldub_phys(cs->as, env->vpa_addr + VPA_SHARED_PROC_OFFSET);
|
tmp = ldub_phys(cs->as, env->vpa_addr + VPA_SHARED_PROC_OFFSET);
|
||||||
tmp |= VPA_SHARED_PROC_VAL;
|
tmp |= VPA_SHARED_PROC_VAL;
|
||||||
stb_phys(env->vpa_addr + VPA_SHARED_PROC_OFFSET, tmp);
|
stb_phys(cs->as, env->vpa_addr + VPA_SHARED_PROC_OFFSET, tmp);
|
||||||
|
|
||||||
return H_SUCCESS;
|
return H_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -567,7 +567,7 @@ static target_ulong h_logical_store(PowerPCCPU *cpu, sPAPREnvironment *spapr,
|
|||||||
|
|
||||||
switch (size) {
|
switch (size) {
|
||||||
case 1:
|
case 1:
|
||||||
stb_phys(addr, val);
|
stb_phys(cs->as, addr, val);
|
||||||
return H_SUCCESS;
|
return H_SUCCESS;
|
||||||
case 2:
|
case 2:
|
||||||
stw_phys(cs->as, addr, val);
|
stw_phys(cs->as, addr, val);
|
||||||
@ -632,7 +632,7 @@ static target_ulong h_logical_memop(PowerPCCPU *cpu, sPAPREnvironment *spapr,
|
|||||||
}
|
}
|
||||||
switch (esize) {
|
switch (esize) {
|
||||||
case 0:
|
case 0:
|
||||||
stb_phys(dst, tmp);
|
stb_phys(cs->as, dst, tmp);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
stw_phys(cs->as, dst, tmp);
|
stw_phys(cs->as, dst, tmp);
|
||||||
|
@ -359,15 +359,21 @@ void s390_virtio_device_sync(VirtIOS390Device *dev)
|
|||||||
virtio_reset(dev->vdev);
|
virtio_reset(dev->vdev);
|
||||||
|
|
||||||
/* Sync dev space */
|
/* Sync dev space */
|
||||||
stb_phys(dev->dev_offs + VIRTIO_DEV_OFFS_TYPE, dev->vdev->device_id);
|
stb_phys(&address_space_memory,
|
||||||
|
dev->dev_offs + VIRTIO_DEV_OFFS_TYPE, dev->vdev->device_id);
|
||||||
|
|
||||||
stb_phys(dev->dev_offs + VIRTIO_DEV_OFFS_NUM_VQ, s390_virtio_device_num_vq(dev));
|
stb_phys(&address_space_memory,
|
||||||
stb_phys(dev->dev_offs + VIRTIO_DEV_OFFS_FEATURE_LEN, dev->feat_len);
|
dev->dev_offs + VIRTIO_DEV_OFFS_NUM_VQ,
|
||||||
|
s390_virtio_device_num_vq(dev));
|
||||||
|
stb_phys(&address_space_memory,
|
||||||
|
dev->dev_offs + VIRTIO_DEV_OFFS_FEATURE_LEN, dev->feat_len);
|
||||||
|
|
||||||
stb_phys(dev->dev_offs + VIRTIO_DEV_OFFS_CONFIG_LEN, dev->vdev->config_len);
|
stb_phys(&address_space_memory,
|
||||||
|
dev->dev_offs + VIRTIO_DEV_OFFS_CONFIG_LEN, dev->vdev->config_len);
|
||||||
|
|
||||||
num_vq = s390_virtio_device_num_vq(dev);
|
num_vq = s390_virtio_device_num_vq(dev);
|
||||||
stb_phys(dev->dev_offs + VIRTIO_DEV_OFFS_NUM_VQ, num_vq);
|
stb_phys(&address_space_memory,
|
||||||
|
dev->dev_offs + VIRTIO_DEV_OFFS_NUM_VQ, num_vq);
|
||||||
|
|
||||||
/* Sync virtqueues */
|
/* Sync virtqueues */
|
||||||
for (i = 0; i < num_vq; i++) {
|
for (i = 0; i < num_vq; i++) {
|
||||||
|
@ -91,7 +91,7 @@ static int s390_virtio_hcall_reset(const uint64_t *args)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
virtio_reset(dev->vdev);
|
virtio_reset(dev->vdev);
|
||||||
stb_phys(dev->dev_offs + VIRTIO_DEV_OFFS_STATUS, 0);
|
stb_phys(&address_space_memory, dev->dev_offs + VIRTIO_DEV_OFFS_STATUS, 0);
|
||||||
s390_virtio_device_sync(dev);
|
s390_virtio_device_sync(dev);
|
||||||
s390_virtio_reset_idx(dev);
|
s390_virtio_reset_idx(dev);
|
||||||
|
|
||||||
|
@ -144,12 +144,14 @@ static bool megasas_is_jbod(MegasasState *s)
|
|||||||
|
|
||||||
static void megasas_frame_set_cmd_status(unsigned long frame, uint8_t v)
|
static void megasas_frame_set_cmd_status(unsigned long frame, uint8_t v)
|
||||||
{
|
{
|
||||||
stb_phys(frame + offsetof(struct mfi_frame_header, cmd_status), v);
|
stb_phys(&address_space_memory,
|
||||||
|
frame + offsetof(struct mfi_frame_header, cmd_status), v);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void megasas_frame_set_scsi_status(unsigned long frame, uint8_t v)
|
static void megasas_frame_set_scsi_status(unsigned long frame, uint8_t v)
|
||||||
{
|
{
|
||||||
stb_phys(frame + offsetof(struct mfi_frame_header, scsi_status), v);
|
stb_phys(&address_space_memory,
|
||||||
|
frame + offsetof(struct mfi_frame_header, scsi_status), v);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -90,7 +90,7 @@ uint32_t ldl_le_phys(AddressSpace *as, hwaddr addr);
|
|||||||
uint32_t ldl_be_phys(AddressSpace *as, hwaddr addr);
|
uint32_t ldl_be_phys(AddressSpace *as, hwaddr addr);
|
||||||
uint64_t ldq_le_phys(AddressSpace *as, hwaddr addr);
|
uint64_t ldq_le_phys(AddressSpace *as, hwaddr addr);
|
||||||
uint64_t ldq_be_phys(AddressSpace *as, hwaddr addr);
|
uint64_t ldq_be_phys(AddressSpace *as, hwaddr addr);
|
||||||
void stb_phys(hwaddr addr, uint32_t val);
|
void stb_phys(AddressSpace *as, hwaddr addr, uint32_t val);
|
||||||
void stw_le_phys(AddressSpace *as, hwaddr addr, uint32_t val);
|
void stw_le_phys(AddressSpace *as, hwaddr addr, uint32_t val);
|
||||||
void stw_be_phys(AddressSpace *as, hwaddr addr, uint32_t val);
|
void stw_be_phys(AddressSpace *as, hwaddr addr, uint32_t val);
|
||||||
void stl_le_phys(AddressSpace *as, hwaddr addr, uint32_t val);
|
void stl_le_phys(AddressSpace *as, hwaddr addr, uint32_t val);
|
||||||
|
@ -661,7 +661,7 @@ void helper_vmexit(CPUX86State *env, uint32_t exit_code, uint64_t exit_info_1)
|
|||||||
env->vm_vmcb + offsetof(struct vmcb, save.dr7), env->dr[7]);
|
env->vm_vmcb + offsetof(struct vmcb, save.dr7), env->dr[7]);
|
||||||
stq_phys(cs->as,
|
stq_phys(cs->as,
|
||||||
env->vm_vmcb + offsetof(struct vmcb, save.dr6), env->dr[6]);
|
env->vm_vmcb + offsetof(struct vmcb, save.dr6), env->dr[6]);
|
||||||
stb_phys(env->vm_vmcb + offsetof(struct vmcb, save.cpl),
|
stb_phys(cs->as, env->vm_vmcb + offsetof(struct vmcb, save.cpl),
|
||||||
env->hflags & HF_CPL_MASK);
|
env->hflags & HF_CPL_MASK);
|
||||||
|
|
||||||
/* Reload the host state from vm_hsave */
|
/* Reload the host state from vm_hsave */
|
||||||
|
@ -985,7 +985,7 @@ static uint32_t mvc_asc(CPUS390XState *env, int64_t l, uint64_t a1,
|
|||||||
mvc_asc(env, l - i, a1 + i, mode1, a2 + i, mode2);
|
mvc_asc(env, l - i, a1 + i, mode1, a2 + i, mode2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
stb_phys(dest + i, ldub_phys(cs->as, src + i));
|
stb_phys(cs->as, dest + i, ldub_phys(cs->as, src + i));
|
||||||
}
|
}
|
||||||
|
|
||||||
return cc;
|
return cc;
|
||||||
|
@ -1012,7 +1012,7 @@ void helper_st_asi(CPUSPARCState *env, target_ulong addr, uint64_t val, int asi,
|
|||||||
{
|
{
|
||||||
switch (size) {
|
switch (size) {
|
||||||
case 1:
|
case 1:
|
||||||
stb_phys(addr, val);
|
stb_phys(cs->as, addr, val);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
stw_phys(cs->as, addr, val);
|
stw_phys(cs->as, addr, val);
|
||||||
@ -1031,7 +1031,7 @@ void helper_st_asi(CPUSPARCState *env, target_ulong addr, uint64_t val, int asi,
|
|||||||
{
|
{
|
||||||
switch (size) {
|
switch (size) {
|
||||||
case 1:
|
case 1:
|
||||||
stb_phys((hwaddr)addr
|
stb_phys(cs->as, (hwaddr)addr
|
||||||
| ((hwaddr)(asi & 0xf) << 32), val);
|
| ((hwaddr)(asi & 0xf) << 32), val);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
@ -1811,7 +1811,7 @@ void helper_st_asi(CPUSPARCState *env, target_ulong addr, target_ulong val,
|
|||||||
{
|
{
|
||||||
switch (size) {
|
switch (size) {
|
||||||
case 1:
|
case 1:
|
||||||
stb_phys(addr, val);
|
stb_phys(cs->as, addr, val);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
stw_phys(cs->as, addr, val);
|
stw_phys(cs->as, addr, val);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user