summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/microblaze/cpu/start.S69
-rw-r--r--common/usb.c4
-rw-r--r--common/usb_storage.c2
-rw-r--r--include/common.h4
-rw-r--r--include/configs/microblaze-generic.h9
-rw-r--r--include/i2c.h5
6 files changed, 46 insertions, 47 deletions
diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S
index 93a9efd..9077f74 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 */
@@ -44,52 +51,34 @@ _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
- 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 */
- 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 */
+ 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 */
+ 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
- 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
/* 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
/*
@@ -121,6 +110,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
@@ -131,6 +123,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
diff --git a/common/usb.c b/common/usb.c
index a5f9e9f..a401c09 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -63,7 +63,7 @@
#ifdef USB_DEBUG
#define USB_PRINTF(fmt, args...) printf(fmt , ##args)
#else
-static inline void USB_PRINTF(const char *fmt, ...) {}
+#define USB_PRINTF(fmt, args...)
#endif
#define USB_BUFSIZ 512
@@ -970,7 +970,7 @@ void usb_scan_devices(void)
#ifdef USB_HUB_DEBUG
#define USB_HUB_PRINTF(fmt, args...) printf(fmt , ##args)
#else
-static inline void USB_HUB_PRINTF(const char *fmt, ...) {}
+#define USB_HUB_PRINTF(fmt, args...)
#endif
diff --git a/common/usb_storage.c b/common/usb_storage.c
index 5c56918..16667f3 100644
--- a/common/usb_storage.c
+++ b/common/usb_storage.c
@@ -63,7 +63,7 @@
#ifdef USB_STOR_DEBUG
#define USB_STOR_PRINTF(fmt, args...) printf(fmt , ##args)
#else
-static inline void USB_STOR_PRINTF(const char *fmt, ...) {}
+#define USB_STOR_PRINTF(fmt, args...)
#endif
#include <scsi.h>
diff --git a/include/common.h b/include/common.h
index aeb2d84..d244bd4 100644
--- a/include/common.h
+++ b/include/common.h
@@ -120,8 +120,8 @@ typedef volatile unsigned char vu_char;
#define debug(fmt,args...) printf (fmt ,##args)
#define debugX(level,fmt,args...) if (DEBUG>=level) printf(fmt,##args);
#else
-static inline void debug(const char *fmt, ...) {}
-static inline void debugX(int level, const char *fmt, ...) {}
+#define debug(fmt,args...)
+#define debugX(level,fmt,args...)
#endif /* DEBUG */
#ifdef DEBUG
diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h
index 090ab3b..a811b76 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
@@ -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
@@ -325,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 */
diff --git a/include/i2c.h b/include/i2c.h
index 323150d..8ceb4c8 100644
--- a/include/i2c.h
+++ b/include/i2c.h
@@ -55,10 +55,7 @@
#else
#define CONFIG_SYS_MAX_I2C_BUS 1
#define I2C_GET_BUS() 0
-static inline int I2C_SET_BUS(unsigned int bus)
-{
- return 0;
-}
+#define I2C_SET_BUS(a)
#endif
/* define the I2C bus number for RTC and DTT if not already done */