From ff442d1bdb16edb460dafb17687022d7dd8d92f7 Mon Sep 17 00:00:00 2001 From: Anton Blanchard Date: Wed, 8 Jun 2022 15:20:07 +1000 Subject: [PATCH] Zero BSS in hello world test While trying to reduce U/X state issues, I notice that our BSS is not being initialised in the hello world test. Signed-off-by: Anton Blanchard --- hello_world/head.S | 18 ++- hello_world/hello_world.bin | Bin 6280 -> 6280 bytes hello_world/hello_world.elf | Bin 87184 -> 83688 bytes hello_world/hello_world.hex | 292 ++++++++++++++++++------------------ hello_world/powerpc.lds | 24 ++- 5 files changed, 181 insertions(+), 153 deletions(-) diff --git a/hello_world/head.S b/hello_world/head.S index 6357606..15f3494 100644 --- a/hello_world/head.S +++ b/hello_world/head.S @@ -60,11 +60,25 @@ _start: .global boot_entry boot_entry: + LOAD_IMM64(%r10,__bss_start) + LOAD_IMM64(%r11,__bss_end) + subf %r11,%r10,%r11 + addi %r11,%r11,63 + srdi. %r11,%r11,6 + beq 2f + mtctr %r11 +1: dcbz 0,%r10 + addi %r10,%r10,64 + bdnz 1b + /* setup stack */ - LOAD_IMM64(%r1, STACK_TOP - 0x100) +2: LOAD_IMM64(%r1,__stack_top) + li %r0,0 + stdu %r0,-32(%r1) LOAD_IMM64(%r12, main) - mtctr %r12, + mtctr %r12 bctrl + attn // terminate on exit b . #define EXCEPTION(nr) \ diff --git a/hello_world/hello_world.bin b/hello_world/hello_world.bin index e4b14ca6f70843d9d43a149c8d18fb1f22072fe5..a4eb88c26f7c7742bc5d42c1d9c571302a03b69f 100755 GIT binary patch delta 471 zcmeA$>@eJ*$5`)R%fR53c#Pev5=f^qNO~nQFeCuQvVmgRK(Xx92FdKifQYPGdxmVw z=8M^tA`DHA%a}83--I*NI52ow{`k+}#K53n!@!`JaEx8C0!XJcSSltkFfdp={LlDf znX^z0149GQ%pRbbJwP*iQW*q#5|=S|)+(~HH25(vZT`o?$~ZB=XEQVNU!KV}!W@$) z2y#qT5y;`_NDXEGdMu;o$U zNNo78V5z{sQMrbNp=Oo4LM=n1(n~Pg-vP{KI^V9A3fCV;}9{7p!X ziKB6{n6Qxr#BH295ces)Q~?GI1B0@T2471B2awIk(2{_#p`k{B0q9o-6`jdF!YY#l zL?&+#mSJ?5d{$UrwBgVH|1CgcKtKS9K}LRymQadQdez*lJq*_oSRDVJOb#oCMEVTGghZH*0J_lWj zgE&YBv5TXM^cVO8Tsyic*gkLC!Rmp-J@4FiFXsmNAb+0`GR7K!>GdP#5!MPMO%H$; z0GfV3(yU_L)77SbD>dq-Ov?{5l5oCz)03oOoVAGFR%=>|rWyd?1$5m8h*~+OX@p&? zUhKESVp>Nojrca}YLCYO6~E>I3ScOHd&8}t!AUXPAb?@x%oRLAA&x!D4ch>v+LfVp zw`tS^ni`Dtjx*Nci(8dp$)5HkaP0U$PyPE&4kGwTnKBKa6kb_P!jafw;2UxHa)B?EvbcV?)$A0H{>^@1eH=;)qxFO^gdnQ>SU>}6cetvUK t(F?JNbdVJ`r!TKu4ml5<5Gs-)yXaX03Pk8#AYVtEANCIPQ>mQ@egH~Wg-`$h diff --git a/hello_world/hello_world.elf b/hello_world/hello_world.elf index 5eeedc452464d33864fa4a2deb5dd10f5eccbfd1..3dc0cc1c1cb753a5fe02cfa05c9860ff01c29675 100755 GIT binary patch literal 83688 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 Z6)z@k!y&)NvL9ZlHUGgVhWB#&{|2${*E0YB literal 87184 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 VbQ5Z#sX7J!w+Xryg%m