sync with OpenBSD -current

This commit is contained in:
purplerain 2024-08-26 19:12:03 +00:00
parent f6cff6bc9b
commit 84a7643638
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
38 changed files with 674 additions and 418 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: pmap.c,v 1.103 2024/05/28 15:16:45 claudio Exp $ */
/* $OpenBSD: pmap.c,v 1.104 2024/08/26 03:37:56 jsg Exp $ */
/*
* Copyright (c) 2008-2009,2014-2016 Dale Rahn <drahn@dalerahn.com>
*
@ -2237,34 +2237,35 @@ pmap_show_mapping(uint64_t va)
pted, vp3->l3[VP_IDX3(va)], VP_IDX3(va)*8);
}
__attribute__((target("+pauth")))
void
pmap_setpauthkeys(struct pmap *pm)
{
if (ID_AA64ISAR1_APA(cpu_id_aa64isar1) >= ID_AA64ISAR1_APA_BASE ||
ID_AA64ISAR1_API(cpu_id_aa64isar1) >= ID_AA64ISAR1_API_BASE) {
__asm volatile (".arch armv8.3-a; msr apiakeylo_el1, %0"
__asm volatile ("msr apiakeylo_el1, %0"
:: "r"(pm->pm_apiakey[0]));
__asm volatile (".arch armv8.3-a; msr apiakeyhi_el1, %0"
__asm volatile ("msr apiakeyhi_el1, %0"
:: "r"(pm->pm_apiakey[1]));
__asm volatile (".arch armv8.3-a; msr apdakeylo_el1, %0"
__asm volatile ("msr apdakeylo_el1, %0"
:: "r"(pm->pm_apdakey[0]));
__asm volatile (".arch armv8.3-a; msr apdakeyhi_el1, %0"
__asm volatile ("msr apdakeyhi_el1, %0"
:: "r"(pm->pm_apdakey[1]));
__asm volatile (".arch armv8.3-a; msr apibkeylo_el1, %0"
__asm volatile ("msr apibkeylo_el1, %0"
:: "r"(pm->pm_apibkey[0]));
__asm volatile (".arch armv8.3-a; msr apibkeyhi_el1, %0"
__asm volatile ("msr apibkeyhi_el1, %0"
:: "r"(pm->pm_apibkey[1]));
__asm volatile (".arch armv8.3-a; msr apdbkeylo_el1, %0"
__asm volatile ("msr apdbkeylo_el1, %0"
:: "r"(pm->pm_apdbkey[0]));
__asm volatile (".arch armv8.3-a; msr apdbkeyhi_el1, %0"
__asm volatile ("msr apdbkeyhi_el1, %0"
:: "r"(pm->pm_apdbkey[1]));
}
if (ID_AA64ISAR1_GPA(cpu_id_aa64isar1) >= ID_AA64ISAR1_GPA_IMPL ||
ID_AA64ISAR1_GPI(cpu_id_aa64isar1) >= ID_AA64ISAR1_GPI_IMPL) {
__asm volatile (".arch armv8.3-a; msr apgakeylo_el1, %0"
__asm volatile ("msr apgakeylo_el1, %0"
:: "r"(pm->pm_apgakey[0]));
__asm volatile (".arch armv8.3-a; msr apgakeyhi_el1, %0"
__asm volatile ("msr apgakeyhi_el1, %0"
:: "r"(pm->pm_apgakey[1]));
}
}