Misc hppa fixes.
-----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJYmTDYAAoJEK0ScMxN0CebebAIAIfzcwhKRYfWVhRdN5tzjik9 IpVlFriOgNa+25JSYyeF56I56Ur3TMHEhVUPElN6o1Seio1wr2XefTiwbmIBdJXu oxcDkxZaP58oYFKsJeVrKunmNFVeXzlrWmtE14ViB1kcZHADZ1CRGQM2+OeRZ3K6 E7yIA4SwT/0E8GXSaCIbKO6kT5JUpZSgnRW2v3bs6Xau2dGhgeoFDHqIK0ThM+v9 AkvaYL/wJJeh/OIBQnLMG4ScPu/pqzosxaZEqY8J0dMt8WpsLh7mVZwNUK/9eIik w/0vf30K/WeXSKNy8ico52PRotjspMRvWJAwHZbppFHxLgVRTrUNivwqVsAsNYU= =7mkL -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/rth/tags/pull-hppa-20170206' into staging Misc hppa fixes. # gpg: Signature made Tue 07 Feb 2017 02:28:40 GMT # gpg: using RSA key 0xAD1270CC4DD0279B # gpg: Good signature from "Richard Henderson <rth7680@gmail.com>" # gpg: aka "Richard Henderson <rth@redhat.com>" # gpg: aka "Richard Henderson <rth@twiddle.net>" # Primary key fingerprint: 9CB1 8DDA F8E8 49AD 2AFC 16A4 AD12 70CC 4DD0 279B * remotes/rth/tags/pull-hppa-20170206: target/hppa: Fix gdb_write_register target/hppa: Tidy do_cbranch linux-user: define correct UTS machine name for hppa linux-user: fix "apt-get update" on linux-user hppa linux-user: add hppa magic numbers in qemu-binfmt-conf.sh Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
3c457da147
|
@ -19,7 +19,7 @@ struct target_pt_regs {
|
||||||
target_ulong ipsw;
|
target_ulong ipsw;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define UNAME_MACHINE "hppa"
|
#define UNAME_MACHINE "parisc"
|
||||||
#define UNAME_MINIMUM_RELEASE "2.6.32"
|
#define UNAME_MINIMUM_RELEASE "2.6.32"
|
||||||
#define TARGET_CLONE_BACKWARDS
|
#define TARGET_CLONE_BACKWARDS
|
||||||
#define TARGET_MINSIGSTKSZ 2048
|
#define TARGET_MINSIGSTKSZ 2048
|
||||||
|
|
|
@ -9343,7 +9343,6 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
||||||
#ifdef TARGET_NR_socket
|
#ifdef TARGET_NR_socket
|
||||||
case TARGET_NR_socket:
|
case TARGET_NR_socket:
|
||||||
ret = do_socket(arg1, arg2, arg3);
|
ret = do_socket(arg1, arg2, arg3);
|
||||||
fd_trans_unregister(ret);
|
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef TARGET_NR_socketpair
|
#ifdef TARGET_NR_socketpair
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# enable automatic i386/ARM/M68K/MIPS/SPARC/PPC/s390 program execution by the kernel
|
# enable automatic i386/ARM/M68K/MIPS/SPARC/PPC/s390/HPPA
|
||||||
|
# program execution by the kernel
|
||||||
|
|
||||||
qemu_target_list="i386 i486 alpha arm sparc32plus ppc ppc64 ppc64le m68k \
|
qemu_target_list="i386 i486 alpha arm sparc32plus ppc ppc64 ppc64le m68k \
|
||||||
mips mipsel mipsn32 mipsn32el mips64 mips64el \
|
mips mipsel mipsn32 mipsn32el mips64 mips64el \
|
||||||
sh4 sh4eb s390x aarch64"
|
sh4 sh4eb s390x aarch64 hppa"
|
||||||
|
|
||||||
i386_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00'
|
i386_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00'
|
||||||
i386_mask='\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
i386_mask='\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||||
|
@ -91,6 +92,10 @@ aarch64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x
|
||||||
aarch64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
aarch64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
|
||||||
aarch64_family=arm
|
aarch64_family=arm
|
||||||
|
|
||||||
|
hppa_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x0f'
|
||||||
|
hppa_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
|
||||||
|
hppa_family=hppa
|
||||||
|
|
||||||
qemu_get_family() {
|
qemu_get_family() {
|
||||||
cpu=${HOST_ARCH:-$(uname -m)}
|
cpu=${HOST_ARCH:-$(uname -m)}
|
||||||
case "$cpu" in
|
case "$cpu" in
|
||||||
|
|
|
@ -85,6 +85,7 @@ int hppa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
|
||||||
break;
|
break;
|
||||||
case 35:
|
case 35:
|
||||||
env->iaoq_b = val;
|
env->iaoq_b = val;
|
||||||
|
break;
|
||||||
case 59:
|
case 59:
|
||||||
env->cr26 = val;
|
env->cr26 = val;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1433,7 +1433,6 @@ static ExitStatus do_cbranch(DisasContext *ctx, target_long disp, bool is_n,
|
||||||
target_ulong dest = iaoq_dest(ctx, disp);
|
target_ulong dest = iaoq_dest(ctx, disp);
|
||||||
TCGLabel *taken = NULL;
|
TCGLabel *taken = NULL;
|
||||||
TCGCond c = cond->c;
|
TCGCond c = cond->c;
|
||||||
int which = 0;
|
|
||||||
bool n;
|
bool n;
|
||||||
|
|
||||||
assert(ctx->null_cond.c == TCG_COND_NEVER);
|
assert(ctx->null_cond.c == TCG_COND_NEVER);
|
||||||
|
@ -1455,14 +1454,14 @@ static ExitStatus do_cbranch(DisasContext *ctx, target_long disp, bool is_n,
|
||||||
n = is_n && disp < 0;
|
n = is_n && disp < 0;
|
||||||
if (n && use_nullify_skip(ctx)) {
|
if (n && use_nullify_skip(ctx)) {
|
||||||
nullify_set(ctx, 0);
|
nullify_set(ctx, 0);
|
||||||
gen_goto_tb(ctx, which++, ctx->iaoq_n, ctx->iaoq_n + 4);
|
gen_goto_tb(ctx, 0, ctx->iaoq_n, ctx->iaoq_n + 4);
|
||||||
} else {
|
} else {
|
||||||
if (!n && ctx->null_lab) {
|
if (!n && ctx->null_lab) {
|
||||||
gen_set_label(ctx->null_lab);
|
gen_set_label(ctx->null_lab);
|
||||||
ctx->null_lab = NULL;
|
ctx->null_lab = NULL;
|
||||||
}
|
}
|
||||||
nullify_set(ctx, n);
|
nullify_set(ctx, n);
|
||||||
gen_goto_tb(ctx, which++, ctx->iaoq_b, ctx->iaoq_n);
|
gen_goto_tb(ctx, 0, ctx->iaoq_b, ctx->iaoq_n);
|
||||||
}
|
}
|
||||||
|
|
||||||
gen_set_label(taken);
|
gen_set_label(taken);
|
||||||
|
@ -1471,23 +1470,17 @@ static ExitStatus do_cbranch(DisasContext *ctx, target_long disp, bool is_n,
|
||||||
n = is_n && disp >= 0;
|
n = is_n && disp >= 0;
|
||||||
if (n && use_nullify_skip(ctx)) {
|
if (n && use_nullify_skip(ctx)) {
|
||||||
nullify_set(ctx, 0);
|
nullify_set(ctx, 0);
|
||||||
gen_goto_tb(ctx, which++, dest, dest + 4);
|
gen_goto_tb(ctx, 1, dest, dest + 4);
|
||||||
} else {
|
} else {
|
||||||
nullify_set(ctx, n);
|
nullify_set(ctx, n);
|
||||||
gen_goto_tb(ctx, which++, ctx->iaoq_b, dest);
|
gen_goto_tb(ctx, 1, ctx->iaoq_b, dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not taken: the branch itself was nullified. */
|
/* Not taken: the branch itself was nullified. */
|
||||||
if (ctx->null_lab) {
|
if (ctx->null_lab) {
|
||||||
gen_set_label(ctx->null_lab);
|
gen_set_label(ctx->null_lab);
|
||||||
ctx->null_lab = NULL;
|
ctx->null_lab = NULL;
|
||||||
if (which < 2) {
|
return EXIT_IAQ_N_STALE;
|
||||||
nullify_set(ctx, 0);
|
|
||||||
gen_goto_tb(ctx, which, ctx->iaoq_b, ctx->iaoq_n);
|
|
||||||
return EXIT_GOTO_TB;
|
|
||||||
} else {
|
|
||||||
return EXIT_IAQ_N_STALE;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return EXIT_GOTO_TB;
|
return EXIT_GOTO_TB;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue