|
@@ -22,6 +22,7 @@
|
|
|
; * 2011-08-14 weety first version
|
|
|
; * 2015-04-15 ArdaFu Split from AT91SAM9260 BSP
|
|
|
; * 2015-04-21 ArdaFu Remove remap code. Using mmu to map vector table
|
|
|
+; * 2015-06-04 aozima Align stack address to 8 byte.
|
|
|
; */
|
|
|
|
|
|
S_FRAME_SIZE EQU (18*4) ;72
|
|
@@ -60,38 +61,44 @@ NOINT EQU 0xC0
|
|
|
GET rt_low_level_keil.inc
|
|
|
|
|
|
;----------------------- Stack and Heap Definitions ----------------------------
|
|
|
- AREA STACK, NOINIT, READWRITE, ALIGN=2
|
|
|
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
|
|
|
Stack_Mem
|
|
|
|
|
|
SPACE UND_STK_SIZE
|
|
|
EXPORT UND_STACK_START
|
|
|
UND_STACK_START
|
|
|
|
|
|
- ALIGN 4
|
|
|
+ ALIGN 8
|
|
|
SPACE ABT_STK_SIZE
|
|
|
EXPORT ABT_STACK_START
|
|
|
ABT_STACK_START
|
|
|
|
|
|
- ALIGN 4
|
|
|
+ ALIGN 8
|
|
|
SPACE FIQ_STK_SIZE
|
|
|
EXPORT FIQ_STACK_START
|
|
|
FIQ_STACK_START
|
|
|
|
|
|
- ALIGN 4
|
|
|
+ ALIGN 8
|
|
|
SPACE IRQ_STK_SIZE
|
|
|
EXPORT IRQ_STACK_START
|
|
|
IRQ_STACK_START
|
|
|
|
|
|
- ALIGN 4
|
|
|
+ ALIGN 8
|
|
|
SPACE SYS_STK_SIZE
|
|
|
EXPORT SYS_STACK_START
|
|
|
SYS_STACK_START
|
|
|
|
|
|
- ALIGN 4
|
|
|
+ ALIGN 8
|
|
|
SPACE SVC_STK_SIZE
|
|
|
EXPORT SVC_STACK_START
|
|
|
SVC_STACK_START
|
|
|
Stack_Top
|
|
|
+__initial_sp
|
|
|
+
|
|
|
+__heap_base
|
|
|
+Heap_Mem SPACE Heap_Size
|
|
|
+__heap_limit
|
|
|
+
|
|
|
PRESERVE8
|
|
|
;--------------Jump vector table------------------------------------------------
|
|
|
EXPORT Entry_Point
|
|
@@ -291,4 +298,31 @@ rt_hw_context_switch_interrupt_do PROC
|
|
|
|
|
|
LDMFD SP!, {R0-R12,LR,PC}^ ; pop new task's R0-R12,LR & PC SPSR to CPSR
|
|
|
ENDP
|
|
|
+
|
|
|
+;*******************************************************************************
|
|
|
+; User Stack and Heap initialization
|
|
|
+;*******************************************************************************
|
|
|
+ IF :DEF:__MICROLIB
|
|
|
+
|
|
|
+ EXPORT __initial_sp
|
|
|
+ EXPORT __heap_base
|
|
|
+ EXPORT __heap_limit
|
|
|
+
|
|
|
+ ELSE
|
|
|
+
|
|
|
+ IMPORT __use_two_region_memory
|
|
|
+ EXPORT __user_initial_stackheap
|
|
|
+
|
|
|
+__user_initial_stackheap
|
|
|
+
|
|
|
+ LDR R0, = Heap_Mem ; heap base
|
|
|
+ LDR R1, = SVC_STACK_START ; stack base (top-address)
|
|
|
+ LDR R2, = (Heap_Mem + Heap_Size) ; heap limit
|
|
|
+ LDR R3, = (SVC_STACK_START - SVC_STK_SIZE) ; stack limit (low-address)
|
|
|
+ BX LR
|
|
|
+
|
|
|
+ ALIGN
|
|
|
+
|
|
|
+ ENDIF
|
|
|
+
|
|
|
END
|