target/hppa: Remove TARGET_HPPA64
Allow both user-only and system mode to run pa2.0 cpus. Avoid creating a separate qemu-system-hppa64 binary; force the qemu-hppa binary to use TARGET_ABI32. Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
e207b4aa71
commit
08db178544
@ -1,4 +1,5 @@
|
|||||||
TARGET_ARCH=hppa
|
TARGET_ARCH=hppa
|
||||||
|
TARGET_ABI32=y
|
||||||
TARGET_SYSTBL_ABI=common,32
|
TARGET_SYSTBL_ABI=common,32
|
||||||
TARGET_SYSTBL=syscall.tbl
|
TARGET_SYSTBL=syscall.tbl
|
||||||
TARGET_BIG_ENDIAN=y
|
TARGET_BIG_ENDIAN=y
|
||||||
|
@ -8,26 +8,17 @@
|
|||||||
#ifndef HPPA_CPU_PARAM_H
|
#ifndef HPPA_CPU_PARAM_H
|
||||||
#define HPPA_CPU_PARAM_H
|
#define HPPA_CPU_PARAM_H
|
||||||
|
|
||||||
#ifdef TARGET_HPPA64
|
#define TARGET_LONG_BITS 64
|
||||||
# define TARGET_LONG_BITS 64
|
#define TARGET_REGISTER_BITS 64
|
||||||
# define TARGET_REGISTER_BITS 64
|
|
||||||
# define TARGET_VIRT_ADDR_SPACE_BITS 64
|
#if defined(CONFIG_USER_ONLY) && defined(TARGET_ABI32)
|
||||||
# define TARGET_PHYS_ADDR_SPACE_BITS 64
|
# define TARGET_PHYS_ADDR_SPACE_BITS 32
|
||||||
#elif defined(CONFIG_USER_ONLY)
|
|
||||||
# define TARGET_LONG_BITS 32
|
|
||||||
# define TARGET_REGISTER_BITS 32
|
|
||||||
# define TARGET_VIRT_ADDR_SPACE_BITS 32
|
# define TARGET_VIRT_ADDR_SPACE_BITS 32
|
||||||
# define TARGET_PHYS_ADDR_SPACE_BITS 32
|
|
||||||
#else
|
#else
|
||||||
/*
|
# define TARGET_PHYS_ADDR_SPACE_BITS 64
|
||||||
* In order to form the GVA from space:offset,
|
|
||||||
* we need a 64-bit virtual address space.
|
|
||||||
*/
|
|
||||||
# define TARGET_LONG_BITS 64
|
|
||||||
# define TARGET_REGISTER_BITS 32
|
|
||||||
# define TARGET_VIRT_ADDR_SPACE_BITS 64
|
# define TARGET_VIRT_ADDR_SPACE_BITS 64
|
||||||
# define TARGET_PHYS_ADDR_SPACE_BITS 32
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TARGET_PAGE_BITS 12
|
#define TARGET_PAGE_BITS 12
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -252,12 +252,10 @@ static const TypeInfo hppa_cpu_type_infos[] = {
|
|||||||
.class_size = sizeof(HPPACPUClass),
|
.class_size = sizeof(HPPACPUClass),
|
||||||
.class_init = hppa_cpu_class_init,
|
.class_init = hppa_cpu_class_init,
|
||||||
},
|
},
|
||||||
#ifdef TARGET_HPPA64
|
|
||||||
{
|
{
|
||||||
.name = TYPE_HPPA64_CPU,
|
.name = TYPE_HPPA64_CPU,
|
||||||
.parent = TYPE_HPPA_CPU,
|
.parent = TYPE_HPPA_CPU,
|
||||||
},
|
},
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_TYPES(hppa_cpu_type_infos)
|
DEFINE_TYPES(hppa_cpu_type_infos)
|
||||||
|
@ -120,11 +120,7 @@
|
|||||||
#define PSW_T 0x01000000
|
#define PSW_T 0x01000000
|
||||||
#define PSW_S 0x02000000
|
#define PSW_S 0x02000000
|
||||||
#define PSW_E 0x04000000
|
#define PSW_E 0x04000000
|
||||||
#ifdef TARGET_HPPA64
|
|
||||||
#define PSW_W 0x08000000 /* PA2.0 only */
|
#define PSW_W 0x08000000 /* PA2.0 only */
|
||||||
#else
|
|
||||||
#define PSW_W 0
|
|
||||||
#endif
|
|
||||||
#define PSW_Z 0x40000000 /* PA1.x only */
|
#define PSW_Z 0x40000000 /* PA1.x only */
|
||||||
#define PSW_Y 0x80000000 /* PA1.x only */
|
#define PSW_Y 0x80000000 /* PA1.x only */
|
||||||
|
|
||||||
@ -137,13 +133,8 @@
|
|||||||
#define PSW_SM_P PSW_P
|
#define PSW_SM_P PSW_P
|
||||||
#define PSW_SM_Q PSW_Q /* Enable Interrupt State Collection */
|
#define PSW_SM_Q PSW_Q /* Enable Interrupt State Collection */
|
||||||
#define PSW_SM_R PSW_R /* Enable Recover Counter Trap */
|
#define PSW_SM_R PSW_R /* Enable Recover Counter Trap */
|
||||||
#ifdef TARGET_HPPA64
|
|
||||||
#define PSW_SM_E 0x100
|
#define PSW_SM_E 0x100
|
||||||
#define PSW_SM_W 0x200 /* PA2.0 only : Enable Wide Mode */
|
#define PSW_SM_W 0x200 /* PA2.0 only : Enable Wide Mode */
|
||||||
#else
|
|
||||||
#define PSW_SM_E 0
|
|
||||||
#define PSW_SM_W 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define CR_RC 0
|
#define CR_RC 0
|
||||||
#define CR_PID1 8
|
#define CR_PID1 8
|
||||||
|
@ -2177,7 +2177,6 @@ static bool trans_mfctl(DisasContext *ctx, arg_mfctl *a)
|
|||||||
|
|
||||||
switch (ctl) {
|
switch (ctl) {
|
||||||
case CR_SAR:
|
case CR_SAR:
|
||||||
#ifdef TARGET_HPPA64
|
|
||||||
if (a->e == 0) {
|
if (a->e == 0) {
|
||||||
/* MFSAR without ,W masks low 5 bits. */
|
/* MFSAR without ,W masks low 5 bits. */
|
||||||
tmp = dest_gpr(ctx, rt);
|
tmp = dest_gpr(ctx, rt);
|
||||||
@ -2185,7 +2184,6 @@ static bool trans_mfctl(DisasContext *ctx, arg_mfctl *a)
|
|||||||
save_gpr(ctx, rt, tmp);
|
save_gpr(ctx, rt, tmp);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
save_gpr(ctx, rt, cpu_sar);
|
save_gpr(ctx, rt, cpu_sar);
|
||||||
goto done;
|
goto done;
|
||||||
case CR_IT: /* Interval Timer */
|
case CR_IT: /* Interval Timer */
|
||||||
|
Loading…
Reference in New Issue
Block a user