mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
* target/arm: Fix non-TCG build failure by inlining pauth_ptr_mask()
* hw/arm: do not free machine->fdt in arm_load_dtb() * target/arm: Fix generated code for cpreg reads when HSTR is active * hw/ssi: Fix Linux driver init issue with xilinx_spi -----BEGIN PGP SIGNATURE----- iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmQq+CwZHHBldGVyLm1h eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3ux4EACRzqDTA3bbmuEDC4HKFEwv p4IrhG20iZWOQaieu7B+nrhXYakkcLxtGqG0cLFbb073B16SWRAxwli1sH+5mBNW l7GEF8WUelSPLZUlPmfl4YGH2ak5+kXI/G92+X7uE76Bv6wOJYZC5S1iNZN67fcd fQEfb9IcSmytCvsQLfLCvYzgpJKTuuikzkoCnT9O43qpPmUsBhSsBzyYPu0ZqsjV OgFMGNUc80rHc1kcLoLMMJBzI5S+iurnDKD+aNkMzCjtKPGkuIljbE6fPANXFxLb KbpVYjVIpPBAC33ZGO8NTkzqBuO7VNY0xWstfmepAsOdrorTLAOVMnC2NPsSZzOz kLd2wTT+64eMxt+flZETuU6HF8f6K94GRWPw8dC7Aj3XUvbSso+in863XD2OIKAr MCEm2Xi8ogb14uNx9Z4pUFIU6gKNUx8OGnWPLBngF4Kix4yP56nkbRAlg2ZII5bH HBny6+llC1NB94MjfSorTnNkk6J8Kd4Zhw8C9+dNbaDxCUBz3oCFwLoq6Cgx97F6 4J4An4PGF4evrJWBo9+9qOKtKapXlEmCSYs7oVavabxCCLI92PVoz96QH+6OK7+c h0PiqlfjPPSCnUcxsA9mr8zbp+P/ZxJbh0YI9ExP+zI03wE8gr4NMf7HYZQh0OLU Q+HARsmaAG3FONWbnHE97A== =oIZg -----END PGP SIGNATURE----- Merge tag 'pull-target-arm-20230403' of https://git.linaro.org/people/pmaydell/qemu-arm into staging * target/arm: Fix non-TCG build failure by inlining pauth_ptr_mask() * hw/arm: do not free machine->fdt in arm_load_dtb() * target/arm: Fix generated code for cpreg reads when HSTR is active * hw/ssi: Fix Linux driver init issue with xilinx_spi # -----BEGIN PGP SIGNATURE----- # # iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmQq+CwZHHBldGVyLm1h # eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3ux4EACRzqDTA3bbmuEDC4HKFEwv # p4IrhG20iZWOQaieu7B+nrhXYakkcLxtGqG0cLFbb073B16SWRAxwli1sH+5mBNW # l7GEF8WUelSPLZUlPmfl4YGH2ak5+kXI/G92+X7uE76Bv6wOJYZC5S1iNZN67fcd # fQEfb9IcSmytCvsQLfLCvYzgpJKTuuikzkoCnT9O43qpPmUsBhSsBzyYPu0ZqsjV # OgFMGNUc80rHc1kcLoLMMJBzI5S+iurnDKD+aNkMzCjtKPGkuIljbE6fPANXFxLb # KbpVYjVIpPBAC33ZGO8NTkzqBuO7VNY0xWstfmepAsOdrorTLAOVMnC2NPsSZzOz # kLd2wTT+64eMxt+flZETuU6HF8f6K94GRWPw8dC7Aj3XUvbSso+in863XD2OIKAr # MCEm2Xi8ogb14uNx9Z4pUFIU6gKNUx8OGnWPLBngF4Kix4yP56nkbRAlg2ZII5bH # HBny6+llC1NB94MjfSorTnNkk6J8Kd4Zhw8C9+dNbaDxCUBz3oCFwLoq6Cgx97F6 # 4J4An4PGF4evrJWBo9+9qOKtKapXlEmCSYs7oVavabxCCLI92PVoz96QH+6OK7+c # h0PiqlfjPPSCnUcxsA9mr8zbp+P/ZxJbh0YI9ExP+zI03wE8gr4NMf7HYZQh0OLU # Q+HARsmaAG3FONWbnHE97A== # =oIZg # -----END PGP SIGNATURE----- # gpg: Signature made Mon 03 Apr 2023 17:00:44 BST # gpg: using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE # gpg: issuer "peter.maydell@linaro.org" # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate] # gpg: aka "Peter Maydell <pmaydell@gmail.com>" [ultimate] # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate] # gpg: aka "Peter Maydell <peter@archaic.org.uk>" [ultimate] # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * tag 'pull-target-arm-20230403' of https://git.linaro.org/people/pmaydell/qemu-arm: hw/ssi: Fix Linux driver init issue with xilinx_spi target/arm: Fix generated code for cpreg reads when HSTR is active hw/arm: do not free machine->fdt in arm_load_dtb() target/arm: Fix non-TCG build failure by inlining pauth_ptr_mask() Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
51a6dc9d39
6 changed files with 27 additions and 25 deletions
|
@ -689,7 +689,10 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
|
|||
qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds,
|
||||
rom_ptr_for_as(as, addr, size));
|
||||
|
||||
g_free(fdt);
|
||||
if (fdt != ms->fdt) {
|
||||
g_free(ms->fdt);
|
||||
ms->fdt = fdt;
|
||||
}
|
||||
|
||||
return size;
|
||||
|
||||
|
|
|
@ -156,6 +156,7 @@ static void xlx_spi_do_reset(XilinxSPI *s)
|
|||
txfifo_reset(s);
|
||||
|
||||
s->regs[R_SPISSR] = ~0;
|
||||
s->regs[R_SPICR] = R_SPICR_MTI;
|
||||
xlx_spi_update_irq(s);
|
||||
xlx_spi_update_cs(s);
|
||||
}
|
||||
|
|
|
@ -230,8 +230,11 @@ int aarch64_gdb_get_pauth_reg(CPUARMState *env, GByteArray *buf, int reg)
|
|||
{
|
||||
bool is_data = !(reg & 1);
|
||||
bool is_high = reg & 2;
|
||||
uint64_t mask = pauth_ptr_mask(env, -is_high, is_data);
|
||||
return gdb_get_reg64(buf, mask);
|
||||
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
|
||||
ARMVAParameters param;
|
||||
|
||||
param = aa64_va_parameters(env, -is_high, mmu_idx, is_data);
|
||||
return gdb_get_reg64(buf, pauth_ptr_mask(param));
|
||||
}
|
||||
default:
|
||||
return 0;
|
||||
|
|
|
@ -1391,13 +1391,18 @@ bool arm_generate_debug_exceptions(CPUARMState *env);
|
|||
|
||||
/**
|
||||
* pauth_ptr_mask:
|
||||
* @env: cpu context
|
||||
* @ptr: selects between TTBR0 and TTBR1
|
||||
* @data: selects between TBI and TBID
|
||||
* @param: parameters defining the MMU setup
|
||||
*
|
||||
* Return a mask of the bits of @ptr that contain the authentication code.
|
||||
* Return a mask of the address bits that contain the authentication code,
|
||||
* given the MMU config defined by @param.
|
||||
*/
|
||||
uint64_t pauth_ptr_mask(CPUARMState *env, uint64_t ptr, bool data);
|
||||
static inline uint64_t pauth_ptr_mask(ARMVAParameters param)
|
||||
{
|
||||
int bot_pac_bit = 64 - param.tsz;
|
||||
int top_pac_bit = 64 - 8 * param.tbi;
|
||||
|
||||
return MAKE_64BIT_MASK(bot_pac_bit, top_pac_bit - bot_pac_bit);
|
||||
}
|
||||
|
||||
/* Add the cpreg definitions for debug related system registers */
|
||||
void define_debug_regs(ARMCPU *cpu);
|
||||
|
|
|
@ -339,17 +339,9 @@ static uint64_t pauth_addpac(CPUARMState *env, uint64_t ptr, uint64_t modifier,
|
|||
return pac | ext | ptr;
|
||||
}
|
||||
|
||||
static uint64_t pauth_ptr_mask_internal(ARMVAParameters param)
|
||||
{
|
||||
int bot_pac_bit = 64 - param.tsz;
|
||||
int top_pac_bit = 64 - 8 * param.tbi;
|
||||
|
||||
return MAKE_64BIT_MASK(bot_pac_bit, top_pac_bit - bot_pac_bit);
|
||||
}
|
||||
|
||||
static uint64_t pauth_original_ptr(uint64_t ptr, ARMVAParameters param)
|
||||
{
|
||||
uint64_t mask = pauth_ptr_mask_internal(param);
|
||||
uint64_t mask = pauth_ptr_mask(param);
|
||||
|
||||
/* Note that bit 55 is used whether or not the regime has 2 ranges. */
|
||||
if (extract64(ptr, 55, 1)) {
|
||||
|
@ -359,14 +351,6 @@ static uint64_t pauth_original_ptr(uint64_t ptr, ARMVAParameters param)
|
|||
}
|
||||
}
|
||||
|
||||
uint64_t pauth_ptr_mask(CPUARMState *env, uint64_t ptr, bool data)
|
||||
{
|
||||
ARMMMUIdx mmu_idx = arm_stage1_mmu_idx(env);
|
||||
ARMVAParameters param = aa64_va_parameters(env, ptr, mmu_idx, data);
|
||||
|
||||
return pauth_ptr_mask_internal(param);
|
||||
}
|
||||
|
||||
static uint64_t pauth_auth(CPUARMState *env, uint64_t ptr, uint64_t modifier,
|
||||
ARMPACKey *key, bool data, int keynumber)
|
||||
{
|
||||
|
|
|
@ -4623,6 +4623,12 @@ static void do_coproc_insn(DisasContext *s, int cpnum, int is64,
|
|||
tcg_gen_brcondi_i32(TCG_COND_EQ, t, 0, over.label);
|
||||
|
||||
gen_exception_insn(s, 0, EXCP_UDEF, syndrome);
|
||||
/*
|
||||
* gen_exception_insn() will set is_jmp to DISAS_NORETURN,
|
||||
* but since we're conditionally branching over it, we want
|
||||
* to assume continue-to-next-instruction.
|
||||
*/
|
||||
s->base.is_jmp = DISAS_NEXT;
|
||||
set_disas_label(s, over);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue