From 0f82ae884f3ac2683db9fb4abd0d9be12bb83606 Mon Sep 17 00:00:00 2001 From: Perry Hung Date: Fri, 17 Sep 2010 03:57:52 -0400 Subject: Forgot to add exc.S whoops. --- libmaple/exc.S | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 libmaple/exc.S (limited to 'libmaple/exc.S') diff --git a/libmaple/exc.S b/libmaple/exc.S new file mode 100644 index 0000000..541a61a --- /dev/null +++ b/libmaple/exc.S @@ -0,0 +1,38 @@ +.text + +# On an exception, push a fake stack thread mode stack frame and redirect +# thread execution to a thread mode error handler + +# From RM008: +# The SP is decremented by eight words by the completion of the stack push. +# Figure 5-1 shows the contents of the stack after an exception pre-empts the +# current program flow. +# +# Old SP--> +# xPSR +# PC +# LR +# r12 +# r3 +# r2 +# r1 +# SP--> r0 + +.globl HardFaultException +.thumb_func +HardFaultException: + ldr r0, CPSR_MASK @ Set default CPSR + push {r0} + ldr r0, TARGET_PC @ Set target pc + push {r0} + sub sp, sp, #24 @ its not like i even care + ldr r0, EXC_RETURN @ Return to thread mode + mov lr, r0 + bx lr @ Exception exit + + .align 4 + CPSR_MASK: .word 0x61000000 + EXC_RETURN: .word 0xFFFFFFF9 + TARGET_PC: .word throb + + -- cgit v1.2.3 From ff31b640dd7614faa29466ed02da5267c2a02225 Mon Sep 17 00:00:00 2001 From: Perry Hung Date: Fri, 17 Sep 2010 04:27:08 -0400 Subject: Add MIT license on exc.S --- libmaple/exc.S | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'libmaple/exc.S') diff --git a/libmaple/exc.S b/libmaple/exc.S index 541a61a..a9f6561 100644 --- a/libmaple/exc.S +++ b/libmaple/exc.S @@ -1,4 +1,26 @@ -.text +/* ***************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * ****************************************************************************/ # On an exception, push a fake stack thread mode stack frame and redirect # thread execution to a thread mode error handler @@ -18,6 +40,7 @@ # r1 # SP--> r0 +.text .globl HardFaultException .thumb_func HardFaultException: -- cgit v1.2.3