]> git.kernelconcepts.de Git - karo-tx-redboot.git/blobdiff - packages/hal/arm/arch/v2_0/src/hal_misc.c
TX51 pre-release
[karo-tx-redboot.git] / packages / hal / arm / arch / v2_0 / src / hal_misc.c
index ba1303465b2bf82aa1269b817797d40369738f32..0de27526c59f169e77e8d3a43557dafcf8d57752 100644 (file)
 #endif
 
 #include <cyg/infra/cyg_type.h>
 #endif
 
 #include <cyg/infra/cyg_type.h>
-#include <cyg/infra/cyg_trac.h>         // tracing macros
-#include <cyg/infra/cyg_ass.h>          // assertion macros
+#include <cyg/infra/cyg_trac.h>                        // tracing macros
+#include <cyg/infra/cyg_ass.h>                 // assertion macros
 
 
-#include <cyg/hal/hal_arch.h>           // HAL header
-#include <cyg/hal/hal_intr.h>           // HAL header
+#include <cyg/hal/hal_arch.h>                  // HAL header
+#include <cyg/hal/hal_intr.h>                  // HAL header
 
 #include <cyg/infra/diag.h>
 
 /*------------------------------------------------------------------------*/
 
 #include <cyg/infra/diag.h>
 
 /*------------------------------------------------------------------------*/
-/* First level C exception handler.                                       */
+/* First level C exception handler.                                                                              */
 
 externC void __handle_exception (void);
 
 
 externC void __handle_exception (void);
 
@@ -102,17 +102,17 @@ static int exception_level;
 static void
 __take_over_debug_traps(void)
 {
 static void
 __take_over_debug_traps(void)
 {
-    hold_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH] = hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH];
-    hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH] = vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH];
-    hold_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA] = hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA];
-    hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA] = vectors[CYGNUM_HAL_VECTOR_ABORT_DATA];
+       hold_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH] = hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH];
+       hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH] = vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH];
+       hold_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA] = hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA];
+       hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA] = vectors[CYGNUM_HAL_VECTOR_ABORT_DATA];
 }
 
 static void
 __restore_debug_traps(void)
 {
 }
 
 static void
 __restore_debug_traps(void)
 {
-    hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH] = hold_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH];
-    hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA] = hold_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA];
+       hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH] = hold_vectors[CYGNUM_HAL_VECTOR_ABORT_PREFETCH];
+       hardware_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA] = hold_vectors[CYGNUM_HAL_VECTOR_ABORT_DATA];
 }
 #endif // !CYGPKG_CYGMON
 #endif
 }
 #endif // !CYGPKG_CYGMON
 #endif
