* Translate real address to absolute (= physical)
* address by taking care of the prefix mapping.
*/
-target_ulong mmu_real2abs(CPUS390XState *env, target_ulong raddr)
+hwaddr mmu_real2abs(CPUS390XState *env, hwaddr raddr)
{
if (raddr < 0x2000) {
return raddr + env->psa; /* Map the lowcore. */
return raddr;
}
-bool mmu_absolute_addr_valid(target_ulong addr, bool is_write)
+bool mmu_absolute_addr_valid(hwaddr addr, bool is_write)
{
return address_space_access_valid(&address_space_memory,
addr & TARGET_PAGE_MASK,
}
static int mmu_translate_asce(CPUS390XState *env, vaddr vaddr,
- uint64_t asc, uint64_t asce, target_ulong *raddr,
+ uint64_t asc, uint64_t asce, hwaddr *raddr,
int *flags)
{
const bool edat1 = (env->cregs[0] & CR0_EDAT) &&
return 0;
}
-static void mmu_handle_skey(target_ulong addr, int rw, int *flags)
+static void mmu_handle_skey(hwaddr addr, int rw, int *flags)
{
static S390SKeysClass *skeyclass;
static S390SKeysState *ss;
* @return 0 = success, != 0, the exception to raise
*/
int mmu_translate(CPUS390XState *env, vaddr vaddr, int rw, uint64_t asc,
- target_ulong *raddr, int *flags, uint64_t *tec)
+ hwaddr *raddr, int *flags, uint64_t *tec)
{
uint64_t asce;
int r;
* the MEMOP interface.
*/
static int translate_pages(S390CPU *cpu, vaddr addr, int nr_pages,
- target_ulong *pages, bool is_write, uint64_t *tec)
+ hwaddr *pages, bool is_write, uint64_t *tec)
{
uint64_t asc = cpu->env.psw.mask & PSW_MASK_ASC;
CPUS390XState *env = &cpu->env;
{
const MemTxAttrs attrs = MEMTXATTRS_UNSPECIFIED;
int currlen, nr_pages, i;
- target_ulong *pages;
+ hwaddr *pages;
uint64_t tec;
int ret;
* @param flags the PAGE_READ/WRITE/EXEC flags are stored to this pointer
* @return 0 = success, != 0, the exception to raise
*/
-int mmu_translate_real(CPUS390XState *env, target_ulong raddr, int rw,
- target_ulong *addr, int *flags, uint64_t *tec)
+int mmu_translate_real(CPUS390XState *env, hwaddr raddr, int rw,
+ hwaddr *addr, int *flags, uint64_t *tec)
{
const bool lowprot_enabled = env->cregs[0] & CR0_LOWPROT;
#ifndef S390X_INTERNAL_H
#define S390X_INTERNAL_H
+#include "exec/hwaddr.h"
#include "exec/vaddr.h"
#include "cpu.h"
#include "fpu/softfloat.h"
/* mem_helper.c */
-target_ulong mmu_real2abs(CPUS390XState *env, target_ulong raddr);
void probe_write_access(CPUS390XState *env, uint64_t addr, uint64_t len,
uintptr_t ra);
/* mmu_helper.c */
-bool mmu_absolute_addr_valid(target_ulong addr, bool is_write);
+hwaddr mmu_real2abs(CPUS390XState *env, hwaddr raddr);
+bool mmu_absolute_addr_valid(hwaddr addr, bool is_write);
/* Special access mode only valid for mmu_translate() */
#define MMU_S390_LRA -1
int mmu_translate(CPUS390XState *env, vaddr vaddr, int rw, uint64_t asc,
- target_ulong *raddr, int *flags, uint64_t *tec);
-int mmu_translate_real(CPUS390XState *env, target_ulong raddr, int rw,
- target_ulong *addr, int *flags, uint64_t *tec);
+ hwaddr *raddr, int *flags, uint64_t *tec);
+int mmu_translate_real(CPUS390XState *env, hwaddr raddr, int rw,
+ hwaddr *addr, int *flags, uint64_t *tec);
/* misc_helper.c */