Skip to content

CRT0.s is tailored for a cm0 not a cm33 #2479

@tbandtg

Description

@tbandtg

Working on fault handlers for my project(2350) noticed that busfault and usage fault are not available.

from the normal cortex m33.s file below is my patch

--- C:\Work\old.txt
+++ C:\Work\new 3.txt
@@ -29,22 +29,22 @@
 .global __vectors, __VECTOR_TABLE
 __VECTOR_TABLE:
 __vectors:
-.word __StackTop
-.word _reset_handler
-.word isr_nmi
-.word isr_hardfault
-.word isr_invalid // Reserved, should never fire
-.word isr_invalid // Reserved, should never fire
-.word isr_invalid // Reserved, should never fire
-.word isr_invalid // Reserved, should never fire
-.word isr_invalid // Reserved, should never fire
-.word isr_invalid // Reserved, should never fire
-.word isr_invalid // Reserved, should never fire
-.word isr_svcall
-.word isr_invalid // Reserved, should never fire
-.word isr_invalid // Reserved, should never fire
-.word isr_pendsv
-.word isr_systick
+    .word   __StackTop          // Initial Main Stack Pointer
+    .word   _reset_handler      // Reset Handler
+    .word   isr_nmi             // NMI Handler
+    .word   isr_hardfault       // HardFault Handler
+    .word   isr_memmanage       // MemManage Fault Handler
+    .word   isr_busfault        // BusFault Handler
+    .word   isr_usagefault      // UsageFault Handler
+	.word isr_invalid // Reserved, should never fire
+	.word isr_invalid // Reserved, should never fire
+	.word isr_invalid // Reserved, should never fire
+	.word isr_invalid // Reserved, should never fire
+    .word   isr_svcall          // SVCall Handler
+    .word   isr_debugmon        // Debug Monitor Handler
+	.word isr_invalid // Reserved, should never fire
+    .word   isr_pendsv          // PendSV Handler
+    .word   isr_systick         // SysTick Handler
 #if PICO_NO_STORED_VECTOR_TABLE && !PICO_NO_FLASH // note in no flash binary, we only have the single RAM vector table anyway
 #if PICO_NO_RAM_VECTOR_TABLE
 #error Can't specify PICO_NO_STORED_VECTOR_TABLE and PICO_NO_RAM_VECTOR_TABLE
@@ -164,13 +164,15 @@
     bkpt #0
 .endm
 
-// these are separated out for clarity
-decl_isr_bkpt isr_invalid
-decl_isr_bkpt isr_nmi
-decl_isr_bkpt isr_hardfault
-decl_isr_bkpt isr_svcall
-decl_isr_bkpt isr_pendsv
-decl_isr_bkpt isr_systick
+    decl_isr_default isr_nmi
+    decl_isr_default isr_hardfault
+    decl_isr_default isr_memmanage
+    decl_isr_default isr_busfault
+    decl_isr_default isr_usagefault
+    decl_isr_default isr_svcall
+    decl_isr_default isr_debugmon
+    decl_isr_default isr_pendsv
+    decl_isr_default isr_systick
 
 .global __default_isrs_end
 __default_isrs_end:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions