aboutsummaryrefslogtreecommitdiff
path: root/linux-user
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2025-08-28 11:55:27 +1000
committerRichard Henderson <richard.henderson@linaro.org>2025-08-30 07:04:04 +1000
commite803a48c1ac72ed47b6490e3d7cf6b0cc7372e85 (patch)
tree88ed5342351b01a77b33fc8eed0fe6517ef5949c /linux-user
parente5c31ef558da16fb9cbb9e3a3c7247b60fdfd05b (diff)
downloadqemu-e803a48c1ac72ed47b6490e3d7cf6b0cc7372e85.zip
qemu-e803a48c1ac72ed47b6490e3d7cf6b0cc7372e85.tar.gz
qemu-e803a48c1ac72ed47b6490e3d7cf6b0cc7372e85.tar.bz2
linux-user/microblaze: Expand target_elf_gregset_t
Make use of the fact that target_elf_gregset_t is a proper structure. Drop ELF_NREG, target_elf_greg_t, and tswapreg. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'linux-user')
-rw-r--r--linux-user/microblaze/elfload.c14
-rw-r--r--linux-user/microblaze/target_elf.h11
2 files changed, 12 insertions, 13 deletions
diff --git a/linux-user/microblaze/elfload.c b/linux-user/microblaze/elfload.c
index 89250db..7eb1b26 100644
--- a/linux-user/microblaze/elfload.c
+++ b/linux-user/microblaze/elfload.c
@@ -11,18 +11,14 @@ const char *get_elf_cpu_model(uint32_t eflags)
return "any";
}
-#define tswapreg(ptr) tswapal(ptr)
-
void elf_core_copy_regs(target_elf_gregset_t *r, const CPUMBState *env)
{
for (int i = 0; i < 32; i++) {
- r->regs[i] = tswapreg(env->regs[i]);
+ r->pt.r[i] = tswapal(env->regs[i]);
}
- r->regs[32] = tswapreg(env->pc);
- r->regs[33] = tswapreg(mb_cpu_read_msr(env));
- r->regs[34] = 0;
- r->regs[35] = tswapreg(env->ear);
- r->regs[36] = 0;
- r->regs[37] = tswapreg(env->esr);
+ r->pt.pc = tswapal(env->pc);
+ r->pt.msr = tswapal(mb_cpu_read_msr(env));
+ r->pt.ear = tswapal(env->ear);
+ r->pt.esr = tswapal(env->esr);
}
diff --git a/linux-user/microblaze/target_elf.h b/linux-user/microblaze/target_elf.h
index cc5cc04..56de77d 100644
--- a/linux-user/microblaze/target_elf.h
+++ b/linux-user/microblaze/target_elf.h
@@ -8,13 +8,16 @@
#ifndef MICROBLAZE_TARGET_ELF_H
#define MICROBLAZE_TARGET_ELF_H
-#define HAVE_ELF_CORE_DUMP 1
+#include "target_ptrace.h"
-typedef abi_ulong target_elf_greg_t;
+#define HAVE_ELF_CORE_DUMP 1
-#define ELF_NREG 38
+/*
+ * See linux kernel: arch/microblaze/include/asm/elf.h, where
+ * elf_gregset_t is mapped to struct pt_regs via sizeof.
+ */
typedef struct target_elf_gregset_t {
- target_elf_greg_t regs[ELF_NREG];
+ struct target_pt_regs pt;
} target_elf_gregset_t;
#endif