]> git.lizzy.rs Git - plan9front.git/commitdiff
bcm: try ATAGS/DTB pointer from R2 on entry
authorcinap_lenrek <cinap_lenrek@felloff.net>
Sun, 25 Apr 2021 15:36:11 +0000 (17:36 +0200)
committercinap_lenrek <cinap_lenrek@felloff.net>
Sun, 25 Apr 2021 15:36:11 +0000 (17:36 +0200)
sys/src/9/bcm/armv6.s
sys/src/9/bcm/armv7.s
sys/src/9/bcm/bootargs.c
sys/src/9/bcm/l.s
sys/src/9/bcm/main.c
sys/src/9/bcm/rebootcode.s

index 3eae17b83cf8777b1975b69f2a7a31eff549646f..771949e28f160888ceb4aae58ff94e5f8df6d37d 100644 (file)
@@ -76,6 +76,9 @@ TEXT _startpg(SB), 1, $-4
        MOVW    $1, R1
        MCR     CpSC, 0, R1, C(CpSPM), C(CpSPMperf), CpSPMctl
 
+       /* first arg to main is saved R2 */
+       MOVW    R10, R0
+
        /*
         * call main and loop forever if it returns
         */
index 4f0bd2b5aee6f3aa0dbe6a0b290aef87bcbb142f..4b448b6ef9b01f1b8fdbe747fa4b9b135345d381 100644 (file)
@@ -126,6 +126,9 @@ TEXT _startpg(SB), 1, $-4
        MOVW    $1, R1
        MCR     CpSC, 0, R1, C(CpCLD), C(CpCLDena), CpCLDenapmnc
 
+       /* first arg to main is saved R2 */
+       MOVW    R10, R0
+
        /*
         * call main and loop forever if it returns
         */
index b0feae75e9cce9ce228aaca62744bd76b645e562..445e0baefeab4107e5561655d43de420e782ead0 100644 (file)
@@ -265,7 +265,7 @@ bootargsinit(uintptr pa)
        uintptr len;
 
        /*
-        * kernel gets DTB/ATAGS pointer in R0 on entry
+        * kernel gets DTB/ATAGS pointer on entry
         */
        if(pa != 0 && (len = cankaddr(pa)) != 0){
                void *va = KADDR(pa);
index 005f03a44e40d3544a34ec2d70e44c038e51e286..cf9c8a59c963fe77d6b81cf37cc21fd1cabadd5c 100644 (file)
@@ -10,6 +10,9 @@
  * other cpus enter at cpureset in armv7.s
  */
 TEXT _start(SB), 1, $-4
+       /* save R2 in extern register R10 (Mach *m) */
+       MOVW    R2, R10
+
        /*
         * load physical base for SB addressing while mmu is off
         * keep a handy zero in R0 until first function call
index ba289ad08288b40db958b70db7b69e96ee1c11d4..d6c4acaa686f1dfe3bc71c22e53e1c3c7b1b803e 100644 (file)
@@ -75,7 +75,7 @@ launchinit(void)
 }
 
 void
-main(void)
+main(uintptr arg0)
 {
        extern char edata[], end[];
        uint fw, board;
@@ -84,7 +84,7 @@ main(void)
        memset(edata, 0, end - edata);  /* clear bss */
        mach0init();
        quotefmtinstall();
-       bootargsinit(0);
+       bootargsinit(arg0);
        confinit();             /* figures out amount of memory */
        xinit();
        uartconsinit();
index 8ae2da2b7c48d303d6b4cad22d99edccd1035cc6..796e98a4611318959f5966d9de159046962fe43b 100644 (file)
@@ -84,6 +84,7 @@ dowfi:
        BEQ     dowfi           /* if zero, wait again */
 
 bootcpu:
+       MOVW    $0, R2          /* no ATAGS/DTB pointer */
        BIC     $KSEGM, R8      /* entry to physical */
        ORR     $PHYSDRAM, R8
        BL      (R8)