?? crt0.s
字號:
###################################-*-asm*- # # Copyright (c) 2001 Xilinx, Inc. All rights reserved. # # Xilinx, Inc. CONFIDENTIAL ## XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A # COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS# ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR # STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION# IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE # FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. # XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO # THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO # ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE # FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY # AND FITNESS FOR A PARTICULAR PURPOSE.# # crt0.s # # C RunTime:# Used for initialization of small data # anchors and stack for programs compiled using # Xilinx Gnu Tools. This routine also intializes the # exception and interrupt handlers## $Id: crt0.s,v 1.1.4.2 2005/05/26 21:50:39 vasanth Exp $# #######################################/* Vector map (Interrupts, Exceptions, Breakpoints) */# # 0x00 # Jump to Start# # 0x04 # nop # # 0x08 # Imm instr for soft exception address [Hi halfword]# # 0x0c # Jump to sof Exception handler [Lo halfword]# # 0x10 # Imm instr for interrupt address [Hi halfword]# # 0x14 # Jump to interrupt handler [Lo halfword]# # 0x18 # nop - Reserved for breakpoint vector# # 0x1C # nop - Reserved for breakpoint vector# # 0x20 # Imm instr for hw exception address [Hi halfword]# # 0x24 # Jump instr to hw exception handler [Lo halfword] .globl _start/* Set the exception and interrupt address vectors *//* to jump to the appropriate handlers */ .align 2 .ent _start _start: bri _start1 # 0x00 nop # 0x04 nop # 0x08 # Reserve space for software exception vector nop # 0x0c nop # 0x10 # Reserve space for interrupt vector nop # 0x14 nop # 0x18 # Reserve space for breakpoint vector nop # 0x1c nop # 0x18 # Reserve space for hw exception vector nop # 0x1c _start1:/* Set the Small Data Anchors and the Stack pointer */ la r13, r0, _SDA_BASE_ la r2, r0, _SDA2_BASE_ la r1, r0, _stack-16 # 16 bytes (4 words are needed by # crt for args and link reg )/* Set the opcodes brai and imm for handlers */ la r6,r0,0xb8080000 # [opcode for brai ] swi r6,r0,0x4 # [brai opcode for reset] swi r6,r0,0xc # [brai opcode for exception] swi r6,r0,0x14 # [brai opcode for interrupt] swi r6,r0,0x24 # [brai opcode for hw exceptions] la r6,r0,0xb0000000 # [opcode for imm ] swi r6,r0,0x0 # [imm opcode for reset] swi r6,r0,0x8 # [imm opcode for exception] swi r6,r0,0x10 # [imm opocde for interrupt] swi r6,r0,0x20 # [imm opocde for hw exceptions] /* Set Reset vector */ la r6,r0,_start1 sw r6,r1,r0 lhu r7,r1,r0 shi r7,r0, 0x2 # [imm for reset] shi r6,r0, 0x6 # [lower half for reset] /* Set Software Exception Handler */ la r6,r0,_exception_handler sw r6,r1,r0 lhu r7,r1,r0 shi r7,r0, 0xa # [imm for exception] shi r6,r0, 0xe # [lower half for exception ]/* Set Interrupt Handler */ la r6,r0,_interrupt_handler sw r6,r1,r0 lhu r7,r1,r0 shi r7,r0, 0x12 # [imm for exception] shi r6,r0, 0x16 # [lower half for intterupt ]/* Set HW Exception Handler */ la r6,r0,_hw_exception_handler sw r6,r1,r0 lhu r7,r1,r0 shi r7,r0, 0x22 # [imm for exception] shi r6,r0, 0x26 # [lower half for hw exception] /* initialize bss sections */ brlid r15,_crtinit nop/* Adjust the stack pointer */ addi r1,r1,16/* Fall through to exit */ .end _start /* Use this exit function */ .globl exit # exit library call .ent exit exit: bri exit .end exit
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -