File indexing completed on 2025-05-11 08:23:44
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #include <rtems/asm.h>
0031 #include <bsp.h>
0032
0033 BEGIN_CODE
0034
0035
0036 #define INITIAL_STACK BSP_MEM_ADDR_SRAM+BSP_MEM_SIZE_SRAM-4
0037
0038 PUBLIC (INTERRUPT_VECTOR)
0039 SYM(INTERRUPT_VECTOR):
0040 .long INITIAL_STACK | 00: initial SSP
0041 .long start | 01: Initial PC
0042 .long _unexp_exception | 02: Access Error
0043 .long _unexp_exception | 03: Address Error
0044 .long _unexp_exception | 04: Illegal Instruction
0045 .long _reserved_int | 05: Reserved
0046 .long _reserved_int | 06: Reserved
0047 .long _reserved_int | 07: Reserved
0048 .long _unexp_exception | 08: Priveledge Violation
0049 .long _unexp_exception | 09: Trace
0050 .long _unexp_exception | 0A: Unimplemented A-Line
0051 .long _unexp_exception | 0B: Unimplemented F-Line
0052 .long _unexp_exception | 0C: Debug interrupt
0053 .long _reserved_int | 0D: Reserved
0054 .long _unexp_exception | 0E: Format error
0055 .long _unexp_exception | 0F: Uninitialized interrupt
0056 .long _reserved_int | 10: Reserved
0057 .long _reserved_int | 11: Reserved
0058 .long _reserved_int | 12: Reserved
0059 .long _reserved_int | 13: Reserved
0060 .long _reserved_int | 14: Reserved
0061 .long _reserved_int | 15: Reserved
0062 .long _reserved_int | 16: Reserved
0063 .long _reserved_int | 17: Reserved
0064 .long _spurious_int | 18: Spurious interrupt
0065 .long _avec1_int | 19: Autovector Level 1
0066 .long _avec2_int | 1A: Autovector Level 2
0067 .long _avec3_int | 1B: Autovector Level 3
0068 .long _avec4_int | 1C: Autovector Level 4
0069 .long _avec5_int | 1D: Autovector Level 5
0070 .long _avec6_int | 1E: Autovector Level 6
0071 .long _avec7_int | 1F: Autovector Level 7
0072 .long _unexp_exception | 20: TRAP #0
0073 .long _unexp_exception | 21: TRAP #1
0074 .long _unexp_exception | 22: TRAP #2
0075 .long _unexp_exception | 23: TRAP #3
0076 .long _unexp_exception | 24: TRAP #4
0077 .long _unexp_exception | 25: TRAP #5
0078 .long _unexp_exception | 26: TRAP #6
0079 .long _unexp_exception | 27: TRAP #7
0080 .long _unexp_exception | 28: TRAP #8
0081 .long _unexp_exception | 29: TRAP #9
0082 .long _unexp_exception | 2A: TRAP #10
0083 .long _unexp_exception | 2B: TRAP #11
0084 .long _unexp_exception | 2C: TRAP #12
0085 .long _unexp_exception | 2D: TRAP #13
0086 .long _unexp_exception | 2E: TRAP #14
0087 .long _unexp_exception | 2F: TRAP #15
0088 .long _reserved_int | 30: Reserved
0089 .long _reserved_int | 31: Reserved
0090 .long _reserved_int | 32: Reserved
0091 .long _reserved_int | 33: Reserved
0092 .long _reserved_int | 34: Reserved
0093 .long _reserved_int | 35: Reserved
0094 .long _reserved_int | 36: Reserved
0095 .long _reserved_int | 37: Reserved
0096 .long _reserved_int | 38: Reserved
0097 .long _reserved_int | 39: Reserved
0098 .long _reserved_int | 3A: Reserved
0099 .long _reserved_int | 3B: Reserved
0100 .long _reserved_int | 3C: Reserved
0101 .long _reserved_int | 3D: Reserved
0102 .long _reserved_int | 3E: Reserved
0103 .long _reserved_int | 3F: Reserved
0104
0105 .long _unexp_int | 40-FF: User defined interrupts
0106 .long _unexp_int
0107 .long _unexp_int
0108 .long _unexp_int
0109 .long _unexp_int
0110 .long _unexp_int
0111 .long _unexp_int
0112 .long _unexp_int
0113 .long _unexp_int
0114 .long _unexp_int
0115 .long _unexp_int
0116 .long _unexp_int
0117 .long _unexp_int
0118 .long _unexp_int
0119 .long _unexp_int
0120 .long _unexp_int
0121
0122 .long _unexp_int | 50:
0123 .long _unexp_int
0124 .long _unexp_int
0125 .long _unexp_int
0126 .long _unexp_int
0127 .long _unexp_int
0128 .long _unexp_int
0129 .long _unexp_int
0130 .long _unexp_int
0131 .long _unexp_int
0132 .long _unexp_int
0133 .long _unexp_int
0134 .long _unexp_int
0135 .long _unexp_int
0136 .long _unexp_int
0137 .long _unexp_int
0138
0139 .long _unexp_int | 60:
0140 .long _unexp_int
0141 .long _unexp_int
0142 .long _unexp_int
0143 .long _unexp_int
0144 .long _unexp_int
0145 .long _unexp_int
0146 .long _unexp_int
0147 .long _unexp_int
0148 .long _unexp_int
0149 .long _unexp_int
0150 .long _unexp_int
0151 .long _unexp_int
0152 .long _unexp_int
0153 .long _unexp_int
0154 .long _unexp_int
0155
0156 .long _unexp_int | 70:
0157 .long _unexp_int
0158 .long _unexp_int
0159 .long _unexp_int
0160 .long _unexp_int
0161 .long _unexp_int
0162 .long _unexp_int
0163 .long _unexp_int
0164 .long _unexp_int
0165 .long _unexp_int
0166 .long _unexp_int
0167 .long _unexp_int
0168 .long _unexp_int
0169 .long _unexp_int
0170 .long _unexp_int
0171 .long _unexp_int
0172
0173 .long _unexp_int | 80:
0174 .long _unexp_int
0175 .long _unexp_int
0176 .long _unexp_int
0177 .long _unexp_int
0178 .long _unexp_int
0179 .long _unexp_int
0180 .long _unexp_int
0181 .long _unexp_int
0182 .long _unexp_int
0183 .long _unexp_int
0184 .long _unexp_int
0185 .long _unexp_int
0186 .long _unexp_int
0187 .long _unexp_int
0188 .long _unexp_int
0189
0190 .long _unexp_int | 90:
0191 .long _unexp_int
0192 .long _unexp_int
0193 .long _unexp_int
0194 .long _unexp_int
0195 .long _unexp_int
0196 .long _unexp_int
0197 .long _unexp_int
0198 .long _unexp_int
0199 .long _unexp_int
0200 .long _unexp_int
0201 .long _unexp_int
0202 .long _unexp_int
0203 .long _unexp_int
0204 .long _unexp_int
0205 .long _unexp_int
0206
0207 .long _unexp_int | A0:
0208 .long _unexp_int
0209 .long _unexp_int
0210 .long _unexp_int
0211 .long _unexp_int
0212 .long _unexp_int
0213 .long _unexp_int
0214 .long _unexp_int
0215 .long _unexp_int
0216 .long _unexp_int
0217 .long _unexp_int
0218 .long _unexp_int
0219 .long _unexp_int
0220 .long _unexp_int
0221 .long _unexp_int
0222 .long _unexp_int
0223
0224 .long _unexp_int | B0:
0225 .long _unexp_int
0226 .long _unexp_int
0227 .long _unexp_int
0228 .long _unexp_int
0229 .long _unexp_int
0230 .long _unexp_int
0231 .long _unexp_int
0232 .long _unexp_int
0233 .long _unexp_int
0234 .long _unexp_int
0235 .long _unexp_int
0236 .long _unexp_int
0237 .long _unexp_int
0238 .long _unexp_int
0239 .long _unexp_int
0240
0241 .long _unexp_int | C0:
0242 .long _unexp_int
0243 .long _unexp_int
0244 .long _unexp_int
0245 .long _unexp_int
0246 .long _unexp_int
0247 .long _unexp_int
0248 .long _unexp_int
0249 .long _unexp_int
0250 .long _unexp_int
0251 .long _unexp_int
0252 .long _unexp_int
0253 .long _unexp_int
0254 .long _unexp_int
0255 .long _unexp_int
0256 .long _unexp_int
0257
0258 .long _unexp_int | D0:
0259 .long _unexp_int
0260 .long _unexp_int
0261 .long _unexp_int
0262 .long _unexp_int
0263 .long _unexp_int
0264 .long _unexp_int
0265 .long _unexp_int
0266 .long _unexp_int
0267 .long _unexp_int
0268 .long _unexp_int
0269 .long _unexp_int
0270 .long _unexp_int
0271 .long _unexp_int
0272 .long _unexp_int
0273 .long _unexp_int
0274
0275 .long _unexp_int | E0:
0276 .long _unexp_int
0277 .long _unexp_int
0278 .long _unexp_int
0279 .long _unexp_int
0280 .long _unexp_int
0281 .long _unexp_int
0282 .long _unexp_int
0283 .long _unexp_int
0284 .long _unexp_int
0285 .long _unexp_int
0286 .long _unexp_int
0287 .long _unexp_int
0288 .long _unexp_int
0289 .long _unexp_int
0290 .long _unexp_int
0291
0292 .long _unexp_int | F0:
0293 .long _unexp_int
0294 .long _unexp_int
0295 .long _unexp_int
0296 .long _unexp_int
0297 .long _unexp_int
0298 .long _unexp_int
0299 .long _unexp_int
0300 .long _unexp_int
0301 .long _unexp_int
0302 .long _unexp_int
0303 .long _unexp_int
0304 .long _unexp_int
0305 .long _unexp_int
0306 .long _unexp_int
0307 .long _unexp_int
0308
0309 PUBLIC(start)
0310 SYM(start):
0311 move.w #0x2700,sr | First turn off all interrupts!
0312
0313 move.l #(BSP_RAMBAR + MCF5272_RAMBAR_V), d0
0314 movec d0,rambar0 | ...so we have a stack
0315
0316 move.l #(INITIAL_STACK),sp | Set up stack again (may be we are
0317 | going here from monitor or with
0318 | BDM interface assistance)
0319
0320
0321
0322
0323 jmp SYM(init5272) | Start C code (which never returns)
0324
0325
0326
0327
0328
0329
0330 PUBLIC (clear_bss)
0331 SYM(clear_bss):
0332 lea clear_start,a0 | Get start of BSS
0333 lea clear_end,a1 | Get end of BSS
0334 clrl d0 | Value to set
0335 bra.s ZEROLOOPTEST | Branch into clear loop
0336 ZEROLOOP:
0337 movel d0,a0@+ | Clear a word
0338 ZEROLOOPTEST:
0339 cmpl a1,a0 | Done?
0340 bcs.s ZEROLOOP | No, skip
0341
0342 rts
0343
0344
0345
0346
0347 PUBLIC (start_csb360)
0348 SYM(start_csb360):
0349
0350
0351
0352 move.l #_ISR_Stack_area_end,sp | Use configuration defined stack
0353 clrl d0 | Pass in null to all boot_card() params
0354 movel d0,a7@- | command line
0355 jsr SYM(boot_card) | Call C boot_card function to startup RTEMS
0356
0357
0358
0359 # Wait forever
0360 _stop:
0361 nop
0362 stop #0x2700
0363 jmp _stop
0364
0365 # The following labelled nops is a placeholders for breakpoints
0366 _unexp_exception:
0367 nop
0368 jmp _stop
0369
0370 _unexp_int:
0371 nop
0372 jmp _stop
0373
0374 _reserved_int:
0375 nop
0376 jmp _stop
0377
0378 _spurious_int:
0379 nop
0380 jmp _stop
0381
0382 _avec1_int:
0383 nop
0384 jmp _unexp_int
0385
0386 _avec2_int:
0387 nop
0388 jmp _unexp_int
0389
0390 _avec3_int:
0391 nop
0392 jmp _unexp_int
0393
0394 _avec4_int:
0395 nop
0396 jmp _unexp_int
0397
0398 _avec5_int:
0399 nop
0400 jmp _unexp_int
0401
0402 _avec6_int:
0403 nop
0404 jmp _unexp_int
0405
0406 _avec7_int:
0407 nop
0408 jmp _unexp_int
0409
0410
0411 END_CODE
0412
0413 END
0414