From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 8472 invoked from network); 15 Apr 2021 21:19:09 -0000 Received: from 1ess.inri.net (216.126.196.35) by inbox.vuxu.org with ESMTPUTF8; 15 Apr 2021 21:19:09 -0000 Received: from duke.felloff.net ([216.126.196.34]) by 1ess; Thu Apr 15 17:15:22 -0400 2021 Message-ID: <89F2ADFB3FF2879CB6B65BD617ED0601@felloff.net> Date: Thu, 15 Apr 2021 23:15:11 +0200 From: cinap_lenrek@felloff.net To: 9front@9front.org In-Reply-To: <45BD661C-F92C-4005-A71D-68E9CEB99DD6@me.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: managed realtime-java enhancement optimizer Subject: Re: [9front] PXE booting Rpi Reply-To: 9front@9front.org Precedence: bulk so you confirm that the following patch works? because i could not reproduce it on the PI3B+ (R2 always 0). -- cinap PATCH: diff -r b4182c0fe4a9 sys/src/9/bcm/armv6.s --- a/sys/src/9/bcm/armv6.s Sun Apr 11 23:58:30 2021 +0200 +++ b/sys/src/9/bcm/armv6.s Thu Apr 15 23:13:36 2021 +0200 @@ -76,6 +76,9 @@ 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 */ diff -r b4182c0fe4a9 sys/src/9/bcm/armv7.s --- a/sys/src/9/bcm/armv7.s Sun Apr 11 23:58:30 2021 +0200 +++ b/sys/src/9/bcm/armv7.s Thu Apr 15 23:13:36 2021 +0200 @@ -126,6 +126,9 @@ 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 */ diff -r b4182c0fe4a9 sys/src/9/bcm/bootargs.c --- a/sys/src/9/bcm/bootargs.c Sun Apr 11 23:58:30 2021 +0200 +++ b/sys/src/9/bcm/bootargs.c Thu Apr 15 23:13:36 2021 +0200 @@ -265,7 +265,7 @@ 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); diff -r b4182c0fe4a9 sys/src/9/bcm/l.s --- a/sys/src/9/bcm/l.s Sun Apr 11 23:58:30 2021 +0200 +++ b/sys/src/9/bcm/l.s Thu Apr 15 23:13:36 2021 +0200 @@ -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 diff -r b4182c0fe4a9 sys/src/9/bcm/main.c --- a/sys/src/9/bcm/main.c Sun Apr 11 23:58:30 2021 +0200 +++ b/sys/src/9/bcm/main.c Thu Apr 15 23:13:36 2021 +0200 @@ -75,7 +75,7 @@ } void -main(void) +main(uintptr arg0) { extern char edata[], end[]; uint fw, board; @@ -84,7 +84,7 @@ memset(edata, 0, end - edata); /* clear bss */ mach0init(); quotefmtinstall(); - bootargsinit(0); + bootargsinit(arg0); confinit(); /* figures out amount of memory */ xinit(); uartconsinit(); diff -r b4182c0fe4a9 sys/src/9/bcm/rebootcode.s --- a/sys/src/9/bcm/rebootcode.s Sun Apr 11 23:58:30 2021 +0200 +++ b/sys/src/9/bcm/rebootcode.s Thu Apr 15 23:13:36 2021 +0200 @@ -84,6 +84,7 @@ 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)