-----BEGIN PGP SIGNATURE-----

iQIcBAABAgAGBQJazN+TAAoJEPMMOL0/L748seEP+wWI89EHiI8lpih0m7hv4jA3
 JFP1FcmxbbO5I1D4mXsV1YsJrl1Y1kCelqEX3I3xWS0ESI3IpC5HpCwsYPbYyh6v
 /YC+DpJL5xngf5mzgimyiBQr0s72/PQ2Plt85sPICG+wby4j3rWd9Gh7z4hNmp6G
 41kJ9YwDqpxsKXyW36Tw+56r0pUd9cUtfEa8IJD5IpmYpvauShTk9sav/CvF5L6g
 kEDjk9aVL+BFg1C9qQXh56ziCp/20QDJIlS8x2N0heISz1agcRqJm6MLk49tJtRO
 cppXbrI6hjJC0bdEKmb7WzoCmrG2p/HdbO7LMhSfhmXiAIaZkFb5Nr38uDyaT3Ii
 IMhLJwaEdKOUIpywdDg7jnrTyif0V3SY/ttRBn9DFu4sYjfBm9Nl+AS9eHcJeOj5
 Zw5hdwSeOFUFYB26PrNm75IYqzLkENpd5AdAcSm3L8pUHcDFel5D/2pVw3OgMeCK
 i5ZAxSjbL24wfjz0Iq2FJ72bq1YCDMzX1+6glUbJFVZsrNKHNtS/3dmufexbqGM4
 iVFv1VHrn4s4r7iyar01KaIy7CTOpnM+pl2Q7l9sxSCTck6AjHv4kcCIf4DH7jg1
 6RcGYG+jJ9fmvyvA6QaorxAYr0/BIiPhDC7dPT+wlf50Qd4ZSGe2Y1h9OKPD4U3K
 hfrwFPeGWOF02Cve9rgr
 =fuuT
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-2.12-pull-request' into staging

# gpg: Signature made Tue 10 Apr 2018 17:00:19 BST
# gpg:                using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>"
# gpg:                 aka "Laurent Vivier <laurent@vivier.eu>"
# gpg:                 aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>"
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* remotes/vivier2/tags/linux-user-for-2.12-pull-request:
  linux-user: implement HWCAP bits on MIPS
  linux-user: add microblaze/microblazeel magic numbers in qemu-binfmt-conf.sh
  linux-user: fix microblaze get_sp_from_cpustate()

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2018-04-11 11:21:38 +01:00
commit 675608cb84
3 changed files with 35 additions and 3 deletions

View File

@ -882,6 +882,30 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUMIPSState *e
#define USE_ELF_CORE_DUMP
#define ELF_EXEC_PAGESIZE 4096
/* See arch/mips/include/uapi/asm/hwcap.h. */
enum {
HWCAP_MIPS_R6 = (1 << 0),
HWCAP_MIPS_MSA = (1 << 1),
};
#define ELF_HWCAP get_elf_hwcap()
static uint32_t get_elf_hwcap(void)
{
MIPSCPU *cpu = MIPS_CPU(thread_cpu);
uint32_t hwcaps = 0;
#define GET_FEATURE(flag, hwcap) \
do { if (cpu->env.insn_flags & (flag)) { hwcaps |= hwcap; } } while (0)
GET_FEATURE(ISA_MIPS32R6 | ISA_MIPS64R6, HWCAP_MIPS_R6);
GET_FEATURE(ASE_MSA, HWCAP_MIPS_MSA);
#undef GET_FEATURE
return hwcaps;
}
#endif /* TARGET_MIPS */
#ifdef TARGET_MICROBLAZE

View File

@ -23,7 +23,7 @@ typedef struct target_sigaltstack {
static inline abi_ulong get_sp_from_cpustate(CPUMBState *state)
{
return state->regs[14];
return state->regs[1];
}

View File

@ -1,10 +1,10 @@
#!/bin/sh
# enable automatic i386/ARM/M68K/MIPS/SPARC/PPC/s390/HPPA/Xtensa
# enable automatic i386/ARM/M68K/MIPS/SPARC/PPC/s390/HPPA/Xtensa/microblaze
# program execution by the kernel
qemu_target_list="i386 i486 alpha arm armeb sparc32plus ppc ppc64 ppc64le m68k \
mips mipsel mipsn32 mipsn32el mips64 mips64el \
sh4 sh4eb s390x aarch64 aarch64_be hppa riscv32 riscv64 xtensa xtensaeb"
sh4 sh4eb s390x aarch64 aarch64_be hppa riscv32 riscv64 xtensa xtensaeb microblaze microblazeel"
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'
@ -116,6 +116,14 @@ xtensaeb_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\
xtensaeb_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'
xtensaeb_family=xtensaeb
microblaze_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xba\xab'
microblaze_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
microblaze_family=microblaze
microblazeel_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xab\xba'
microblazeel_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
microblazeel_family=microblazeel
qemu_get_family() {
cpu=${HOST_ARCH:-$(uname -m)}
case "$cpu" in