@@ -120,43 +120,43 @@ __restore_debug_traps(void)
 void
 exception_handler(HAL_SavedRegisters *regs)
 {
 void
 exception_handler(HAL_SavedRegisters *regs)
 {
-    // Special case handler for code which has chosen to take care
-    // of data exceptions (i.e. code which expects them to happen)
-    // This is common in discovery code, e.g. checking for a particular
-    // device which may generate an exception when probing if the
-    // device is not present
+       // Special case handler for code which has chosen to take care
+       // of data exceptions (i.e. code which expects them to happen)
+       // This is common in discovery code, e.g. checking for a particular
+       // device which may generate an exception when probing if the
+       // device is not present
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
-    if (__mem_fault_handler && 
-        regs->vector == CYGNUM_HAL_EXCEPTION_DATA_ACCESS) {
-        regs->pc = (unsigned long)__mem_fault_handler;
-        return; // Caught an exception inside stubs        
-    }
+       if (__mem_fault_handler &&
+               regs->vector == CYGNUM_HAL_EXCEPTION_DATA_ACCESS) {
+               regs->pc = (unsigned long)__mem_fault_handler;
+               return; // Caught an exception inside stubs
+       }
 #endif
 
 #if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) && !defined(CYGPKG_CYGMON)
 #endif
 
 #if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) && !defined(CYGPKG_CYGMON)
-    if (++exception_level == 1) __take_over_debug_traps();
+       if (++exception_level == 1) __take_over_debug_traps();
 
 
-    _hal_registers = regs;
-    __handle_exception();
+       _hal_registers = regs;
+       __handle_exception();
 
 
-    if (--exception_level == 0) __restore_debug_traps();
+       if (--exception_level == 0) __restore_debug_traps();
 
 #elif defined(CYGPKG_KERNEL_EXCEPTIONS)
 
 
 #elif defined(CYGPKG_KERNEL_EXCEPTIONS)
 
-    // We should decode the vector and pass a more appropriate
-    // value as the second argument. For now we simply pass a
-    // pointer to the saved registers. We should also divert
-    // breakpoint and other debug vectors into the debug stubs.
+       // We should decode the vector and pass a more appropriate
+       // value as the second argument. For now we simply pass a
+       // pointer to the saved registers. We should also divert
+       // breakpoint and other debug vectors into the debug stubs.
 
 
-    cyg_hal_deliver_exception( regs->vector, (CYG_ADDRWORD)regs );
+       cyg_hal_deliver_exception( regs->vector, (CYG_ADDRWORD)regs );
 
 #else
 
 
 #else
 
-    CYG_FAIL("Exception!!!");
-    
-#endif    
-    
-    return;
+       CYG_FAIL("Exception!!!");
+
+#endif
+
+       return;
 }
 
 void hal_spurious_IRQ(HAL_SavedRegisters *regs) CYGBLD_ATTRIB_WEAK;
 }
 
 void hal_spurious_IRQ(HAL_SavedRegisters *regs) CYGBLD_ATTRIB_WEAK;
@@ -164,10 +164,10 @@ void
 hal_spurious_IRQ(HAL_SavedRegisters *regs)
 {
 #if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS)
 hal_spurious_IRQ(HAL_SavedRegisters *regs)
 {
 #if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS)
-    exception_handler(regs);
+       exception_handler(regs);
 #else
 #else
-    CYG_FAIL("Spurious interrupt!!");
-#endif    
+       CYG_FAIL("Spurious interrupt!!");
+#endif
 }
 
 /*------------------------------------------------------------------------*/
 }
 
 /*------------------------------------------------------------------------*/
@@ -185,21 +185,21 @@ void
 cyg_hal_invoke_constructors (void)
 {
 #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
 cyg_hal_invoke_constructors (void)
 {
 #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
-    static pfunc *p = &__CTOR_END__[-1];
-    
-    cyg_hal_stop_constructors = 0;
-    for (; p >= __CTOR_LIST__; p--) {
-        (*p) ();
-        if (cyg_hal_stop_constructors) {
-            p--;
-            break;
-        }
-    }
+       static pfunc *p = &__CTOR_END__[-1];
+
+       cyg_hal_stop_constructors = 0;
+       for (; p >= __CTOR_LIST__; p--) {
+               (*p) ();
+               if (cyg_hal_stop_constructors) {
+                       p--;
+                       break;
+               }
+       }
 #else
 #else
-    pfunc *p;
+       pfunc *p;
 
 
-    for (p = &__CTOR_END__[-1]; p >= __CTOR_LIST__; p--)
-        (*p) ();
+       for (p = &__CTOR_END__[-1]; p >= __CTOR_LIST__; p--)
+               (*p) ();
 #endif
 }
 
 #endif
 }
 
@@ -209,10 +209,10 @@ cyg_hal_invoke_constructors (void)
 externC cyg_uint32
 hal_arch_default_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data)
 {
 externC cyg_uint32
 hal_arch_default_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data)
 {
-    CYG_TRACE1(true, "Interrupt: %d", vector);
+       CYG_TRACE1(true, "Interrupt: %d", vector);
 
 
-    CYG_FAIL("Spurious Interrupt!!!");
-    return 0;
+       CYG_FAIL("Spurious Interrupt!!!");
+       return 0;
 }
 
 /*-------------------------------------------------------------------------*/
 }
 
 /*-------------------------------------------------------------------------*/
@@ -227,7 +227,7 @@ hal_arch_default_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data)
 void
 breakpoint(void)
 {
 void
 breakpoint(void)
 {
-    HAL_BREAKPOINT(_breakinst);
+       HAL_BREAKPOINT(_breakinst);
 }
 
 
 }
 
 
