Upstream: https://gitlab.com/qemu-project/qemu.git Upstream-Commit: d2e570cc0f97b936902a5b1b86b73c0f5998b475
45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "qemu.h"
|
|
#include "loader.h"
|
|
#include "target_elf.h"
|
|
|
|
|
|
abi_ulong get_elf_hwcap(CPUState *cs)
|
|
{
|
|
/*
|
|
* The Linux kernel computes ELF_HWCAP as ~amask(-1), which clears a bit
|
|
* for each supported ISA extension. env->amask stores exactly those bits
|
|
* set for the extensions supported by the emulated CPU model, matching
|
|
* the kernel's convention: bit set in AT_HWCAP ↔ extension present.
|
|
*/
|
|
return cpu_env(cs)->amask;
|
|
}
|
|
|
|
void elf_core_copy_regs(target_elf_gregset_t *r, const CPUAlphaState *env)
|
|
{
|
|
int i;
|
|
|
|
for (i = 0; i < 31; i++) {
|
|
r->regs[i] = tswap64(env->ir[i]);
|
|
}
|
|
r->pc = tswap64(env->pc);
|
|
r->unique = tswap64(env->unique);
|
|
}
|
|
|
|
const char *get_elf_cpu_model(uint32_t eflags)
|
|
{
|
|
return "ev67";
|
|
}
|
|
|
|
void elf_core_copy_fpregs(target_elf_fpregset_t *r, const CPUAlphaState *env)
|
|
{
|
|
int i;
|
|
|
|
for (i = 0; i < 31; i++) {
|
|
r->fpr[i] = tswap64(env->fir[i]);
|
|
}
|
|
r->fpcr = tswap64(cpu_alpha_load_fpcr((CPUAlphaState *)env));
|
|
}
|