Go to the source code of this file.
Functions | |
Main OSTCBCur current task control block pointer OSTCBHighRdy next task control block pointer OSPrioCur current task id OSPrioHighRdy next task id OSIntNesting nested interrupt counter OSRunning operation system running flag OSStartHighRdy Os starts to run highest priority task OSCtxSw Os task level context switch OSIntCtxSw Os interrupt level context switch OS_ENTER_CRITICAL Enter os critical section OS_EXIT_CRITICAL Exit os critical section exception handle::globl HandleReset globl HandleUndef globl HandleSWI globl HandlePabort globl HandleDabort globl HandleReserved globl HandleIRQ globl HandleFIQ irq handle globl HandleEINT0 globl HandleEINT1 globl HandleEINT2 globl HandleEINT3 globl HandleEINT4_7 globl HandleEINT8_23 globl HandleCAM globl HandleBATFLT globl HandleTICK globl HandleWDT globl HandleTimer0 globl HandleTimer1 globl HandleTimer2 globl HandleTimer3 globl HandleTimer4 globl HandleUART2 globl HandleLCD globl HandleDMA0 globl HandleDMA1 globl HandleDMA2 globl HandleDMA3 globl HandleMMC globl HandleTICK globl HandleSPI0 globl HandleUART1 globl HandleNFCON globl HandleUSBD globl HandleUSBH globl HandleIIC globl HandleUART0 globl HandleSPI1 globl HandleRTC globl HandleADC equ SystemStack x33ff4800 equ SVCStack x33ff5800 equ UndefStack x33ff5c00 equ AbortStack x33ff6000 equ IRQStack x33ff7000 equ FIQStack x33ff8000 equ USERMODE x10 equ FIQMODE x11 equ IRQMODE x12 equ SVCMODE x13 equ ABORTMODE x17 equ UNDEFMODE x1b equ SYSTEMMODE x1f equ MODEMASK x1f equ NOINT xc0 | ENTRY (_start) ENTRY(ResetEntryPoint)@Exception vector table(physical address=0x00000000) ldr pc |
Variables | |
Main OSTCBCur current task control block pointer OSTCBHighRdy next task control block pointer OSPrioCur current task id OSPrioHighRdy next task id OSIntNesting nested interrupt counter OSRunning operation system running flag OSStartHighRdy Os starts to run highest priority task OSCtxSw Os task level context switch OSIntCtxSw Os interrupt level context switch OS_ENTER_CRITICAL Enter os critical section OS_EXIT_CRITICAL Exit os critical section exception handle::globl HandleReset globl HandleUndef globl HandleSWI globl HandlePabort globl HandleDabort globl HandleReserved globl HandleIRQ globl HandleFIQ irq handle globl HandleEINT0 globl HandleEINT1 globl HandleEINT2 globl HandleEINT3 globl HandleEINT4_7 globl HandleEINT8_23 globl HandleCAM globl HandleBATFLT globl HandleTICK globl HandleWDT globl HandleTimer0 globl HandleTimer1 globl HandleTimer2 globl HandleTimer3 globl HandleTimer4 globl HandleUART2 globl HandleLCD globl HandleDMA0 globl HandleDMA1 globl HandleDMA2 globl HandleDMA3 globl HandleMMC globl HandleTICK globl HandleSPI0 globl HandleUART1 globl HandleNFCON globl HandleUSBD globl HandleUSBH globl HandleIIC globl HandleUART0 globl HandleSPI1 globl HandleRTC globl HandleADC equ SystemStack x33ff4800 equ SVCStack x33ff5800 equ UndefStack x33ff5c00 equ AbortStack x33ff6000 equ IRQStack x33ff7000 equ FIQStack x33ff8000 equ USERMODE x10 equ FIQMODE x11 equ IRQMODE x12 equ SVCMODE x13 equ ABORTMODE x17 equ UNDEFMODE x1b equ SYSTEMMODE x1f equ MODEMASK x1f equ NOINT xc0 ExceptionVectors ldr | pc |
Main OSTCBCur current task control block pointer OSTCBHighRdy next task control block pointer OSPrioCur current task id OSPrioHighRdy next task id OSIntNesting nested interrupt counter OSRunning operation system running flag OSStartHighRdy Os starts to run highest priority task OSCtxSw Os task level context switch OSIntCtxSw Os interrupt level context switch OS_ENTER_CRITICAL Enter os critical section OS_EXIT_CRITICAL Exit os critical section exception handle::globl HandleReset globl HandleUndef globl HandleSWI globl HandlePabort globl HandleDabort globl HandleReserved globl HandleIRQ globl HandleFIQ irq handle globl HandleEINT0 globl HandleEINT1 globl HandleEINT2 globl HandleEINT3 globl HandleEINT4_7 globl HandleEINT8_23 globl HandleCAM globl HandleBATFLT globl HandleTICK globl HandleWDT globl HandleTimer0 globl HandleTimer1 globl HandleTimer2 globl HandleTimer3 globl HandleTimer4 globl HandleUART2 globl HandleLCD globl HandleDMA0 globl HandleDMA1 globl HandleDMA2 globl HandleDMA3 globl HandleMMC globl HandleTICK globl HandleSPI0 globl HandleUART1 globl HandleNFCON globl HandleUSBD globl HandleUSBH globl HandleIIC globl HandleUART0 globl HandleSPI1 globl HandleRTC globl HandleADC equ SystemStack x33ff4800 equ SVCStack x33ff5800 equ UndefStack x33ff5c00 equ AbortStack x33ff6000 equ IRQStack x33ff7000 equ FIQStack x33ff8000 equ USERMODE x10 equ FIQMODE x11 equ IRQMODE x12 equ SVCMODE x13 equ ABORTMODE x17 equ UNDEFMODE x1b equ SYSTEMMODE x1f equ MODEMASK x1f equ NOINT xc0 ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors VIVI magics | long |
Main OSTCBCur current task control block pointer OSTCBHighRdy next task control block pointer OSPrioCur current task id OSPrioHighRdy next task id OSIntNesting nested interrupt counter OSRunning operation system running flag OSStartHighRdy Os starts to run highest priority task OSCtxSw Os task level context switch OSIntCtxSw Os interrupt level context switch OS_ENTER_CRITICAL Enter os critical section OS_EXIT_CRITICAL Exit os critical section exception handle::globl HandleReset globl HandleUndef globl HandleSWI globl HandlePabort globl HandleDabort globl HandleReserved globl HandleIRQ globl HandleFIQ irq handle globl HandleEINT0 globl HandleEINT1 globl HandleEINT2 globl HandleEINT3 globl HandleEINT4_7 globl HandleEINT8_23 globl HandleCAM globl HandleBATFLT globl HandleTICK globl HandleWDT globl HandleTimer0 globl HandleTimer1 globl HandleTimer2 globl HandleTimer3 globl HandleTimer4 globl HandleUART2 globl HandleLCD globl HandleDMA0 globl HandleDMA1 globl HandleDMA2 globl HandleDMA3 globl HandleMMC globl HandleTICK globl HandleSPI0 globl HandleUART1 globl HandleNFCON globl HandleUSBD globl HandleUSBH globl HandleIIC globl HandleUART0 globl HandleSPI1 globl HandleRTC globl HandleADC equ SystemStack x33ff4800 equ SVCStack x33ff5800 equ UndefStack x33ff5c00 equ AbortStack x33ff6000 equ IRQStack x33ff7000 equ FIQStack x33ff8000 equ USERMODE x10 equ FIQMODE x11 equ IRQMODE x12 equ SVCMODE x13 equ ABORTMODE x17 equ UNDEFMODE x1b equ SYSTEMMODE x1f equ MODEMASK x1f equ NOINT xc0 ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors VIVI magics cpu and machine id | lr |
Main OSTCBCur current task control block pointer OSTCBHighRdy next task control block pointer OSPrioCur current task id OSPrioHighRdy next task id OSIntNesting nested interrupt counter OSRunning operation system running flag OSStartHighRdy Os starts to run highest priority task OSCtxSw Os task level context switch OSIntCtxSw Os interrupt level context switch OS_ENTER_CRITICAL Enter os critical section OS_EXIT_CRITICAL Exit os critical section exception handle::globl HandleReset globl HandleUndef globl HandleSWI globl HandlePabort globl HandleDabort globl HandleReserved globl HandleIRQ globl HandleFIQ irq handle globl HandleEINT0 globl HandleEINT1 globl HandleEINT2 globl HandleEINT3 globl HandleEINT4_7 globl HandleEINT8_23 globl HandleCAM globl HandleBATFLT globl HandleTICK globl HandleWDT globl HandleTimer0 globl HandleTimer1 globl HandleTimer2 globl HandleTimer3 globl HandleTimer4 globl HandleUART2 globl HandleLCD globl HandleDMA0 globl HandleDMA1 globl HandleDMA2 globl HandleDMA3 globl HandleMMC globl HandleTICK globl HandleSPI0 globl HandleUART1 globl HandleNFCON globl HandleUSBD globl HandleUSBH globl HandleIIC globl HandleUART0 globl HandleSPI1 globl HandleRTC globl HandleADC equ SystemStack x33ff4800 equ SVCStack x33ff5800 equ UndefStack x33ff5c00 equ AbortStack x33ff6000 equ IRQStack x33ff7000 equ FIQStack x33ff8000 equ USERMODE x10 equ FIQMODE x11 equ IRQMODE x12 equ SVCMODE x13 equ ABORTMODE x17 equ UNDEFMODE x1b equ SYSTEMMODE x1f equ MODEMASK x1f equ NOINT xc0 ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors VIVI magics cpu and machine id stmfd | sp |
lr into stack ldr | r0 |
lr into stack ldr OSIntNesting add | r1 |
cpsr msr | spsr_cxsf |
cpsr msr r0 Let | spsr |
cpsr msr r0 Let add lsl ldr call irq hook function | HandlerIrqExit |
cpsr msr r0 Let add lsl ldr call irq hook function cpsr orr msr | cpsr_cxsf |
cpsr msr r0 Let add lsl ldr call irq hook function cpsr orr msr r0 disable | irq |
mov | r2 |
mov str mov mov str ldr | myplace |
mov str mov mov str ldr mvn str mov ldr | clkdivn_value |
mov str mov mov str ldr mvn str mov ldr mrc | p15 |
mov str mov mov str ldr mvn str mov ldr mrc | c1 |
mov str mov mov str ldr mvn str mov ldr mrc | c0 |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user | set |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop | nop |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov | fp |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov | a2 |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov bl Main call main b mov PMST_ADDR mov str Release the SDRAM signal protections ldr PMCTL1_ADDR ldr bic str Go ldr PMSR0_ADDR read a return address ldr mov r1 nop REFR_ADDR ldr orr str wait until SDRAM into self refresh mov bne Set the SDRAM singal protections ldr PMCTL1_ADDR ldr orr str ldr rx error | report |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov bl Main call main b mov PMST_ADDR mov str Release the SDRAM signal protections ldr PMCTL1_ADDR ldr bic str Go ldr PMSR0_ADDR read a return address ldr mov r1 nop REFR_ADDR ldr orr str wait until SDRAM into self refresh mov bne Set the SDRAM singal protections ldr PMCTL1_ADDR ldr orr str ldr rx error | tx |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov bl Main call main b mov PMST_ADDR mov str Release the SDRAM signal protections ldr PMCTL1_ADDR ldr bic str Go ldr PMSR0_ADDR read a return address ldr mov r1 nop REFR_ADDR ldr orr str wait until SDRAM into self refresh mov bne Set the SDRAM singal protections ldr PMCTL1_ADDR ldr orr str ldr rx error rx ldr PMCTL0_ADDR ldr orr str PMCTL0_ADDR ldr All LED onUART0_CTL_BASE mov add ldr mov str mov str adrl mem_cfg_val add | r3 |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov bl Main call main b mov PMST_ADDR mov str Release the SDRAM signal protections ldr PMCTL1_ADDR ldr bic str Go ldr PMSR0_ADDR read a return address ldr mov r1 nop REFR_ADDR ldr orr str wait until SDRAM into self refresh mov bne Set the SDRAM singal protections ldr PMCTL1_ADDR ldr orr str ldr rx error rx ldr PMCTL0_ADDR ldr orr str PMCTL0_ADDR ldr All LED onUART0_CTL_BASE mov add ldr mov str mov str adrl mem_cfg_val add str | r4 |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov bl Main call main b mov PMST_ADDR mov str Release the SDRAM signal protections ldr PMCTL1_ADDR ldr bic str Go ldr PMSR0_ADDR read a return address ldr mov r1 nop REFR_ADDR ldr orr str wait until SDRAM into self refresh mov bne Set the SDRAM singal protections ldr PMCTL1_ADDR ldr orr str ldr rx error rx ldr PMCTL0_ADDR ldr orr str PMCTL0_ADDR ldr All LED onUART0_CTL_BASE mov add ldr mov str mov str adrl mem_cfg_val add str cmp r3 bne mov lr nandflash bootcode loader | copy_myself |
ldr ldr ldr ldr ldr ldr mov strb mov cmp | blt |
add mov str teq beq ok_nand_read | bad_nand_read |
add mov str teq beq ok_nand_read STR_FAIL ldr SerBase bl PrintWord mov bl | PrintChar |
add mov str teq beq ok_nand_read STR_FAIL ldr SerBase bl PrintWord mov bl mov sl ldr | go_next |
add mov str teq beq ok_nand_read STR_FAIL ldr SerBase bl PrintWord mov bl mov sl ldr ldr teq r4 bne notmatch subs beq done_nand_read bne go_next | notmatch |
bgt mov lr clear memory mov r2 mov r2 mov | r5 |
bgt mov lr clear memory mov r2 mov r2 mov r2 mov | r6 |
bgt mov lr clear memory mov r2 mov r2 mov r2 mov r2 mov | r7 |
bgt mov lr clear memory mov r2 mov r2 mov r2 mov r2 mov r2 mov | r8 |
bgt mov lr clear memory mov r2 mov r2 mov r2 mov r2 mov r2 mov r2 mov | r9 |
bgt mov lr clear memory mov r2 mov r2 mov r2 mov r2 mov r2 mov r2 mov r2 | clear_loop |
modifies r2 | TODO |
modifies r2 | SerBase |
Main OSTCBCur current task control block pointer OSTCBHighRdy next task control block pointer OSPrioCur current task id OSPrioHighRdy next task id OSIntNesting nested interrupt counter OSRunning operation system running flag OSStartHighRdy Os starts to run highest priority task OSCtxSw Os task level context switch OSIntCtxSw Os interrupt level context switch OS_ENTER_CRITICAL Enter os critical section OS_EXIT_CRITICAL Exit os critical section exception handle ::globl HandleReset globl HandleUndef globl HandleSWI globl HandlePabort globl HandleDabort globl HandleReserved globl HandleIRQ globl HandleFIQ irq handle globl HandleEINT0 globl HandleEINT1 globl HandleEINT2 globl HandleEINT3 globl HandleEINT4_7 globl HandleEINT8_23 globl HandleCAM globl HandleBATFLT globl HandleTICK globl HandleWDT globl HandleTimer0 globl HandleTimer1 globl HandleTimer2 globl HandleTimer3 globl HandleTimer4 globl HandleUART2 globl HandleLCD globl HandleDMA0 globl HandleDMA1 globl HandleDMA2 globl HandleDMA3 globl HandleMMC globl HandleTICK globl HandleSPI0 globl HandleUART1 globl HandleNFCON globl HandleUSBD globl HandleUSBH globl HandleIIC globl HandleUART0 globl HandleSPI1 globl HandleRTC globl HandleADC equ SystemStack x33ff4800 equ SVCStack x33ff5800 equ UndefStack x33ff5c00 equ AbortStack x33ff6000 equ IRQStack x33ff7000 equ FIQStack x33ff8000 equ USERMODE x10 equ FIQMODE x11 equ IRQMODE x12 equ SVCMODE x13 equ ABORTMODE x17 equ UNDEFMODE x1b equ SYSTEMMODE x1f equ MODEMASK x1f equ NOINT xc0 ENTRY | ( | _start | ) | [final, pure virtual] |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov a2 |
add mov str teq beq ok_nand_read bad_nand_read |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr c0 |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr c1 |
mov str mov mov str ldr mvn str mov ldr clkdivn_value |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov bl Main call main b mov PMST_ADDR mov str Release the SDRAM signal protections ldr PMCTL1_ADDR ldr bic str Go ldr PMSR0_ADDR read a return address ldr mov r1 nop REFR_ADDR ldr orr str wait until SDRAM into self refresh mov bne Set the SDRAM singal protections ldr PMCTL1_ADDR ldr orr str ldr rx error rx ldr PMCTL0_ADDR ldr orr str PMCTL0_ADDR ldr All LED onUART0_CTL_BASE mov add ldr mov str mov str adrl mem_cfg_val add str cmp r3 bne mov lr nandflash bootcode loader copy_myself |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov fp |
cpsr msr r0 Let add lsl ldr call irq hook function HandlerIrqExit |
Main OSTCBCur current task control block pointer OSTCBHighRdy next task control block pointer OSPrioCur current task id OSPrioHighRdy next task id OSIntNesting nested interrupt counter OSRunning operation system running flag OSStartHighRdy Os starts to run highest priority task OSCtxSw Os task level context switch OSIntCtxSw Os interrupt level context switch OS_ENTER_CRITICAL Enter os critical section OS_EXIT_CRITICAL Exit os critical section exception handle::globl HandleReset globl HandleUndef globl HandleSWI globl HandlePabort globl HandleDabort globl HandleReserved globl HandleIRQ globl HandleFIQ irq handle globl HandleEINT0 globl HandleEINT1 globl HandleEINT2 globl HandleEINT3 globl HandleEINT4_7 globl HandleEINT8_23 globl HandleCAM globl HandleBATFLT globl HandleTICK globl HandleWDT globl HandleTimer0 globl HandleTimer1 globl HandleTimer2 globl HandleTimer3 globl HandleTimer4 globl HandleUART2 globl HandleLCD globl HandleDMA0 globl HandleDMA1 globl HandleDMA2 globl HandleDMA3 globl HandleMMC globl HandleTICK globl HandleSPI0 globl HandleUART1 globl HandleNFCON globl HandleUSBD globl HandleUSBH globl HandleIIC globl HandleUART0 globl HandleSPI1 globl HandleRTC globl HandleADC equ SystemStack x33ff4800 equ SVCStack x33ff5800 equ UndefStack x33ff5c00 equ AbortStack x33ff6000 equ IRQStack x33ff7000 equ FIQStack x33ff8000 equ USERMODE x10 equ FIQMODE x11 equ IRQMODE x12 equ SVCMODE x13 equ ABORTMODE x17 equ UNDEFMODE x1b equ SYSTEMMODE x1f equ MODEMASK x1f equ NOINT xc0 ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors ldr ExceptionVectors VIVI magics cpu and machine id long |
lr into stack ldr OSIntNesting add strb OSIntNesting ldr lr |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user bl memsetup set memory access parameters Check if this is a wake up from sleep ldr PMST_ADDR ldr tst bne WakeupStart mov add ldr cpsr bic orr msr r1 UndefMode ldr msr r1 AbortMode ldr msr r1 IRQMode ldr msr r1 FIQMode ldr msr r1 SVCMode ldr msr r1 SVCMode ldr nop DW_STACK_START setup stack pointer mov mov bl Main call main b mov PMST_ADDR mov str Release the SDRAM signal protections ldr PMCTL1_ADDR ldr bic str Go ldr PMSR0_ADDR read a return address ldr mov r1 nop nop |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr p15 |
last byte for task stack backup ldr str update stack pointer to os_tcb ldr strb ldr r0 |
last byte for task stack backup ldr str update stack pointer to os_tcb ldr strb ldr str r1 |
mov str mov mov str ldr mvn str mov ldr mrc read ctrl register orr mcr write ctrl register mov ldr mpll_value_USER clock user set |