
On Wed, Dec 10, 2008 at 5:50 AM, Scott Wood scottwood@freescale.com wrote:
On Mon, Nov 10, 2008 at 01:53:46PM +0900, Kyungmin Park wrote:
OneNAND IPL has common codes for RAM init, load data, and jump to 2nd bootloader, but it's common code used about 300~400 bytes. So board specific codes, such as lowlevel_init, can't has enough code. It make a difficult to implement OneNAND IPL.
This patch make this common code as small as possible. and give lowlevel_init can have more codes.
Sorry for the delay; I missed this patch earlier.
Signed-off-by: Kyungmin Park kyungmin.park@samsung.com
diff --git a/cpu/arm1136/start.S b/cpu/arm1136/start.S index e622338..132cc4a 100644 --- a/cpu/arm1136/start.S +++ b/cpu/arm1136/start.S @@ -33,23 +33,7 @@ .globl _start _start: b reset #ifdef CONFIG_ONENAND_IPL
ldr pc, _hang
ldr pc, _hang
ldr pc, _hang
ldr pc, _hang
ldr pc, _hang
ldr pc, _hang
ldr pc, _hang
-_hang:
.word do_hang
.word 0x12345678
.word 0x12345678
.word 0x12345678
.word 0x12345678
.word 0x12345678
.word 0x12345678
.word 0x12345678 /* now 16*4=64 */
. = _start + 64 /* now 16*4=64 */
#else
Can you do a branch-to-self here that will accomplish the same thing, without needing do_hang later?
So I don't understand the meaning. In general in restricted environment, 1KiB bootloader. There's no room to handle exception.
diff --git a/onenand_ipl/onenand_boot.c b/onenand_ipl/onenand_boot.c index aff62d2..2440d8b 100644 --- a/onenand_ipl/onenand_boot.c +++ b/onenand_ipl/onenand_boot.c @@ -39,6 +39,7 @@ int print_info(void)
typedef int (init_fnc_t)(void);
+#ifdef CONFIG_USE_ONENAND_INIT init_fnc_t *init_sequence[] = {
Is there anything that's going to use this? If not, just remove the code.
I just wonder if there are some user to use. If not no problem to remove.
+#ifdef CONFIG_USE_ONENAND_INIT void hang(void) { /* if board_hang() returns, hange here */ printf("X-Loader hangs\n"); for (;;); } +#endif
X-Loader?
It's code used at x-loader (cross nand bootloader).
diff --git a/onenand_ipl/onenand_ipl.h b/onenand_ipl/onenand_ipl.h index 3387998..438e58c 100644 --- a/onenand_ipl/onenand_ipl.h +++ b/onenand_ipl/onenand_ipl.h @@ -23,7 +23,7 @@
#include <linux/mtd/onenand_regs.h>
-#define ONENAND_BLOCK_SIZE 2048 +#define ONENAND_BLOCK_SIZE 0x20000
This doesn't seem to be referenced at all any more. Was the old value simply wrong?
It's used at onenand_boot.c but now it's not. It's also no problem to remove.
Thank you, Kyungmin Park