summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2012-02-26 22:17:40 +0100
committerWolfgang Denk <wd@denx.de>2012-02-26 22:17:40 +0100
commit54e96680cb96fb7a4b8f43fd949c62054004d3e5 (patch)
tree136d8161c0a68034b2f08e7c488533dabfb583b5
parentcec487a435ac106d1a611feba1a36043142c839b (diff)
parent4eb29cf043afb36b414482c117413a8ff8f00410 (diff)
downloadu-boot-54e96680cb96fb7a4b8f43fd949c62054004d3e5.tar.gz
u-boot-54e96680cb96fb7a4b8f43fd949c62054004d3e5.tar.xz
u-boot-54e96680cb96fb7a4b8f43fd949c62054004d3e5.zip
Merge branch 'master' of git://git.denx.de/u-boot-microblaze
* 'master' of git://git.denx.de/u-boot-microblaze: microblaze: Enable TFTP put command microblaze: avoid interrupt race conditions microblaze: fix build failure due to undefined reference to `get_ticks'
-rw-r--r--arch/microblaze/cpu/interrupts.c4
-rw-r--r--arch/microblaze/cpu/timer.c18
-rw-r--r--include/configs/microblaze-generic.h1
3 files changed, 21 insertions, 2 deletions
diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c
index 5a1321128a..e7ca859bfe 100644
--- a/arch/microblaze/cpu/interrupts.c
+++ b/arch/microblaze/cpu/interrupts.c
@@ -155,8 +155,6 @@ void interrupt_handler (void)
#endif
struct irq_action *act = vecs + irqs;
- intc->iar = mask << irqs;
-
#ifdef DEBUG_INT
printf
("Jumping to interrupt handler rutine addr %x,count %x,arg %x\n",
@@ -165,6 +163,8 @@ void interrupt_handler (void)
act->handler (act->arg);
act->count++;
+ intc->iar = mask << irqs;
+
#ifdef DEBUG_INT
printf ("Dump INTC reg, isr %x, ier %x, iar %x, mer %x\n", intc->isr,
intc->ier, intc->iar, intc->mer);
diff --git a/arch/microblaze/cpu/timer.c b/arch/microblaze/cpu/timer.c
index a167755bdd..1952804eaf 100644
--- a/arch/microblaze/cpu/timer.c
+++ b/arch/microblaze/cpu/timer.c
@@ -62,3 +62,21 @@ int timer_init (void)
}
#endif
#endif
+
+/*
+ * This function is derived from PowerPC code (read timebase as long long).
+ * On Microblaze it just returns the timer value.
+ */
+unsigned long long get_ticks(void)
+{
+ return get_timer(0);
+}
+
+/*
+ * This function is derived from PowerPC code (timebase clock frequency).
+ * On Microblaze it returns the number of timer ticks per second.
+ */
+ulong get_tbclk(void)
+{
+ return CONFIG_SYS_HZ;
+}
diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h
index 03a6f5ad0b..1f4aefde13 100644
--- a/include/configs/microblaze-generic.h
+++ b/include/configs/microblaze-generic.h
@@ -255,6 +255,7 @@
#else
# define CONFIG_CMD_PING
# define CONFIG_CMD_DHCP
+# define CONFIG_CMD_TFTPPUT
#endif
#if defined(CONFIG_SYSTEMACE)