X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=bertos%2Fcpu%2Farm%2Fhw%2Fcrt_arm7tdmi.S;h=bf80e7e3f43cfc0c11888e7d751564bd874ee205;hb=abe3971a48275b87ad9369ab67d2a64bb51e6ca1;hp=ca2e968cee388ead8f196dc522bfe28a4a432aea;hpb=0bbd43b1953df23a20c6c622ea58588b526fef64;p=bertos.git diff --git a/bertos/cpu/arm/hw/crt_arm7tdmi.S b/bertos/cpu/arm/hw/crt_arm7tdmi.S index ca2e968c..bf80e7e3 100644 --- a/bertos/cpu/arm/hw/crt_arm7tdmi.S +++ b/bertos/cpu/arm/hw/crt_arm7tdmi.S @@ -67,8 +67,8 @@ __init0: ldr r0, =__stack_und_end msr CPSR_c, #ARM_MODE_UNDEF | IRQ_BIT | FIQ_BIT mov r13, r0 - ldr r0, =__stack_sys_end - msr CPSR_c, #ARM_MODE_SYS | IRQ_BIT | FIQ_BIT + ldr r0, =__stack_svc_end + msr CPSR_c, #ARM_MODE_SVC | IRQ_BIT | FIQ_BIT mov r13, r0 /* @@ -121,32 +121,72 @@ end: __dummy_init: mov pc, lr -__xcpt_dummy_undef: - b __xcpt_dummy_undef - -__xcpt_dummy_swi: - b __xcpt_dummy_swi - -__xcpt_dummy_pref: - b __xcpt_dummy_pref - -__xcpt_dummy_dab: - b __xcpt_dummy_dab + /* + * Redefine your own __init() in order to supply + * a completely custom initialization routine. + */ + .weak __init + .set __init, __init0 + /* + * Redefine your own __init1() in order to supply + * an hardware initialization routine. + * Remember that __init1() is called *before* + * clearing .bss and loading .data sections. + */ .weak __init1 .set __init1, __dummy_init + + /* + * Redefine your own __init2() in order to supply + * an hardware initialization routine. + * Remember that __init2() is called *after* + * clearing .bss and loading .data sections, just + * before calling main(). + */ .weak __init2 .set __init2, __dummy_init - .weak __init - .set __init, __init0 + /* + * Redefine your own __undef() in order to supply + * a custom handler for undefined instruction exception. + */ .weak __undef .set __undef, __xcpt_dummy_undef + + /* + * Redefine your own __swi() in order to supply + * a custom handler for software interrupt exception. + */ .weak __swi .set __swi, __xcpt_dummy_swi + + /* + * Redefine your own __prefetch_abort() in order to supply + * a custom handler for prefetch abort exception. + */ .weak __prefetch_abort .set __prefetch_abort, __xcpt_dummy_pref + + /* + * Redefine your own __data_abort() in order to supply + * a custom handler for data abort exception. + */ .weak __data_abort .set __data_abort, __xcpt_dummy_dab .ltorg + + .section .exceptions, "ax", %progbits + +__xcpt_dummy_undef: + b __xcpt_dummy_undef + +__xcpt_dummy_swi: + b __xcpt_dummy_swi + +__xcpt_dummy_pref: + b __xcpt_dummy_pref + +__xcpt_dummy_dab: + b __xcpt_dummy_dab