From dfc10703d753cef0bb31583a820dcf8cf5958f58 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Thu, 21 Jul 2011 10:45:41 +0200 Subject: [PATCH 1/7] microblaze: Remove debug saving value Forget to remove debug code. Signed-off-by: Michal Simek --- arch/microblaze/cpu/start.S | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S index 93a9efd..d3370c4 100644 --- a/arch/microblaze/cpu/start.S +++ b/arch/microblaze/cpu/start.S @@ -46,8 +46,6 @@ _start: addik r6, r0, 0x2 /* BIG/LITTLE endian offset */ swi r6, r0, 0 lbui r10, r0, 0 - swi r6, r0, 0x40 - swi r10, r0, 0x50 /* add opcode instruction for 32bit jump - 2 instruction imm & brai*/ addi r6, r0, 0xb0000000 /* hex b000 opcode imm */ From 86c1b2a86b59f3050413e78bfe40196ac3334c13 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Thu, 21 Jul 2011 10:47:21 +0200 Subject: [PATCH 2/7] microblaze: Setup MB vectors if feature is enable for u-boot For example: Setup reset vectors if reset address is setup. Setup user exception vector if user exception is enabled Signed-off-by: Michal Simek --- arch/microblaze/cpu/start.S | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S index d3370c4..17c0e28 100644 --- a/arch/microblaze/cpu/start.S +++ b/arch/microblaze/cpu/start.S @@ -30,6 +30,13 @@ .text .global _start _start: + /* + * reserve registers: + * r10: Stores little/big endian offset for vectors + * r2: Stores imm opcode + * r3: Stores brai opcode + */ + mts rmsr, r0 /* disable cache */ addi r1, r0, CONFIG_SYS_INIT_SP_OFFSET addi r1, r1, -4 /* Decrement SP to top of memory */ @@ -47,21 +54,15 @@ _start: swi r6, r0, 0 lbui r10, r0, 0 - /* add opcode instruction for 32bit jump - 2 instruction imm & brai*/ - addi r6, r0, 0xb0000000 /* hex b000 opcode imm */ - swi r6, r0, 0x0 /* reset address */ - swi r6, r0, 0x8 /* user vector exception */ - swi r6, r0, 0x10 /* interrupt */ - swi r6, r0, 0x20 /* hardware exception */ - - addi r6, r0, 0xb8080000 /* hew b808 opcode brai*/ - swi r6, r0, 0x4 /* reset address */ - swi r6, r0, 0xC /* user vector exception */ - swi r6, r0, 0x14 /* interrupt */ - swi r6, r0, 0x24 /* hardware exception */ + /* add opcode instruction for 32bit jump - 2 instruction imm & brai */ + addi r2, r0, 0xb0000000 /* hex b000 opcode imm */ + addi r3, r0, 0xb8080000 /* hew b808 opcode brai */ #ifdef CONFIG_SYS_RESET_ADDRESS /* reset address */ + swi r2, r0, 0x0 /* reset address - imm opcode */ + swi r3, r0, 0x4 /* reset address - brai opcode */ + addik r6, r0, CONFIG_SYS_RESET_ADDRESS sw r6, r1, r0 lhu r7, r1, r0 @@ -88,6 +89,9 @@ _start: #ifdef CONFIG_SYS_USR_EXCEP /* user_vector_exception */ + swi r2, r0, 0x8 /* user vector exception - imm opcode */ + swi r3, r0, 0xC /* user vector exception - brai opcode */ + addik r6, r0, _exception_handler sw r6, r1, r0 /* @@ -119,6 +123,9 @@ _start: #ifdef CONFIG_SYS_INTC_0 /* interrupt_handler */ + swi r2, r0, 0x10 /* interrupt - imm opcode */ + swi r3, r0, 0x14 /* interrupt - brai opcode */ + addik r6, r0, _interrupt_handler sw r6, r1, r0 lhu r7, r1, r10 @@ -129,6 +136,9 @@ _start: #endif /* hardware exception */ + swi r2, r0, 0x20 /* hardware exception - imm opcode */ + swi r3, r0, 0x24 /* hardware exception - brai opcode */ + addik r6, r0, _hw_exception_handler sw r6, r1, r0 lhu r7, r1, r10 From f3090fce77202a867ae23d0df91a2b54ed9ee6e4 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Mon, 15 Nov 2010 09:54:43 +0000 Subject: [PATCH 3/7] microblaze: Save and restore first unused vector Use one memory space to detect little/big endian platforms. The first unused address(0x28) is used instead 0x0 address (reset vectors). Detection rewrited reset vector setup from first stage bootloader. Workflow: 1. Store 0x28 to r7 2. Do little/big endian test 3. Restore r7 to 0x28 Signed-off-by: Michal Simek --- arch/microblaze/cpu/start.S | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S index 17c0e28..42104fa 100644 --- a/arch/microblaze/cpu/start.S +++ b/arch/microblaze/cpu/start.S @@ -51,8 +51,10 @@ _start: * 4b) BIG endian - r10 contains 0x0 because 0x2 offset is on addr 0x3 */ addik r6, r0, 0x2 /* BIG/LITTLE endian offset */ - swi r6, r0, 0 - lbui r10, r0, 0 + lwi r7, r0, 0x28 + swi r6, r0, 0x28 /* used first unused MB vector */ + lbui r10, r0, 0x28 /* used first unused MB vector */ + swi r7, r0, 0x28 /* add opcode instruction for 32bit jump - 2 instruction imm & brai */ addi r2, r0, 0xb0000000 /* hex b000 opcode imm */ From 5562bcc241e12a00344b5a08855bab27a6167538 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Tue, 30 Aug 2011 15:22:24 +0200 Subject: [PATCH 4/7] microblaze: Clean up reset asm code - Remove code copying - Reset address is setup from first stage bootloader - Support reset vector setup on little endian Signed-off-by: Michal Simek --- arch/microblaze/cpu/start.S | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S index 42104fa..9077f74 100644 --- a/arch/microblaze/cpu/start.S +++ b/arch/microblaze/cpu/start.S @@ -67,26 +67,11 @@ _start: addik r6, r0, CONFIG_SYS_RESET_ADDRESS sw r6, r1, r0 - lhu r7, r1, r0 - shi r7, r0, 0x2 - shi r6, r0, 0x6 -/* - * Copy U-Boot code to CONFIG_SYS_TEXT_BASE - * solve problem with sbrk_base - */ -#if (CONFIG_SYS_RESET_ADDRESS != CONFIG_SYS_TEXT_BASE) - addi r4, r0, __end - addi r5, r0, __text_start - rsub r4, r5, r4 /* size = __end - __text_start */ - addi r6, r0, CONFIG_SYS_RESET_ADDRESS /* source address */ - addi r7, r0, 0 /* counter */ -4: - lw r8, r6, r7 - sw r8, r5, r7 - addi r7, r7, 0x4 - cmp r8, r4, r7 - blti r8, 4b -#endif + lhu r7, r1, r10 + rsubi r8, r10, 0x2 + sh r7, r0, r8 + rsubi r8, r10, 0x6 + sh r6, r0, r8 #endif #ifdef CONFIG_SYS_USR_EXCEP From 1252df065998d56cc57c387b64eb96f695b6ce63 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Mon, 28 Feb 2011 10:16:09 +0100 Subject: [PATCH 5/7] microblaze: Do not select NFS for platforms without ethernet Undefined network functionality for systems without ethernet and disable NFS support. Signed-off-by: Michal Simek --- include/configs/microblaze-generic.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h index 090ab3b..8cdd72a 100644 --- a/include/configs/microblaze-generic.h +++ b/include/configs/microblaze-generic.h @@ -60,6 +60,7 @@ /*#define CONFIG_SYS_RESET_ADDRESS CONFIG_SYS_TEXT_BASE*/ /* ethernet */ +#undef CONFIG_SYS_ENET #ifdef XILINX_EMACLITE_BASEADDR # define CONFIG_XILINX_EMACLITE 1 # define CONFIG_SYS_ENET @@ -243,6 +244,7 @@ #ifndef CONFIG_SYS_ENET # undef CONFIG_CMD_NET # undef CONFIG_NET_MULTI +# undef CONFIG_CMD_NFS #else # define CONFIG_CMD_PING # define CONFIG_CMD_DHCP From 68332608bcb4a1e9f172c8162247a61f51730698 Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Mon, 28 Feb 2011 10:17:22 +0100 Subject: [PATCH 6/7] microblaze: Remove address offset for uart16550 U-Boot BSP handle 0x3 offset for big endian systems. Little endian Microblaze systems don't use any offset. Signed-off-by: Michal Simek --- include/configs/microblaze-generic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h index 8cdd72a..a334110 100644 --- a/include/configs/microblaze-generic.h +++ b/include/configs/microblaze-generic.h @@ -44,7 +44,7 @@ # define CONFIG_SYS_NS16550_REG_SIZE -4 # define CONFIG_CONS_INDEX 1 # define CONFIG_SYS_NS16550_COM1 \ - (XILINX_UART16550_BASEADDR + 0x1000 + 0x3) + (XILINX_UART16550_BASEADDR + 0x1000) # define CONFIG_SYS_NS16550_CLK XILINX_UART16550_CLOCK_HZ # define CONFIG_BAUDRATE 115200 From 37e892d93abee1d5558128db26b1fc431928a73b Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Fri, 25 Jun 2010 18:05:28 +0200 Subject: [PATCH 7/7] microblaze: Enable FDT/FIT support Enable FDT and FIT support. Signed-off-by: Michal Simek --- include/configs/microblaze-generic.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h index a334110..a811b76 100644 --- a/include/configs/microblaze-generic.h +++ b/include/configs/microblaze-generic.h @@ -327,4 +327,9 @@ # define CONFIG_SYS_PROMPT_HUSH_PS2 "> " #endif +/* Enable flat device tree support */ +#define CONFIG_LMB 1 +#define CONFIG_FIT 1 +#define CONFIG_OF_LIBFDT 1 + #endif /* __CONFIG_H */