public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [RFC][PATCH 0/3] New i386 board (includes code relocation)
@ 2008-09-29 13:01 Graeme Russ
  0 siblings, 0 replies; 3+ messages in thread
From: Graeme Russ @ 2008-09-29 13:01 UTC (permalink / raw)
  To: u-boot

Hi All,

I have managed to get the initial port of U-Boot to my custom sc520
(x86) based board built and running and even managed (I think) to get
the fundamentals of the code relocation working (really happy about
that) and I would like some feedback on my mods - specifically the
relocation methodology I am using does not, I think, quite fit that
used on other boards.

When the i386 code was originally written, start.S calls
start_i386boot (). Other boards seem to call board_init_f () which
calls relocate_code () which performs the actual relocation and calls
board_init_r (). Whats more, I have defined CFG_RELOC_ADDR which
specifies the destination in RAM of the relocated code whereas other
boards seem to dynamically calculate the relocation address based on
stack, data, bss etc segment sizes. My relocation code performs the
code relocation before the first C function is called rather than
between board_init_f and board_init_r.

Q. Should I spend a some more time and implement board_init_f /
relocate_code / board_init_r as per other boards or is the approach
I have taken acceptable?

I am concerned about the size of the relocation copy - If you take a
look at /board/eNET/u-boot.lds

	. = 0x38040000;                     /* Where bootcode in the flash is mapped */
	.text  : { *(.text); }

	. = ALIGN(4);
	.rodata : { *(.rodata) *(.rodata.str1.1) *(.rodata.str1.32) }

	_i386boot_text_size = SIZEOF(.text) + SIZEOF(.rodata);

I only copy _i386boot_text_size bytes (adjusted up to the nearest
4-byte boundary.

Q. Will _i386boot_text_size take into account the . = ALIGN(4)
between .text and .rodata or should I add some further adjustments?

Finally a quick warning about [PATCH 3/3] - I've broken a cardinal
rule and combined implementing a new feature with removing an old
(test printf()'s)

Regards,

Graeme

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

* [U-Boot] [RFC][PATCH 0/3] New i386 board (includes code relocation)
@ 2008-09-29 13:03 Graeme Russ
  2008-10-27 23:26 ` Wolfgang Denk
  0 siblings, 1 reply; 3+ messages in thread
From: Graeme Russ @ 2008-09-29 13:03 UTC (permalink / raw)
  To: u-boot

Renamed show_boot_progress in assembler init phase to
show_boot_progress_asm to avoid link conflicts with C version

Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
--

diff --git a/board/sc520_cdp/sc520_cdp_asm.S b/board/sc520_cdp/sc520_cdp_asm.S
index 6ac5a5d..3a8a03f 100644
--- a/board/sc520_cdp/sc520_cdp_asm.S
+++ b/board/sc520_cdp/sc520_cdp_asm.S
@@ -76,8 +76,8 @@ done:   movb	$0x88, %al
 	jmp	*%ebp		     /* return to caller */
 
 
-.globl show_boot_progress
-show_boot_progress:
+.globl show_boot_progress_asm
+show_boot_progress_asm:
 	out	%al, $0x80
 	xchg	%al, %ah
 	movw	$0x680, %dx
diff --git a/board/sc520_spunk/sc520_spunk_asm.S b/board/sc520_spunk/sc520_spunk_asm.S
index 3430b6a..eda7e91 100644
--- a/board/sc520_spunk/sc520_spunk_asm.S
+++ b/board/sc520_spunk/sc520_spunk_asm.S
@@ -73,8 +73,8 @@ done:   movl    $0xfffefc32,%edx
 	jmp	*%ebp		     /* return to caller */
 
 
-.globl show_boot_progress
-show_boot_progress:
+.globl show_boot_progress_asm
+show_boot_progress_asm:
 	movl    $0xfffefc32,%edx
 	xorw    $0xffff, %ax
 	movw    %ax,(%edx)
diff --git a/cpu/i386/start.S b/cpu/i386/start.S
index 264ac09..84888aa 100644
--- a/cpu/i386/start.S
+++ b/cpu/i386/start.S
@@ -55,7 +55,7 @@ early_board_init_ret:
 	/* so we try to indicate progress */
 	movw	$0x01, %ax
 	movl	$.progress0, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress0:
 
 	/* size memory */
@@ -74,7 +74,7 @@ mem_init_ret:
 	/* indicate (lack of) progress */
 	movw	$0x81, %ax
 	movl	$.progress0a, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress0a:
 	jmp	die
 mem_ok:
@@ -82,7 +82,7 @@ mem_ok:
 	/* indicate progress */
 	movw	$0x02, %ax
 	movl	$.progress1, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress1:
 
 	/* create a stack after the bss */
@@ -104,7 +104,7 @@ no_stack:
 	/* indicate (lack of) progress */
 	movw	$0x82, %ax
 	movl	$.progress1a, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress1a:
 	jmp die
 
@@ -113,7 +113,7 @@ stack_ok:
 	/* indicate progress */
 	movw	$0x03, %ax
 	movl	$.progress2, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress2:
 
 	/* copy data section to ram, size must be 4-byte aligned */
@@ -136,7 +136,7 @@ data_fail:
 	/* indicate (lack of) progress */
 	movw	$0x83, %ax
 	movl	$.progress2a, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress2a:
 	jmp	die
 
@@ -145,7 +145,7 @@ data_ok:
 	/* indicate progress */
 	movw	$0x04, %ax
 	movl	$.progress3, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress3:
 
 	/* clear bss section in ram, size must be 4-byte aligned  */
@@ -168,7 +168,7 @@ bss_fail:
 	/* indicate (lack of) progress */
 	movw	$0x84, %ax
 	movl	$.progress3a, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress3a:
 	jmp	die
 
@@ -180,7 +180,7 @@ bss_ok:
 	/* indicate progress */
 	movw	$0x05, %ax
 	movl	$.progress4, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress4:
 
 	call	start_i386boot  /* Enter, U-boot! */
@@ -188,7 +188,7 @@ bss_ok:
 	/* indicate (lack of) progress */
 	movw	$0x85, %ax
 	movl	$.progress4a, %ebp
-	jmp	show_boot_progress
+	jmp	show_boot_progress_asm
 .progress4a:
 
 die:	hlt

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

* [U-Boot] [RFC][PATCH 0/3] New i386 board (includes code relocation)
  2008-09-29 13:03 Graeme Russ
@ 2008-10-27 23:26 ` Wolfgang Denk
  0 siblings, 0 replies; 3+ messages in thread
From: Wolfgang Denk @ 2008-10-27 23:26 UTC (permalink / raw)
  To: u-boot

Dear Graeme Russ,

In message <48E0D212.6040701@gmail.com> you wrote:
> Renamed show_boot_progress in assembler init phase to
> show_boot_progress_asm to avoid link conflicts with C version
> 
> Signed-off-by: Graeme Russ <graeme.russ@gmail.com>

Applied, thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
When a woman marries again it is because she detested her first  hus-
band.  When  a  man  marries again, it is because he adored his first
wife.                                                  -- Oscar Wilde

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

end of thread, other threads:[~2008-10-27 23:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-29 13:01 [U-Boot] [RFC][PATCH 0/3] New i386 board (includes code relocation) Graeme Russ
  -- strict thread matches above, loose matches on Subject: below --
2008-09-29 13:03 Graeme Russ
2008-10-27 23:26 ` Wolfgang Denk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox