All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ARM U-Boot BSS zeroing
@ 2013-05-13 15:37 Leif Lindholm
  2013-05-13 16:09 ` Vladimir 'φ-coder/phcoder' Serbinenko
  2013-05-14 13:02 ` Goswin von Brederlow
  0 siblings, 2 replies; 4+ messages in thread
From: Leif Lindholm @ 2013-05-13 15:37 UTC (permalink / raw)
  To: grub-devel; +Cc: patches

[-- Attachment #1: Type: text/plain, Size: 432 bytes --]

The import into the collaborative branch discarded the call to
get_real_bss_start before starting the BSS zeroing operation.

While get_real_bss_start might have been a bit of an ugly hack,
simply discarding it means that we now end up doing unaligned
STR operations, and any platform with MMU disabled fails to boot.

The attached patch prepends a bytewise zeroing loop until
word-aligned, and then continue as before.

/
    Leif

[-- Attachment #2: bss_zero_fix.patch --]
[-- Type: text/x-diff, Size: 592 bytes --]

=== modified file 'grub-core/kern/arm/uboot/startup.S'
--- grub-core/kern/arm/uboot/startup.S	2013-05-03 13:07:39 +0000
+++ grub-core/kern/arm/uboot/startup.S	2013-05-13 14:59:43 +0000
@@ -100,7 +100,13 @@
 	@ Since we _are_ the C run-time, we need to manually zero the BSS
 	@ region before continuing
 	ldr	r0, =EXT_C(__bss_start)	@ zero from here
-	ldr	r1, =EXT_C(_end)		@ to here
+	@ If unaligned, bytewise zero until base address aligned.
+	mov	r1, #0
+1:	tst	r0, #3
+	beq	2f
+	strb	r1, [r0], #1
+	b	1b
+2:	ldr	r1, =EXT_C(_end)		@ to here
 	mov	r2, #0
 1:	str	r2, [r0], #4
 	cmp	r0, r1


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-05-14 16:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-13 15:37 [PATCH] ARM U-Boot BSS zeroing Leif Lindholm
2013-05-13 16:09 ` Vladimir 'φ-coder/phcoder' Serbinenko
2013-05-14 13:02 ` Goswin von Brederlow
2013-05-14 16:09   ` Vladimir 'phcoder' Serbinenko

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.