File indexing completed on 2025-05-11 08:22:49
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <rtems/asm.h>
0012 #include <rtems/score/cpu.h>
0013
0014 .text
0015 .globl _start
0016 _start:
0017
0018
0019
0020
0021
0022
0023 ldr r7, =_ISR_Stack_area_end
0024
0025
0026 mov r0, #(ARM_PSR_M_FIQ | ARM_PSR_I | ARM_PSR_F)
0027 msr cpsr, r0
0028 ldr r1, =bsp_stack_fiq_size
0029 mov sp, r7
0030 sub r7, r7, r1
0031
0032
0033 mov r0, #(ARM_PSR_M_ABT | ARM_PSR_I | ARM_PSR_F)
0034 msr cpsr, r0
0035 ldr r1, =bsp_stack_abt_size
0036 mov sp, r7
0037 sub r7, r7, r1
0038
0039
0040 mov r0, #(ARM_PSR_M_UND | ARM_PSR_I | ARM_PSR_F)
0041 msr cpsr, r0
0042 ldr r1, =bsp_stack_und_size
0043 mov sp, r7
0044 sub r7, r7, r1
0045
0046
0047 mov r0, #(ARM_PSR_M_IRQ | ARM_PSR_I | ARM_PSR_F)
0048 msr cpsr, r0
0049 mov sp, r7
0050
0051
0052
0053
0054
0055 mov r0, #(ARM_PSR_M_SVC | ARM_PSR_I | ARM_PSR_F)
0056 msr cpsr, r0
0057 mov sp, r7
0058
0059
0060
0061
0062 ldr r1, =bsp_section_bss_end
0063 ldr r0, =bsp_section_bss_begin
0064
0065 _bss_init:
0066 mov r2, #0
0067 cmp r0, r1
0068 strlot r2, [r0], #4
0069 blo _bss_init
0070
0071
0072
0073
0074
0075
0076 ldr r0, =mem_map
0077 bl mmu_init
0078
0079
0080
0081
0082
0083
0084 mov r0, #0
0085 adr r1, vector_block
0086 ldmia r1!, {r2-r9}
0087 stmia r0!, {r2-r9}
0088 ldmia r1!, {r2-r9}
0089 stmia r0!, {r2-r9}
0090
0091
0092 mov r0, #0
0093 bl boot_card
0094
0095
0096
0097
0098
0099
0100 bl bsp_reset
0101
0102
0103 _hang: b _hang
0104
0105
0106
0107
0108
0109
0110
0111 vector_block:
0112 ldr pc, handler_addr_reset
0113 ldr pc, handler_addr_undef
0114 ldr pc, handler_addr_swi
0115 ldr pc, handler_addr_prefetch
0116 ldr pc, handler_addr_abort
0117 nop
0118 ldr pc, handler_addr_irq
0119 ldr pc, handler_addr_fiq
0120
0121 handler_addr_reset:
0122 .word bsp_reset
0123
0124 handler_addr_undef:
0125 .word _ARMV4_Exception_undef_default
0126
0127 handler_addr_swi:
0128 .word _ARMV4_Exception_swi_default
0129
0130 handler_addr_prefetch:
0131 .word _ARMV4_Exception_pref_abort_default
0132
0133 handler_addr_abort:
0134 .word _ARMV4_Exception_data_abort_default
0135
0136 handler_addr_reserved:
0137 .word 0
0138
0139 handler_addr_irq:
0140 .word _ARMV4_Exception_interrupt
0141
0142 handler_addr_fiq:
0143 .word _ARMV4_Exception_fiq_default