mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-05 03:27:48 +00:00
c4392d9472
The Go tools only consider lowercase .s files to be assembly files. By renaming these to uppercase .S files they won't be discovered by the Go toolchain and listed as the SFiles to be assembled. There is a difference between .s and .S: only uppercase .S will be passed through the preprocessor. Doing that is normally safe, and definitely safe in the case of these files.
38 lines
1.1 KiB
ArmAsm
38 lines
1.1 KiB
ArmAsm
.syntax unified
|
|
.cfi_sections .debug_frame
|
|
|
|
.section .text.HardFault_Handler
|
|
.global HardFault_Handler
|
|
.type HardFault_Handler, %function
|
|
HardFault_Handler:
|
|
.cfi_startproc
|
|
// Put the old stack pointer in the first argument, for easy debugging. This
|
|
// is especially useful on Cortex-M0, which supports far fewer debug
|
|
// facilities.
|
|
mov r0, sp
|
|
|
|
// Load the default stack pointer from address 0 so that we can call normal
|
|
// functions again that expect a working stack. However, it will corrupt the
|
|
// old stack so the function below must not attempt to recover from this
|
|
// fault.
|
|
movs r3, #0
|
|
ldr r3, [r3]
|
|
mov sp, r3
|
|
|
|
// Continue handling this error in Go.
|
|
bl handleHardFault
|
|
.cfi_endproc
|
|
.size HardFault_Handler, .-HardFault_Handler
|
|
|
|
// This is a convenience function for semihosting support.
|
|
// At some point, this should be replaced by inline assembly.
|
|
.section .text.SemihostingCall
|
|
.global SemihostingCall
|
|
.type SemihostingCall, %function
|
|
SemihostingCall:
|
|
.cfi_startproc
|
|
bkpt 0xab
|
|
bx lr
|
|
.cfi_endproc
|
|
.size SemihostingCall, .-SemihostingCall
|