]> git.sur5r.net Git - freertos/commitdiff
Clean up some of the exception handling code in the new MicroBlaze port.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sat, 2 Jul 2011 18:51:18 +0000 (18:51 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Sat, 2 Jul 2011 18:51:18 +0000 (18:51 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1481 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/FreeRTOS_Source/portable/GCC/MicroBlaze/port_exceptions.c
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/FreeRTOS_Source/portable/GCC/MicroBlaze/portasm.S
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/FreeRTOS_Source/portable/GCC/MicroBlaze/portmacro.h
Demo/MicroBlaze_Spartan-6_EthernetLite/SDKProjects/RTOSDemoSource/main-full.c

index fc570ac93158ad72d24b1dd1659b6a4088169a5f..2ebfe8bd1e22bb770c672b277589750d70eb8fc6 100644 (file)
@@ -73,8 +73,8 @@ stacked register values. */
 #define portexR11_STACK_OFFSET 12\r
 #define portexR12_STACK_OFFSET 13\r
 #define portexR15_STACK_OFFSET 16\r
-#define portexR18_STACK_OFFSET  18\r
-#define portexMSR_STACK_OFFSET 19\r
+#define portexR18_STACK_OFFSET  19\r
+#define portexMSR_STACK_OFFSET 20\r
 #define portexR19_STACK_OFFSET  -1\r
 \r
 /* This is defined to equal the size, in bytes, of the stack frame generated by\r
@@ -90,9 +90,9 @@ exceptions, or the application defined configuration constant
 configINSTALL_EXCEPTION_HANDLERS is not set to 1. */\r
 #if ( MICROBLAZE_EXCEPTIONS_ENABLED == 1 ) && ( configINSTALL_EXCEPTION_HANDLERS == 1 )\r
 \r
-/* These variables are set in the exception entry code, before \r
+/* This variable is set in the exception entry code, before\r
 vPortExceptionHandler is called. */\r
-unsigned long *pulStackPointerOnFunctionEntry = NULL, ulBTROnFunctionEntry = 0UL;\r
+unsigned long *pulStackPointerOnFunctionEntry = NULL;\r
 \r
 /* This is the structure that is filled with the MicroBlaze context as it\r
 existed immediately prior to the exception occurrence.  A pointer to this\r
@@ -159,8 +159,7 @@ extern void *pxCurrentTCB;
        xRegisterDump.ulR13_read_write_small_data_area = mfgpr( R13 );\r
        xRegisterDump.ulR14_return_address_from_interrupt = mfgpr( R14 );\r
        xRegisterDump.ulR16_return_address_from_trap = mfgpr( R16 );\r
-       xRegisterDump.ulR17_return_address_from_some_exceptions = mfgpr( R17 );\r
-       xRegisterDump.ulR18 = mfgpr( R18 );\r
+       xRegisterDump.ulR17_return_address_from_exceptions = mfgpr( R17 );\r
        xRegisterDump.ulR20 = mfgpr( R20 );\r
        xRegisterDump.ulR21 = mfgpr( R21 );\r
        xRegisterDump.ulR22 = mfgpr( R22 );\r
@@ -174,7 +173,6 @@ extern void *pxCurrentTCB;
        xRegisterDump.ulR30 = mfgpr( R30 );\r
        xRegisterDump.ulR31 = mfgpr( R31 );\r
        xRegisterDump.ulR1_SP = ( ( unsigned long ) pulStackPointerOnFunctionEntry ) + portexASM_HANDLER_STACK_FRAME_SIZE;\r
-       xRegisterDump.ulBTR = ulBTROnFunctionEntry;\r
        xRegisterDump.ulEAR = mfear();\r
        xRegisterDump.ulESR = mfesr();\r
        xRegisterDump.ulEDR = mfedr();\r
@@ -182,7 +180,7 @@ extern void *pxCurrentTCB;
        /* Move the saved program counter back to the instruction that was executed\r
        when the exception occurred.  This is only valid for certain types of\r
        exception. */\r
-       xRegisterDump.ulPC = xRegisterDump.ulR17_return_address_from_some_exceptions - portexINSTRUCTION_SIZE;\r
+       xRegisterDump.ulPC = xRegisterDump.ulR17_return_address_from_exceptions - portexINSTRUCTION_SIZE;\r
 \r
        #if XPAR_MICROBLAZE_0_USE_FPU == 1\r
        {\r
index 674343690d2fc420973067ba51ae05a2e09c7fa8..eb3dc75a5257fb3fd7dc95a9c375fc082d287ede 100644 (file)
@@ -115,7 +115,6 @@ back into the caller stack. */
        .extern ulTaskSwitchRequested\r
        .extern vPortExceptionHandler\r
        .extern pulStackPointerOnFunctionEntry\r
-       .extern ulBTROnFunctionEntry\r
 \r
        .global _interrupt_handler\r
        .global VPortYieldASM\r
@@ -350,8 +349,6 @@ vPortExceptionHandlerEntry:
        /* Take a copy of the stack pointer before vPortExecptionHandler is called,\r
        storing its value prior to the function stack frame being created. */\r
        swi r1, r0, pulStackPointerOnFunctionEntry\r
-       mfs r18, RBTR\r
-       swi r18, r0, ulBTROnFunctionEntry\r
        bralid r15, vPortExceptionHandler\r
        or r0, r0, r0\r
 \r
index 50d6353fd8123adbd98ef051cbf5848dc933a3f2..cf89cc9859e2c35cdd8cced11dde9d746fef97c6 100644 (file)
@@ -168,7 +168,7 @@ typedef struct PORT_REGISTER_DUMP
        unsigned long ulR14_return_address_from_interrupt;\r
        unsigned long ulR15_return_address_from_subroutine;\r
        unsigned long ulR16_return_address_from_trap;\r
-       unsigned long ulR17_return_address_from_some_exceptions;\r
+       unsigned long ulR17_return_address_from_exceptions; /* The exception entry code can copy the BTR in here for exceptions that occur in the delay slot of branch instructions. */\r
        unsigned long ulR18;\r
        unsigned long ulR19;\r
        unsigned long ulR20;\r
@@ -185,7 +185,6 @@ typedef struct PORT_REGISTER_DUMP
        unsigned long ulR31;\r
        unsigned long ulPC;\r
        unsigned long ulESR;\r
-       unsigned long ulBTR;\r
        unsigned long ulMSR;\r
        unsigned long ulEAR;\r
        unsigned long ulFSR;\r
index 80328ebee3ec9386b2d8d145207cdae17211ef72..b7cce545698b37ed5d5089003bb802e17cff1893 100644 (file)
 \r
 /* BSP includes. */\r
 #include "xtmrctr.h"\r
+#include "microblaze_exceptions_g.h"\r
 \r
 /* Kernel includes. */\r
 #include "FreeRTOS.h"\r