summaryrefslogtreecommitdiff
path: root/cpu/microblaze/exception.c
diff options
context:
space:
mode:
authorHaavard Skinnemoen <hskinnemoen@atmel.com>2007-06-19 15:40:01 +0200
committerHaavard Skinnemoen <hskinnemoen@atmel.com>2007-06-19 15:40:01 +0200
commit448f5fea4c7dd531b69e4e60eed2a72b89b4ed6d (patch)
tree022599b68a0e72f34f3f152f4a0056b557a06a44 /cpu/microblaze/exception.c
parentf2134f8e9eb006bdcd729e89f309c07b2fa45180 (diff)
parent5ffa76a032279bc6d3230b703eda32d13305ba13 (diff)
downloadu-boot-imx-448f5fea4c7dd531b69e4e60eed2a72b89b4ed6d.zip
u-boot-imx-448f5fea4c7dd531b69e4e60eed2a72b89b4ed6d.tar.gz
u-boot-imx-448f5fea4c7dd531b69e4e60eed2a72b89b4ed6d.tar.bz2
Merge branch 'upstream'
Diffstat (limited to 'cpu/microblaze/exception.c')
-rw-r--r--cpu/microblaze/exception.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/cpu/microblaze/exception.c b/cpu/microblaze/exception.c
index b135acb..d76b05a 100644
--- a/cpu/microblaze/exception.c
+++ b/cpu/microblaze/exception.c
@@ -23,15 +23,16 @@
*/
#include <common.h>
+#include <asm/asm.h>
void _hw_exception_handler (void)
{
int address = 0;
int state = 0;
/* loading address of exception EAR */
- __asm__ __volatile ("mfs %0,rear"::"r" (address):"memory");
+ MFS (address, rear);
/* loading excetpion state register ESR */
- __asm__ __volatile ("mfs %0,resr"::"r" (state):"memory");
+ MFS (state, resr);
printf ("Hardware exception at 0x%x address\n", address);
switch (state & 0x1f) { /* mask on exception cause */
case 0x1:
@@ -49,6 +50,11 @@ void _hw_exception_handler (void)
case 0x5:
puts ("Divide by zero exception\n");
break;
+#ifdef MICROBLAZE_V5
+ case 0x1000:
+ puts ("Exception in delay slot\n");
+ break;
+#endif
default:
puts ("Undefined cause\n");
break;