summary refs log tree commit diff
path: root/src/rt/arch/arm/ccall.S
blob: 3350a040f53039057d59159417c4b7ab998b6467 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Mark stack as non-executable
#if defined(__linux__) && defined(__ELF__)
.section	.note.GNU-stack, "", %progbits
#endif

.text
.code 32
.arm
.align

.globl __morestack
.hidden __morestack
.type __morestack, %function
__morestack:
	.fnstart
	.save {r4, fp, lr}
	push {r4, fp, lr}
    .movsp r4
	mov r4, sp
	mov sp, r2
	mov fp, sp
	blx r1
	mov sp, r4
	pop {r4, fp, lr}
	mov pc, lr
	.fnend