.syntax unified
	.cpu cortex-m33
	.thumb
	.text
	.align 2

@ uint cpu_get_regs_and_sp(r0=uint regs[10])
	.global	cpu_get_regs_and_sp
	.thumb
	.thumb_func
	.type 	cpu_get_regs_and_sp, %function
cpu_get_regs_and_sp:
@ store registers into given array
	str     r4, [r0], #4
	str     r5, [r0], #4
	str     r6, [r0], #4
	str     r7, [r0], #4
	str     r8, [r0], #4
	str     r9, [r0], #4
	str     r10, [r0], #4
	str     r11, [r0], #4
	str     r12, [r0], #4
	str     r13, [r0], #4
@ return the sp
	@Move stack pointer to return register
	mov		r0, sp
	@Branch to link register (return address) and change instruction set if needed
	bx		lr