svn commit: r358545 - head/sys/arm64/arm64
Andrew Turner
andrew at FreeBSD.org
Mon Mar 2 14:06:51 UTC 2020
Author: andrew
Date: Mon Mar 2 14:06:50 2020
New Revision: 358545
URL: https://svnweb.freebsd.org/changeset/base/358545
Log:
Generate the offsets for struct arm64_bootparams and use it in locore.S
This removes one place with hard coded offsets in locore.S
Sponsored by: Innovate UK
Modified:
head/sys/arm64/arm64/genassym.c
head/sys/arm64/arm64/locore.S
Modified: head/sys/arm64/arm64/genassym.c
==============================================================================
--- head/sys/arm64/arm64/genassym.c Mon Mar 2 14:04:09 2020 (r358544)
+++ head/sys/arm64/arm64/genassym.c Mon Mar 2 14:06:50 2020 (r358545)
@@ -34,7 +34,17 @@ __FBSDID("$FreeBSD$");
#include <sys/proc.h>
#include <machine/frame.h>
+#include <machine/machdep.h>
#include <machine/pcb.h>
+
+/* Sizeof arm64_bootparams, rounded to keep stack alignment */
+ASSYM(BOOTPARAMS_SIZE, roundup2(sizeof(struct arm64_bootparams),
+ STACKALIGNBYTES + 1));
+ASSYM(BP_MODULEP, offsetof(struct arm64_bootparams, modulep));
+ASSYM(BP_KERN_L1PT, offsetof(struct arm64_bootparams, kern_l1pt));
+ASSYM(BP_KERN_DELTA, offsetof(struct arm64_bootparams, kern_delta));
+ASSYM(BP_KERN_STACK, offsetof(struct arm64_bootparams, kern_stack));
+ASSYM(BP_KERN_L0PT, offsetof(struct arm64_bootparams,kern_l0pt));
ASSYM(TDF_ASTPENDING, TDF_ASTPENDING);
ASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED);
Modified: head/sys/arm64/arm64/locore.S
==============================================================================
--- head/sys/arm64/arm64/locore.S Mon Mar 2 14:04:09 2020 (r358544)
+++ head/sys/arm64/arm64/locore.S Mon Mar 2 14:06:50 2020 (r358545)
@@ -153,18 +153,18 @@ virtdone:
sub x26, x26, x29
sub x24, x24, x29
- sub sp, sp, #(64 * 4)
+ sub sp, sp, #BOOTPARAMS_SIZE
mov x0, sp
/* Degate the delda so it is VA -> PA */
neg x29, x29
- str x1, [x0] /* modulep */
- str x26, [x0, 8] /* kern_l1pt */
- str x29, [x0, 16] /* kern_delta */
+ str x1, [x0, #BP_MODULEP]
+ str x26, [x0, #BP_KERN_L1PT]
+ str x29, [x0, #BP_KERN_DELTA]
adr x25, initstack
- str x25, [x0, 24] /* kern_stack */
- str x24, [x0, 32] /* kern_l0pt */
+ str x25, [x0, #BP_KERN_STACK]
+ str x24, [x0, #BP_KERN_L0PT]
/* trace back starts here */
mov fp, #0
More information about the svn-src-all
mailing list