博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SC6600D_init.s
阅读量:4071 次
发布时间:2019-05-25

本文共 1523 字,大约阅读时间需要 5 分钟。

;
 Copyright ARM Ltd 2000. All rights reserved.
;
;
 This module performs ROM/RAM remapping (if required), initializes stack pointers and 
;
 interrupts for each mode, and finally branches to __main in the C library (which eventually calls main()).
;
;
 On reset, the ARM core starts up in Supervisor (SVC) mode, in ARM state, with IRQ and FIQ disabled.
        AREA    Init
,
 CODE
,
 READONLY
;
 --- Standard definitions of mode bits and interrupt (I & F) flags in PSRs
Mode_SVC_NO_IRQ EQU     0xD3 
;
 0x13 or ox80 or 0x40
I_Bit           EQU     0x80 
;
 when I bit is set, IRQ is disabled
F_Bit           EQU     0x40 
;
 when F bit is set, FIQ is disabled
;
 --- System memory locations
        ENTRY
        IMPORT  stack_bottom
        
        EXPORT  Reset_Handler
    CODE32
Reset_Handler
;
 --- Initialise stack pointer registers
;
 Enter SVC mode and set up the SVC stack pointer
    MOV     a1
,
 #Mode_SVC_NO_IRQ            
;
 Build SVC mode CPSR
    MSR     CPSR_c
,
 a1                      
;
 Enter SVC mode    
    LDR     a2
,
 
[
pc, #SVC_STACK-.-8
]
        
;
 Pickup SVC mode stack address                                            
    LDR     a2
,
 
[
a2,#0
]
                         
                                            
;
 max RAM size of out chip is 8M Bits
    MOV     sp
,
 a2                          
;
 Setup SVC MODE stack pointer
    
;
 Set up other stack pointers if necessary
        
;
 ...
;
 --- Initialise memory system
        
;
 ...
;
 --- Initialise critical IO devices
        
;
 ...
;
 --- Initialise interrupt system variables here
        
;
 ...
        IMPORT  main_entry
;
 --- Now enter the C code
      B      main_entry   
;
 note use B not BL, because an application will never return this way
        
;
 --- Now enter the FDL code
;
 jump to target address
;
 on entry
;
 r0 = int startaddr
;
 no exit
          
        EXPORT  JumpToTarget
JumpToTarget    
        MOV  pc
,
 r0
        
SVC_STACK                               
    DCD     stack_bottom
    END
 

转载地址:http://jagji.baihongyu.com/

你可能感兴趣的文章
Java8 Lambda表达式介绍
查看>>
Java8 stream流介绍
查看>>
Java多线程之synchronized及死锁编写
查看>>
Java NIO源码剖析及使用实例(一):Buffer
查看>>
[swift实战入门]手把手教你编写2048(一)
查看>>
[swift实战入门]手把手教你编写2048(二)
查看>>
Java 爬虫入门(网易云音乐和知乎实例)
查看>>
[swift实战入门]手把手教你编写2048(三)
查看>>
堆排序原理(图)及java版代码
查看>>
【JAVA数据结构】栈(数组实现)
查看>>
【JAVA数据结构】双向链表
查看>>
【JAVA数据结构】先进先出队列
查看>>
String类的intern方法随笔
查看>>
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
【并发编程】concurrent包的Condition使用详解
查看>>
【并发编程】ReentrantLock使用介绍
查看>>
【GC算法】jvm垃圾收集算法详解
查看>>
【设计模式】建造者模式详解
查看>>
【设计模式】代理模式
查看>>
【设计模式】动态代理模式
查看>>