@@ -236,45 +236,45 @@ breakpoint(void)
 unsigned long
 __break_opcode (void)
 {
 unsigned long
 __break_opcode (void)
 {
-    return HAL_BREAKINST;
+       return HAL_BREAKINST;
 }
 #endif
 
 int
 hal_lsbindex(int mask)
 {
 }
 #endif
 
 int
 hal_lsbindex(int mask)
 {
-    int i;
-    for (i = 0;  i < 32;  i++) {
-      if (mask & (1<<i)) return (i);
-    }
-    return (-1);
+       int i;
+       for (i = 0;  i < 32;  i++) {
+               if (mask & (1<<i)) return (i);
+       }
+       return (-1);
 }
 
 int
 hal_msbindex(int mask)
 {
 }
 
 int
 hal_msbindex(int mask)
 {
-    int i;
-    for (i = 31;  i >= 0;  i--) {
-      if (mask & (1<<i)) return (i);
-    }
-    return (-1);
+       int i;
+       for (i = 31;  i >= 0;  i--) {
+               if (mask & (1<<i)) return (i);
+       }
+       return (-1);
 }
 
 #ifdef  CYGHWR_HAL_ARM_DUMP_EXCEPTIONS
 void
 dump_frame(unsigned char *frame)
 {
 }
 
 #ifdef  CYGHWR_HAL_ARM_DUMP_EXCEPTIONS
 void
 dump_frame(unsigned char *frame)
 {
-    HAL_SavedRegisters *rp = (HAL_SavedRegisters *)frame;
-    int i;
-    diag_dump_buf(frame, 128);
-    diag_printf("Registers:\n");
-    for (i = 0;  i <= 10;  i++) {
-        if ((i == 0) || (i == 6)) diag_printf("R%d: ", i);
-        diag_printf("%08X ", rp->d[i]);
-        if ((i == 5) || (i == 10)) diag_printf("\n");
-    }
-    diag_printf("FP: %08X, SP: %08X, LR: %08X, PC: %08X, PSR: %08X\n",
-                rp->fp, rp->sp, rp->lr, rp->pc, rp->cpsr);
+       HAL_SavedRegisters *rp = (HAL_SavedRegisters *)frame;
+       int i;
+       diag_dump_buf(frame, 128);
+       diag_printf("Registers:\n");
+       for (i = 0;  i <= 10;  i++) {
+               if ((i == 0) || (i == 6)) diag_printf("R%d: ", i);
+               diag_printf("%08X ", rp->d[i]);
+               if ((i == 5) || (i == 10)) diag_printf("\n");
+       }
+       diag_printf("FP: %08X, SP: %08X, LR: %08X, PC: %08X, PSR: %08X\n",
+                               rp->fp, rp->sp, rp->lr, rp->pc, rp->cpsr);
 }
 #endif
 
 }
 #endif
 
@@ -282,21 +282,21 @@ dump_frame(unsigned char *frame)
 void
 show_frame_in(HAL_SavedRegisters *frame)
 {
 void
 show_frame_in(HAL_SavedRegisters *frame)
 {
-    int old;
-    HAL_DISABLE_INTERRUPTS(old);
-    diag_printf("[IN] IRQ Frame:\n");
-    dump_frame((unsigned char *)frame);
-    HAL_RESTORE_INTERRUPTS(old);
+       int old;
+       HAL_DISABLE_INTERRUPTS(old);
+       diag_printf("[IN] IRQ Frame:\n");
+       dump_frame((unsigned char *)frame);
+       HAL_RESTORE_INTERRUPTS(old);
 }
 
 void
 show_frame_out(HAL_SavedRegisters *frame)
 {
 }
 
 void
 show_frame_out(HAL_SavedRegisters *frame)
 {
-    int old;
-    HAL_DISABLE_INTERRUPTS(old);
-    diag_printf("[OUT] IRQ Frame:\n");
-    dump_frame((unsigned char *)frame);
-    HAL_RESTORE_INTERRUPTS(old);
+       int old;
+       HAL_DISABLE_INTERRUPTS(old);
+       diag_printf("[OUT] IRQ Frame:\n");
+       dump_frame((unsigned char *)frame);
+       HAL_RESTORE_INTERRUPTS(old);
 }
 #endif
 
 }
 #endif
 
