⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reset.s

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 S
📖 第 1 页 / 共 2 页
字号:
        moveal  #_etext,%a0                     | find the end of .text        moveal  #_copy_start,%a1                | find the beginning of .data        moveal  #_edata,%a2                     | find the end of .data        copy_data_loop:                movel   %a0@+,%a1@+                     | copy the data        cmpal   %a2,%a1        jlt     copy_data_loop                  | loop until edata reached                                        |        | zero out uninitialized data area        |zerobss:        moveal  #_clear_end,%a0                 | find end of .bss        moveal  #_clear_start,%a1               | find beginning of .bss        moveq   #0,%d0        zerobss_loop:                movel   %d0,%a1@+                       | to zero out uninitialized        cmpal   %a0,%a1        jlt     zerobss_loop                    | loop until _end reached        movel   #stack_end,%d0        andl    #0xfffffffc,%d0                 | align it on 16 byte boundary         movw    #0x3700,%sr                     | SUPV MODE,INTERRUPTS OFF!!!        movel   %d0,%a7                         | set master stack pointer        movel   %d0,%a6                         | set base pointer        jsr     boot_phase_3|| Create an unhandled exception jump table. The table has an entry for| each vector in the vector table. The entry pushes the vector number onto| the stack and then calls a common exception handler using PIC.| | The macros are to create the labels and format vectors.|                               #define cat(x, y) x ## y#define FORMAT_ID(n) (n << 2)#define EXCEPTION_HANDLER(h, n) EH__##n: move.w cat(h, FORMAT_ID(n)),-(%sp) ;  \                                        bra  common_exception_handlerunhandled_exception:                EXCEPTION_HANDLER(#, 0)EXCEPTION_HANDLER(#, 1)EXCEPTION_HANDLER(#, 2)EXCEPTION_HANDLER(#, 3)EXCEPTION_HANDLER(#, 4)EXCEPTION_HANDLER(#, 5)EXCEPTION_HANDLER(#, 6)EXCEPTION_HANDLER(#, 7)EXCEPTION_HANDLER(#, 8)EXCEPTION_HANDLER(#, 9)        EXCEPTION_HANDLER(#, 10)EXCEPTION_HANDLER(#, 11)EXCEPTION_HANDLER(#, 12)EXCEPTION_HANDLER(#, 13)EXCEPTION_HANDLER(#, 14)EXCEPTION_HANDLER(#, 15)EXCEPTION_HANDLER(#, 16)EXCEPTION_HANDLER(#, 17)EXCEPTION_HANDLER(#, 18)EXCEPTION_HANDLER(#, 19)EXCEPTION_HANDLER(#, 20)EXCEPTION_HANDLER(#, 21)EXCEPTION_HANDLER(#, 22)EXCEPTION_HANDLER(#, 23)EXCEPTION_HANDLER(#, 24)EXCEPTION_HANDLER(#, 25)EXCEPTION_HANDLER(#, 26)EXCEPTION_HANDLER(#, 27)EXCEPTION_HANDLER(#, 28)EXCEPTION_HANDLER(#, 29)        EXCEPTION_HANDLER(#, 30)EXCEPTION_HANDLER(#, 31)EXCEPTION_HANDLER(#, 32)EXCEPTION_HANDLER(#, 33)EXCEPTION_HANDLER(#, 34)EXCEPTION_HANDLER(#, 35)EXCEPTION_HANDLER(#, 36)EXCEPTION_HANDLER(#, 37)EXCEPTION_HANDLER(#, 38)EXCEPTION_HANDLER(#, 39)        EXCEPTION_HANDLER(#, 40)EXCEPTION_HANDLER(#, 41)EXCEPTION_HANDLER(#, 42)EXCEPTION_HANDLER(#, 43)EXCEPTION_HANDLER(#, 44)EXCEPTION_HANDLER(#, 45)EXCEPTION_HANDLER(#, 46)EXCEPTION_HANDLER(#, 47)EXCEPTION_HANDLER(#, 48)EXCEPTION_HANDLER(#, 49)        EXCEPTION_HANDLER(#, 50)EXCEPTION_HANDLER(#, 51)EXCEPTION_HANDLER(#, 52)EXCEPTION_HANDLER(#, 53)EXCEPTION_HANDLER(#, 54)EXCEPTION_HANDLER(#, 55)EXCEPTION_HANDLER(#, 56)EXCEPTION_HANDLER(#, 57)EXCEPTION_HANDLER(#, 58)EXCEPTION_HANDLER(#, 59)        EXCEPTION_HANDLER(#, 60)EXCEPTION_HANDLER(#, 61)EXCEPTION_HANDLER(#, 62)EXCEPTION_HANDLER(#, 63)EXCEPTION_HANDLER(#, 64)EXCEPTION_HANDLER(#, 65)EXCEPTION_HANDLER(#, 66)EXCEPTION_HANDLER(#, 67)EXCEPTION_HANDLER(#, 68)EXCEPTION_HANDLER(#, 69)        EXCEPTION_HANDLER(#, 70)EXCEPTION_HANDLER(#, 71)EXCEPTION_HANDLER(#, 72)EXCEPTION_HANDLER(#, 73)EXCEPTION_HANDLER(#, 74)EXCEPTION_HANDLER(#, 75)EXCEPTION_HANDLER(#, 76)EXCEPTION_HANDLER(#, 77)EXCEPTION_HANDLER(#, 78)EXCEPTION_HANDLER(#, 79)        EXCEPTION_HANDLER(#, 80)EXCEPTION_HANDLER(#, 81)EXCEPTION_HANDLER(#, 82)EXCEPTION_HANDLER(#, 83)EXCEPTION_HANDLER(#, 84)EXCEPTION_HANDLER(#, 85)EXCEPTION_HANDLER(#, 86)EXCEPTION_HANDLER(#, 87)EXCEPTION_HANDLER(#, 88)EXCEPTION_HANDLER(#, 89)        EXCEPTION_HANDLER(#, 90)EXCEPTION_HANDLER(#, 91)EXCEPTION_HANDLER(#, 92)EXCEPTION_HANDLER(#, 93)EXCEPTION_HANDLER(#, 94)EXCEPTION_HANDLER(#, 95)EXCEPTION_HANDLER(#, 96)EXCEPTION_HANDLER(#, 97)EXCEPTION_HANDLER(#, 98)EXCEPTION_HANDLER(#, 99)        EXCEPTION_HANDLER(#, 100)EXCEPTION_HANDLER(#, 101)EXCEPTION_HANDLER(#, 102)EXCEPTION_HANDLER(#, 103)EXCEPTION_HANDLER(#, 104)EXCEPTION_HANDLER(#, 105)EXCEPTION_HANDLER(#, 106)EXCEPTION_HANDLER(#, 107)EXCEPTION_HANDLER(#, 108)EXCEPTION_HANDLER(#, 109)        EXCEPTION_HANDLER(#, 110)EXCEPTION_HANDLER(#, 111)EXCEPTION_HANDLER(#, 112)EXCEPTION_HANDLER(#, 113)EXCEPTION_HANDLER(#, 114)EXCEPTION_HANDLER(#, 115)EXCEPTION_HANDLER(#, 116)EXCEPTION_HANDLER(#, 117)EXCEPTION_HANDLER(#, 118)EXCEPTION_HANDLER(#, 119)EXCEPTION_HANDLER(#, 120)EXCEPTION_HANDLER(#, 121)EXCEPTION_HANDLER(#, 122)EXCEPTION_HANDLER(#, 123)EXCEPTION_HANDLER(#, 124)EXCEPTION_HANDLER(#, 125)EXCEPTION_HANDLER(#, 126)EXCEPTION_HANDLER(#, 127)EXCEPTION_HANDLER(#, 128)EXCEPTION_HANDLER(#, 129)        EXCEPTION_HANDLER(#, 130)EXCEPTION_HANDLER(#, 131)EXCEPTION_HANDLER(#, 132)EXCEPTION_HANDLER(#, 133)EXCEPTION_HANDLER(#, 134)EXCEPTION_HANDLER(#, 135)EXCEPTION_HANDLER(#, 136)EXCEPTION_HANDLER(#, 137)EXCEPTION_HANDLER(#, 138)EXCEPTION_HANDLER(#, 139)                       EXCEPTION_HANDLER(#, 140)EXCEPTION_HANDLER(#, 141)EXCEPTION_HANDLER(#, 142)EXCEPTION_HANDLER(#, 143)EXCEPTION_HANDLER(#, 144)EXCEPTION_HANDLER(#, 145)EXCEPTION_HANDLER(#, 146)EXCEPTION_HANDLER(#, 147)EXCEPTION_HANDLER(#, 148)EXCEPTION_HANDLER(#, 149)        EXCEPTION_HANDLER(#, 150)EXCEPTION_HANDLER(#, 151)EXCEPTION_HANDLER(#, 152)EXCEPTION_HANDLER(#, 153)EXCEPTION_HANDLER(#, 154)EXCEPTION_HANDLER(#, 155)EXCEPTION_HANDLER(#, 156)EXCEPTION_HANDLER(#, 157)EXCEPTION_HANDLER(#, 158)EXCEPTION_HANDLER(#, 159)                       EXCEPTION_HANDLER(#, 160)EXCEPTION_HANDLER(#, 161)EXCEPTION_HANDLER(#, 162)EXCEPTION_HANDLER(#, 163)EXCEPTION_HANDLER(#, 164)EXCEPTION_HANDLER(#, 165)EXCEPTION_HANDLER(#, 166)EXCEPTION_HANDLER(#, 167)EXCEPTION_HANDLER(#, 168)EXCEPTION_HANDLER(#, 169)        EXCEPTION_HANDLER(#, 170)EXCEPTION_HANDLER(#, 171)EXCEPTION_HANDLER(#, 172)EXCEPTION_HANDLER(#, 173)EXCEPTION_HANDLER(#, 174)EXCEPTION_HANDLER(#, 175)EXCEPTION_HANDLER(#, 176)EXCEPTION_HANDLER(#, 177)EXCEPTION_HANDLER(#, 178)EXCEPTION_HANDLER(#, 179)                       EXCEPTION_HANDLER(#, 180)EXCEPTION_HANDLER(#, 181)EXCEPTION_HANDLER(#, 182)EXCEPTION_HANDLER(#, 183)EXCEPTION_HANDLER(#, 184)EXCEPTION_HANDLER(#, 185)EXCEPTION_HANDLER(#, 186)EXCEPTION_HANDLER(#, 187)EXCEPTION_HANDLER(#, 188)EXCEPTION_HANDLER(#, 189)        EXCEPTION_HANDLER(#, 190)EXCEPTION_HANDLER(#, 191)EXCEPTION_HANDLER(#, 192)EXCEPTION_HANDLER(#, 193)EXCEPTION_HANDLER(#, 194)EXCEPTION_HANDLER(#, 195)EXCEPTION_HANDLER(#, 196)EXCEPTION_HANDLER(#, 197)EXCEPTION_HANDLER(#, 198)EXCEPTION_HANDLER(#, 199)        EXCEPTION_HANDLER(#, 200)EXCEPTION_HANDLER(#, 201)EXCEPTION_HANDLER(#, 202)EXCEPTION_HANDLER(#, 203)EXCEPTION_HANDLER(#, 204)EXCEPTION_HANDLER(#, 205)EXCEPTION_HANDLER(#, 206)EXCEPTION_HANDLER(#, 207)EXCEPTION_HANDLER(#, 208)EXCEPTION_HANDLER(#, 209)                      EXCEPTION_HANDLER(#, 210)EXCEPTION_HANDLER(#, 211)EXCEPTION_HANDLER(#, 212)EXCEPTION_HANDLER(#, 213)EXCEPTION_HANDLER(#, 214)EXCEPTION_HANDLER(#, 215)EXCEPTION_HANDLER(#, 216)EXCEPTION_HANDLER(#, 217)EXCEPTION_HANDLER(#, 218)EXCEPTION_HANDLER(#, 219)                      EXCEPTION_HANDLER(#, 220)EXCEPTION_HANDLER(#, 221)EXCEPTION_HANDLER(#, 222)EXCEPTION_HANDLER(#, 223)EXCEPTION_HANDLER(#, 224)EXCEPTION_HANDLER(#, 225)EXCEPTION_HANDLER(#, 226)EXCEPTION_HANDLER(#, 227)EXCEPTION_HANDLER(#, 228)EXCEPTION_HANDLER(#, 229)                      EXCEPTION_HANDLER(#, 230)EXCEPTION_HANDLER(#, 231)EXCEPTION_HANDLER(#, 232)EXCEPTION_HANDLER(#, 233)EXCEPTION_HANDLER(#, 234)EXCEPTION_HANDLER(#, 235)EXCEPTION_HANDLER(#, 236)EXCEPTION_HANDLER(#, 237)EXCEPTION_HANDLER(#, 238)EXCEPTION_HANDLER(#, 239)                      EXCEPTION_HANDLER(#, 240)EXCEPTION_HANDLER(#, 241)EXCEPTION_HANDLER(#, 242)EXCEPTION_HANDLER(#, 243)EXCEPTION_HANDLER(#, 244)EXCEPTION_HANDLER(#, 245)EXCEPTION_HANDLER(#, 246)EXCEPTION_HANDLER(#, 247)EXCEPTION_HANDLER(#, 248)EXCEPTION_HANDLER(#, 249)                      EXCEPTION_HANDLER(#, 250)EXCEPTION_HANDLER(#, 251)EXCEPTION_HANDLER(#, 252)EXCEPTION_HANDLER(#, 253)EXCEPTION_HANDLER(#, 254)EXCEPTION_HANDLER(#, 255)                                common_exception_handler:         |        | Need to put the format/vector above the PC and status register        |        move.l  %d0,-(%sp)                      | free a register        move.w  4(%sp),%d0                      | get the format/vector id        |        | If a bus error or address error then trash the extra        | data saved on the stack        |        cmp.w   #0x0008,%d0        beq     ceh_10        cmp.w   #0x000C,%d0        beq     ceh_10        bra     ceh_20ceh_10:                      move.w  %d0,12(%sp)                     | need to move the format/id        move.l  (%sp)+,%d0                      | recover d0        addq    #8,%sp                          | trash the stack        move.l  %d0,-(%sp)                      | free a register, again        move.w  4(%sp),%d0                      | get the format/vector id        ceh_20:        move.w  6(%sp),4(%sp)        move.w  8(%sp),6(%sp)        move.w  10(%sp),8(%sp)        move.w  %d0,10(%sp)                     | put the format/vector id        move.l  (%sp)+,%d0        |        | Save all the registers, pass control to a dump trace routine        |        movem.l %d0-%d7/%a0-%a7,%sp@-        |        | check to see if ROM is mapped to zero        |        move.l  #(ROM_SIZE - 1),%d1        not.l   %d1        lea.l   %pc@(0),%a0                     | were are we currently        move.l  %a0,%d0                         | need to use a data register        and.l   %d1,%d0                         | keep the top part of the address        move.l  #trace_exception,%d1            | get the linked address        and.l   #(ROM_SIZE - 1),%d1             | obtain the offset into the ROM        or.l    %d1,%d0                         | apply it to the trace exception offset        move.l  %d0,%a0                         | need an address register for jumping        jsr     %a0@(0)ceh_30:                         jmp     ceh_30|| The RAM based vector table|        .sect   .vtable        .global vector_tablevector_table:           .space  (256 * 4),0|                | Initialised data|        .sect   .data                .global start_frame        start_frame:        .space  4,0|| Uninitialised data|        .sect   .bss                .global environ        .align  2        environ:        .long   0        .global heap_size        .set    heap_size,0x2000        .global stack_size        .set    stack_size,0x1000        .global stack_start        stack_start:stack_base:        .space  0x2000, 0stack_end:        .long   0 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -