Page MenuHomeFreeBSD

D45063.diff
No OneTemporary

D45063.diff

diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S
--- a/sys/arm64/arm64/locore.S
+++ b/sys/arm64/arm64/locore.S
@@ -481,7 +481,14 @@
#endif
/* Get the number of blocks/pages to allocate, rounded down */
- lsr x10, x8, #(PTE_SHIFT)
+ lsr x14, x8, #(PTE_SHIFT)
+
+ ldr x25, =etext
+ ldr x8, =((1 << PTE_SHIFT) - 1)
+ add x25, x25, x8
+ mov x8, #(KERNBASE)
+ sub x25, x25, x8
+ lsr x25, x25, #(PTE_SHIFT)
/* Create the kernel space PTE table */
adrp x6, LL_PAGE_TABLE
@@ -492,6 +499,15 @@
mov x10, x25
bl BUILD_PTE_FUNC
+ /* Create the kernel space XN PTE table */
+ lsl x10, x25, #(PTE_SHIFT)
+ ldr x7, =(ATTR_S1_IDX(VM_MEMATTR_WRITE_BACK) | ATTR_S1_XN)
+ ldr x8, =(KERNBASE)
+ add x8, x8, x10
+ add x9, x28, x10
+ sub x10, x14, x25
+ bl BUILD_PTE_FUNC
+
#undef PTE_SHIFT
#undef LL_PAGE_TABLE
#undef BUILD_PTE_FUNC

File Metadata

Mime Type
text/plain
Expires
Thu, May 1, 1:01 PM (17 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17881674
Default Alt Text
D45063.diff (849 B)

Event Timeline