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:
Richard Henderson 2023-09-16 21:06:49 -07:00
parent e207b4aa71
commit 08db178544
5 changed files with 8 additions and 29 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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 */