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

📄 reset.s

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 S
📖 第 1 页 / 共 2 页
字号:
/*   *  $Id: reset.S,v 1.5.2.2 2003/09/04 17:30:47 joel Exp $ * *  Re-written the gen68302 start-up code. *   *  Uses gas syntax only, removed the OAR asm.h. *   *  Supplies a complete vector table in ROM. *   *  Manages all vectors with seperate handlers to trap unhandled *  execptions. *   *  Uses the target specific header file to get the runtime  *  configuration *   *  COPYRIGHT (c) 1996 *  Objective Design Systems Pty Ltd (ODS) *         *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. *  On-Line Applications Research Corporation (OAR). */|| some basic defined, this is that is required|#define MC68302_BAR                0x000000F2#define MC68302_BAR_FC_CFC         0x0000#define MC68302_SYS_RAM_SIZE       0x240|| Boot boot code in a special section, ld postions|| Initial stack pointer is in the dual ported RAM|        .sect   .resettext        .global M68Kvec                 | Vector Table        M68Kvec:                                | standard location for vectors        || Make relative, can have the code positioned any where|V___ISSP: .long  MC68302_BASE + MC68302_SYS_RAM_SIZEV____IPC: .long  start - V___ISSP        || Create the rest of the vector table to point to the unhandled expection| handler|| Lots of macros, how-ever it creates a simple ROM vector table|exception_handler = unhandled_exception - V___ISSP#define MAKE_EXCEPTION_VECTOR(n) V___##n: .long (exception_handler + (n * 8))MAKE_EXCEPTION_VECTOR(2)MAKE_EXCEPTION_VECTOR(3)MAKE_EXCEPTION_VECTOR(4)MAKE_EXCEPTION_VECTOR(5)MAKE_EXCEPTION_VECTOR(6)MAKE_EXCEPTION_VECTOR(7)MAKE_EXCEPTION_VECTOR(8)MAKE_EXCEPTION_VECTOR(9)        MAKE_EXCEPTION_VECTOR(10)MAKE_EXCEPTION_VECTOR(11)MAKE_EXCEPTION_VECTOR(12)MAKE_EXCEPTION_VECTOR(13)MAKE_EXCEPTION_VECTOR(14)MAKE_EXCEPTION_VECTOR(15)MAKE_EXCEPTION_VECTOR(16)MAKE_EXCEPTION_VECTOR(17)MAKE_EXCEPTION_VECTOR(18)MAKE_EXCEPTION_VECTOR(19)MAKE_EXCEPTION_VECTOR(20)MAKE_EXCEPTION_VECTOR(21)MAKE_EXCEPTION_VECTOR(22)MAKE_EXCEPTION_VECTOR(23)MAKE_EXCEPTION_VECTOR(24)MAKE_EXCEPTION_VECTOR(25)MAKE_EXCEPTION_VECTOR(26)MAKE_EXCEPTION_VECTOR(27)MAKE_EXCEPTION_VECTOR(28)MAKE_EXCEPTION_VECTOR(29)        MAKE_EXCEPTION_VECTOR(30)MAKE_EXCEPTION_VECTOR(31)MAKE_EXCEPTION_VECTOR(32)MAKE_EXCEPTION_VECTOR(33)MAKE_EXCEPTION_VECTOR(34)MAKE_EXCEPTION_VECTOR(35)MAKE_EXCEPTION_VECTOR(36)MAKE_EXCEPTION_VECTOR(37)MAKE_EXCEPTION_VECTOR(38)MAKE_EXCEPTION_VECTOR(39)        MAKE_EXCEPTION_VECTOR(40)MAKE_EXCEPTION_VECTOR(41)MAKE_EXCEPTION_VECTOR(42)MAKE_EXCEPTION_VECTOR(43)MAKE_EXCEPTION_VECTOR(44)MAKE_EXCEPTION_VECTOR(45)MAKE_EXCEPTION_VECTOR(46)MAKE_EXCEPTION_VECTOR(47)MAKE_EXCEPTION_VECTOR(48)MAKE_EXCEPTION_VECTOR(49)        MAKE_EXCEPTION_VECTOR(50)MAKE_EXCEPTION_VECTOR(51)MAKE_EXCEPTION_VECTOR(52)MAKE_EXCEPTION_VECTOR(53)MAKE_EXCEPTION_VECTOR(54)MAKE_EXCEPTION_VECTOR(55)MAKE_EXCEPTION_VECTOR(56)MAKE_EXCEPTION_VECTOR(57)MAKE_EXCEPTION_VECTOR(58)MAKE_EXCEPTION_VECTOR(59)        MAKE_EXCEPTION_VECTOR(60)MAKE_EXCEPTION_VECTOR(61)MAKE_EXCEPTION_VECTOR(62)MAKE_EXCEPTION_VECTOR(63)MAKE_EXCEPTION_VECTOR(64)MAKE_EXCEPTION_VECTOR(65)MAKE_EXCEPTION_VECTOR(66)MAKE_EXCEPTION_VECTOR(67)MAKE_EXCEPTION_VECTOR(68)MAKE_EXCEPTION_VECTOR(69)        MAKE_EXCEPTION_VECTOR(70)MAKE_EXCEPTION_VECTOR(71)MAKE_EXCEPTION_VECTOR(72)MAKE_EXCEPTION_VECTOR(73)MAKE_EXCEPTION_VECTOR(74)MAKE_EXCEPTION_VECTOR(75)MAKE_EXCEPTION_VECTOR(76)MAKE_EXCEPTION_VECTOR(77)MAKE_EXCEPTION_VECTOR(78)MAKE_EXCEPTION_VECTOR(79)        MAKE_EXCEPTION_VECTOR(80)MAKE_EXCEPTION_VECTOR(81)MAKE_EXCEPTION_VECTOR(82)MAKE_EXCEPTION_VECTOR(83)MAKE_EXCEPTION_VECTOR(84)MAKE_EXCEPTION_VECTOR(85)MAKE_EXCEPTION_VECTOR(86)MAKE_EXCEPTION_VECTOR(87)MAKE_EXCEPTION_VECTOR(88)MAKE_EXCEPTION_VECTOR(89)        MAKE_EXCEPTION_VECTOR(90)MAKE_EXCEPTION_VECTOR(91)MAKE_EXCEPTION_VECTOR(92)MAKE_EXCEPTION_VECTOR(93)MAKE_EXCEPTION_VECTOR(94)MAKE_EXCEPTION_VECTOR(95)MAKE_EXCEPTION_VECTOR(96)MAKE_EXCEPTION_VECTOR(97)MAKE_EXCEPTION_VECTOR(98)MAKE_EXCEPTION_VECTOR(99)        MAKE_EXCEPTION_VECTOR(100)MAKE_EXCEPTION_VECTOR(101)MAKE_EXCEPTION_VECTOR(102)MAKE_EXCEPTION_VECTOR(103)MAKE_EXCEPTION_VECTOR(104)MAKE_EXCEPTION_VECTOR(105)MAKE_EXCEPTION_VECTOR(106)MAKE_EXCEPTION_VECTOR(107)MAKE_EXCEPTION_VECTOR(108)MAKE_EXCEPTION_VECTOR(109)        MAKE_EXCEPTION_VECTOR(110)MAKE_EXCEPTION_VECTOR(111)MAKE_EXCEPTION_VECTOR(112)MAKE_EXCEPTION_VECTOR(113)MAKE_EXCEPTION_VECTOR(114)MAKE_EXCEPTION_VECTOR(115)MAKE_EXCEPTION_VECTOR(116)MAKE_EXCEPTION_VECTOR(117)MAKE_EXCEPTION_VECTOR(118)MAKE_EXCEPTION_VECTOR(119)MAKE_EXCEPTION_VECTOR(120)MAKE_EXCEPTION_VECTOR(121)MAKE_EXCEPTION_VECTOR(122)MAKE_EXCEPTION_VECTOR(123)MAKE_EXCEPTION_VECTOR(124)MAKE_EXCEPTION_VECTOR(125)MAKE_EXCEPTION_VECTOR(126)MAKE_EXCEPTION_VECTOR(127)MAKE_EXCEPTION_VECTOR(128)MAKE_EXCEPTION_VECTOR(129)        MAKE_EXCEPTION_VECTOR(130)MAKE_EXCEPTION_VECTOR(131)MAKE_EXCEPTION_VECTOR(132)MAKE_EXCEPTION_VECTOR(133)MAKE_EXCEPTION_VECTOR(134)MAKE_EXCEPTION_VECTOR(135)MAKE_EXCEPTION_VECTOR(136)MAKE_EXCEPTION_VECTOR(137)MAKE_EXCEPTION_VECTOR(138)MAKE_EXCEPTION_VECTOR(139)                       MAKE_EXCEPTION_VECTOR(140)MAKE_EXCEPTION_VECTOR(141)MAKE_EXCEPTION_VECTOR(142)MAKE_EXCEPTION_VECTOR(143)MAKE_EXCEPTION_VECTOR(144)MAKE_EXCEPTION_VECTOR(145)MAKE_EXCEPTION_VECTOR(146)MAKE_EXCEPTION_VECTOR(147)MAKE_EXCEPTION_VECTOR(148)MAKE_EXCEPTION_VECTOR(149)        MAKE_EXCEPTION_VECTOR(150)MAKE_EXCEPTION_VECTOR(151)MAKE_EXCEPTION_VECTOR(152)MAKE_EXCEPTION_VECTOR(153)MAKE_EXCEPTION_VECTOR(154)MAKE_EXCEPTION_VECTOR(155)MAKE_EXCEPTION_VECTOR(156)MAKE_EXCEPTION_VECTOR(157)MAKE_EXCEPTION_VECTOR(158)MAKE_EXCEPTION_VECTOR(159)                       MAKE_EXCEPTION_VECTOR(160)MAKE_EXCEPTION_VECTOR(161)MAKE_EXCEPTION_VECTOR(162)MAKE_EXCEPTION_VECTOR(163)MAKE_EXCEPTION_VECTOR(164)MAKE_EXCEPTION_VECTOR(165)MAKE_EXCEPTION_VECTOR(166)MAKE_EXCEPTION_VECTOR(167)MAKE_EXCEPTION_VECTOR(168)MAKE_EXCEPTION_VECTOR(169)        MAKE_EXCEPTION_VECTOR(170)MAKE_EXCEPTION_VECTOR(171)MAKE_EXCEPTION_VECTOR(172)MAKE_EXCEPTION_VECTOR(173)MAKE_EXCEPTION_VECTOR(174)MAKE_EXCEPTION_VECTOR(175)MAKE_EXCEPTION_VECTOR(176)MAKE_EXCEPTION_VECTOR(177)MAKE_EXCEPTION_VECTOR(178)MAKE_EXCEPTION_VECTOR(179)                       MAKE_EXCEPTION_VECTOR(180)MAKE_EXCEPTION_VECTOR(181)MAKE_EXCEPTION_VECTOR(182)MAKE_EXCEPTION_VECTOR(183)MAKE_EXCEPTION_VECTOR(184)MAKE_EXCEPTION_VECTOR(185)MAKE_EXCEPTION_VECTOR(186)MAKE_EXCEPTION_VECTOR(187)MAKE_EXCEPTION_VECTOR(188)MAKE_EXCEPTION_VECTOR(189)        MAKE_EXCEPTION_VECTOR(190)MAKE_EXCEPTION_VECTOR(191)MAKE_EXCEPTION_VECTOR(192)MAKE_EXCEPTION_VECTOR(193)MAKE_EXCEPTION_VECTOR(194)MAKE_EXCEPTION_VECTOR(195)MAKE_EXCEPTION_VECTOR(196)MAKE_EXCEPTION_VECTOR(197)MAKE_EXCEPTION_VECTOR(198)MAKE_EXCEPTION_VECTOR(199)        MAKE_EXCEPTION_VECTOR(200)MAKE_EXCEPTION_VECTOR(201)MAKE_EXCEPTION_VECTOR(202)MAKE_EXCEPTION_VECTOR(203)MAKE_EXCEPTION_VECTOR(204)MAKE_EXCEPTION_VECTOR(205)MAKE_EXCEPTION_VECTOR(206)MAKE_EXCEPTION_VECTOR(207)MAKE_EXCEPTION_VECTOR(208)MAKE_EXCEPTION_VECTOR(209)                      MAKE_EXCEPTION_VECTOR(210)MAKE_EXCEPTION_VECTOR(211)MAKE_EXCEPTION_VECTOR(212)MAKE_EXCEPTION_VECTOR(213)MAKE_EXCEPTION_VECTOR(214)MAKE_EXCEPTION_VECTOR(215)MAKE_EXCEPTION_VECTOR(216)MAKE_EXCEPTION_VECTOR(217)MAKE_EXCEPTION_VECTOR(218)MAKE_EXCEPTION_VECTOR(219)                      MAKE_EXCEPTION_VECTOR(220)MAKE_EXCEPTION_VECTOR(221)MAKE_EXCEPTION_VECTOR(222)MAKE_EXCEPTION_VECTOR(223)MAKE_EXCEPTION_VECTOR(224)MAKE_EXCEPTION_VECTOR(225)MAKE_EXCEPTION_VECTOR(226)MAKE_EXCEPTION_VECTOR(227)MAKE_EXCEPTION_VECTOR(228)MAKE_EXCEPTION_VECTOR(229)                      MAKE_EXCEPTION_VECTOR(230)MAKE_EXCEPTION_VECTOR(231)MAKE_EXCEPTION_VECTOR(232)MAKE_EXCEPTION_VECTOR(233)MAKE_EXCEPTION_VECTOR(234)MAKE_EXCEPTION_VECTOR(235)MAKE_EXCEPTION_VECTOR(236)MAKE_EXCEPTION_VECTOR(237)MAKE_EXCEPTION_VECTOR(238)MAKE_EXCEPTION_VECTOR(239)                      MAKE_EXCEPTION_VECTOR(240)MAKE_EXCEPTION_VECTOR(241)MAKE_EXCEPTION_VECTOR(242)MAKE_EXCEPTION_VECTOR(243)MAKE_EXCEPTION_VECTOR(244)MAKE_EXCEPTION_VECTOR(245)MAKE_EXCEPTION_VECTOR(246)MAKE_EXCEPTION_VECTOR(247)MAKE_EXCEPTION_VECTOR(248)MAKE_EXCEPTION_VECTOR(249)                      MAKE_EXCEPTION_VECTOR(250)MAKE_EXCEPTION_VECTOR(251)MAKE_EXCEPTION_VECTOR(252)MAKE_EXCEPTION_VECTOR(253)MAKE_EXCEPTION_VECTOR(254)MAKE_EXCEPTION_VECTOR(255)                                || Start|| Entered from a hardware reset.|                .global start                           | Default entry point for GNUstart:        move.w  #0x2700,%sr                     | Disable all interrupts        |        | Program the BAR, give us a stack !!        |        moveq   #0,%d0        | Joel: With the change of MC68302_BASE from a #define to a linker	|       symbol, the following 4 instructions replace this one:        |          move.w  #(MC68302_BASE >> 12),%d0        move.l  #MC68302_BASE,%d0        moveq.l #12,%d1        lsr.l   %d1,%d0        and.l   #0xFFFF,%d0        or.w    #(MC68302_BAR_FC_CFC << 12),%d0        move.l  #MC68302_BAR,%a0        move.w  %d0,%a0@(0)        |        | watch for sign extended maths with the linker on (boot_phase_1-V___ISSP)        | manage the address with code, limited address of 2K at reset for CS0        |                move.l  #boot_phase_1,%d0        and.l   #0x1FFF,%d0        move.l  %d0,%a0        jsr     %a0@(0)                         | programs all basic 302 registers                |        | Map to the 68302 registers        |                move.l  #MC68302_BASE,%a5                |        | Make a vector table in RAM        |                move.l  #RAM_BASE,%a0                   | a0 -> rom vector table        moveal  #ROM_BASE,%a1                   | d1 -> start of tmp SRAM                move.l  #255,%d0        copy_vec_table:        move.l  (%a0)+,%d1        or.l    #ROM_BASE,%d1        move.l  %d1,(%a1)+        subq.l  #1,%d0        bne     copy_vec_table#if defined(SYSTEM_TABLE_ANCHOR_OFFSET)                |        | Clear the system table        |        move.l  #SYSTEM_TABLE_ANCHOR_OFFSET,%a0        move.l  #0,(%a0)#endif                |        | Copy the chip select swap code to DPRAM and run it        |                move.l  #boot_phase_2,%d0        and.l   #(ROM_SIZE - 1),%d0        move.l  %d0,%a0                         | a0 -> remap code        lea     %a5@(0),%a1                     | a1 -> internal system RAM        move.l  #boot_phase_3,%d0        and.l   #(ROM_SIZE - 1),%d0        sub.l   %a0,%d0        copy_remap:        move.b  (%a0)+,(%a1)+                   | copy        dbra    %d0,copy_remap        |        | Jump to the remap code in the 68302''s internal system RAM.        |        jsr     %a5@(0)                         | execute the swap code        |        | Map to the 68302 registers        |                move.l  #MC68302_BASE,%a5                |        | Copy initialized data area from ROM to RAM        |copy_data:

⌨️ 快捷键说明

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