@@ -304,47 +304,47 @@ show_frame_out(HAL_SavedRegisters *frame)
 // Debug routines
 void cyg_hal_report_undefined_instruction(HAL_SavedRegisters *frame)
 {
 // Debug routines
 void cyg_hal_report_undefined_instruction(HAL_SavedRegisters *frame)
 {
-    int old;
-    HAL_DISABLE_INTERRUPTS(old);
-    diag_printf("[UNDEFINED INSTRUCTION] Frame:\n");
-    dump_frame((unsigned char *)frame);
-    HAL_RESTORE_INTERRUPTS(old);
+       int old;
+       HAL_DISABLE_INTERRUPTS(old);
+       diag_printf("[UNDEFINED INSTRUCTION] Frame:\n");
+       dump_frame((unsigned char *)frame);
+       HAL_RESTORE_INTERRUPTS(old);
 }
 
 void cyg_hal_report_software_interrupt(HAL_SavedRegisters *frame)
 {
 }
 
 void cyg_hal_report_software_interrupt(HAL_SavedRegisters *frame)
 {
-    int old;
-    HAL_DISABLE_INTERRUPTS(old);
-    diag_printf("[SOFTWARE INTERRUPT] Frame:\n");
-    dump_frame((unsigned char *)frame);
-    HAL_RESTORE_INTERRUPTS(old);
+       int old;
+       HAL_DISABLE_INTERRUPTS(old);
+       diag_printf("[SOFTWARE INTERRUPT] Frame:\n");
+       dump_frame((unsigned char *)frame);
+       HAL_RESTORE_INTERRUPTS(old);
 }
 
 void cyg_hal_report_abort_prefetch(HAL_SavedRegisters *frame)
 {
 }
 
 void cyg_hal_report_abort_prefetch(HAL_SavedRegisters *frame)
 {
-    int old;
-    HAL_DISABLE_INTERRUPTS(old);
-    diag_printf("[ABORT PREFETCH] Frame:\n");
-    dump_frame((unsigned char *)frame);    
-    HAL_RESTORE_INTERRUPTS(old);
+       int old;
+       HAL_DISABLE_INTERRUPTS(old);
+       diag_printf("[ABORT PREFETCH] Frame:\n");
+       dump_frame((unsigned char *)frame);
+       HAL_RESTORE_INTERRUPTS(old);
 }
 
 void cyg_hal_report_abort_data(HAL_SavedRegisters *frame)
 {
 }
 
 void cyg_hal_report_abort_data(HAL_SavedRegisters *frame)
 {
-    int old;
-    HAL_DISABLE_INTERRUPTS(old);
-    diag_printf("[ABORT DATA] Frame:\n");
-    dump_frame((unsigned char *)frame);
-    HAL_RESTORE_INTERRUPTS(old);
+       int old;
+       HAL_DISABLE_INTERRUPTS(old);
+       diag_printf("[ABORT DATA] Frame:\n");
+       dump_frame((unsigned char *)frame);
+       HAL_RESTORE_INTERRUPTS(old);
 }
 
 void cyg_hal_report_exception_handler_returned(HAL_SavedRegisters *frame)
 }
 
 void cyg_hal_report_exception_handler_returned(HAL_SavedRegisters *frame)
-{    
-    int old;
-    HAL_DISABLE_INTERRUPTS(old);
-    diag_printf("Exception handler returned!\n");
-    dump_frame((unsigned char *)frame);
-    HAL_RESTORE_INTERRUPTS(old);
+{
+       int old;
+       HAL_DISABLE_INTERRUPTS(old);
+       diag_printf("Exception handler returned!\n");
+       dump_frame((unsigned char *)frame);
+       HAL_RESTORE_INTERRUPTS(old);
 }
 #endif
 
 }
 #endif