aboutsummaryrefslogtreecommitdiff
path: root/linux-user
diff options
context:
space:
mode:
authorSandipan Das <sandipan@linux.ibm.com>2018-09-06 12:27:29 +0530
committerDavid Gibson <david@gibson.dropbear.id.au>2018-09-07 11:29:50 +1000
commitbe0c46d464c7c6b601adcd21fe9d2dd054a6a2cf (patch)
treec3d40faf2e3aa93b4ccf21206a8f200dc4962f82 /linux-user
parenta84f71793aab5d06b5798e78e1cee82cc3e4b3e2 (diff)
downloadqemu-be0c46d464c7c6b601adcd21fe9d2dd054a6a2cf.zip
qemu-be0c46d464c7c6b601adcd21fe9d2dd054a6a2cf.tar.gz
qemu-be0c46d464c7c6b601adcd21fe9d2dd054a6a2cf.tar.bz2
target-ppc: Extend HWCAP2 bits for ISA 3.0
This adds the HWCAP2 bit to detect if a linux user process is running on an ISA 3.0 compliant cpu like POWER9. This can be verified using a simple test program that prints the value in the auxiliary vector for AT_HWCAP2 as shown below. Before: $ qemu-ppc64le -cpu power8 test 0x8c000000 $ qemu-ppc64le -cpu power9 test 0x8c000000 After: $ qemu-ppc64le -cpu power8 test 0x8c000000 $ qemu-ppc64le -cpu power9 test 0x8c800000 Signed-off-by: Sandipan Das <sandipan@linux.ibm.com> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'linux-user')
-rw-r--r--linux-user/elfload.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index 8638612..e97c4cd 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -710,6 +710,7 @@ enum {
QEMU_PPC_FEATURE2_HAS_EBB = 0x10000000, /* Event Base Branching */
QEMU_PPC_FEATURE2_HAS_ISEL = 0x08000000, /* Integer Select */
QEMU_PPC_FEATURE2_HAS_TAR = 0x04000000, /* Target Address Register */
+ QEMU_PPC_FEATURE2_ARCH_3_00 = 0x00800000, /* ISA 3.00 */
};
#define ELF_HWCAP get_elf_hwcap()
@@ -764,6 +765,7 @@ static uint32_t get_elf_hwcap2(void)
GET_FEATURE2(PPC2_BCTAR_ISA207, QEMU_PPC_FEATURE2_HAS_TAR);
GET_FEATURE2((PPC2_BCTAR_ISA207 | PPC2_LSQ_ISA207 | PPC2_ALTIVEC_207 |
PPC2_ISA207S), QEMU_PPC_FEATURE2_ARCH_2_07);
+ GET_FEATURE2(PPC2_ISA300, QEMU_PPC_FEATURE2_ARCH_3_00);
#undef GET_FEATURE
#undef GET_FEATURE2