summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/mcf5206elite/start/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/m68k/mcf5206elite/start/start.S')
-rw-r--r--c/src/lib/libbsp/m68k/mcf5206elite/start/start.S415
1 files changed, 0 insertions, 415 deletions
diff --git a/c/src/lib/libbsp/m68k/mcf5206elite/start/start.S b/c/src/lib/libbsp/m68k/mcf5206elite/start/start.S
deleted file mode 100644
index 57848ff92b..0000000000
--- a/c/src/lib/libbsp/m68k/mcf5206elite/start/start.S
+++ /dev/null
@@ -1,415 +0,0 @@
-/*
- * MCF5206eLITE startup code
- *
- * This file contains the entry point for the application.
- * The name of this entry point is compiler dependent.
- * It jumps to the BSP which is responsible for performing
- * all initialization.
- */
-
-/*
- * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
- * Author: Victor V. Vengerov <vvv@oktet.ru>
- *
- * Based on work:
- * Author:
- * David Fiddes, D.J@fiddes.surfaid.org
- * http://www.calm.hw.ac.uk/davidf/coldfire/
- *
- * COPYRIGHT (c) 1989-1998.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#include <rtems/asm.h>
-#include "bsp.h"
-
-BEGIN_CODE
-
-/* Initial stack situated in on-chip static memory */
-#define INITIAL_STACK BSP_MEM_ADDR_SRAM+BSP_MEM_SIZE_SRAM-4
-
- PUBLIC (INTERRUPT_VECTOR)
-SYM(INTERRUPT_VECTOR):
- .long INITIAL_STACK | 00: initial SSP
- .long start | 01: Initial PC
- .long _unexp_exception | 02: Access Error
- .long _unexp_exception | 03: Address Error
- .long _unexp_exception | 04: Illegal Instruction
- .long _reserved_int | 05: Reserved
- .long _reserved_int | 06: Reserved
- .long _reserved_int | 07: Reserved
- .long _unexp_exception | 08: Priveledge Violation
- .long _unexp_exception | 09: Trace
- .long _unexp_exception | 0A: Unimplemented A-Line
- .long _unexp_exception | 0B: Unimplemented F-Line
- .long _unexp_exception | 0C: Debug interrupt
- .long _reserved_int | 0D: Reserved
- .long _unexp_exception | 0E: Format error
- .long _unexp_exception | 0F: Uninitialized interrupt
- .long _reserved_int | 10: Reserved
- .long _reserved_int | 11: Reserved
- .long _reserved_int | 12: Reserved
- .long _reserved_int | 13: Reserved
- .long _reserved_int | 14: Reserved
- .long _reserved_int | 15: Reserved
- .long _reserved_int | 16: Reserved
- .long _reserved_int | 17: Reserved
- .long _spurious_int | 18: Spurious interrupt
- .long _avec1_int | 19: Autovector Level 1
- .long _avec2_int | 1A: Autovector Level 2
- .long _avec3_int | 1B: Autovector Level 3
- .long _avec4_int | 1C: Autovector Level 4
- .long _avec5_int | 1D: Autovector Level 5
- .long _avec6_int | 1E: Autovector Level 6
- .long _avec7_int | 1F: Autovector Level 7
- .long _unexp_exception | 20: TRAP #0
- .long _unexp_exception | 21: TRAP #1
- .long _unexp_exception | 22: TRAP #2
- .long _unexp_exception | 23: TRAP #3
- .long _unexp_exception | 24: TRAP #4
- .long _unexp_exception | 25: TRAP #5
- .long _unexp_exception | 26: TRAP #6
- .long _unexp_exception | 27: TRAP #7
- .long _unexp_exception | 28: TRAP #8
- .long _unexp_exception | 29: TRAP #9
- .long _unexp_exception | 2A: TRAP #10
- .long _unexp_exception | 2B: TRAP #11
- .long _unexp_exception | 2C: TRAP #12
- .long _unexp_exception | 2D: TRAP #13
- .long _unexp_exception | 2E: TRAP #14
- .long _unexp_exception | 2F: TRAP #15
- .long _reserved_int | 30: Reserved
- .long _reserved_int | 31: Reserved
- .long _reserved_int | 32: Reserved
- .long _reserved_int | 33: Reserved
- .long _reserved_int | 34: Reserved
- .long _reserved_int | 35: Reserved
- .long _reserved_int | 36: Reserved
- .long _reserved_int | 37: Reserved
- .long _reserved_int | 38: Reserved
- .long _reserved_int | 39: Reserved
- .long _reserved_int | 3A: Reserved
- .long _reserved_int | 3B: Reserved
- .long _reserved_int | 3C: Reserved
- .long _reserved_int | 3D: Reserved
- .long _reserved_int | 3E: Reserved
- .long _reserved_int | 3F: Reserved
-
- .long _unexp_int | 40-FF: User defined interrupts
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | 50:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | 60:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | 70:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | 80:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | 90:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | A0:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | B0:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | C0:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | D0:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | E0:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- .long _unexp_int | F0:
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
- .long _unexp_int
-
- PUBLIC(start)
-SYM(start):
- move.w #0x2700,sr | First turn off all interrupts!
-
- move.l #(BSP_MEM_ADDR_SRAM + MCF5206E_RAMBAR_V),d0
- movec d0,rambar0 | ...so we have a stack
-
- move.l #(INITIAL_STACK),sp | Set up stack again (may be we are
- | going here from monitor or with
- | BDM interface assistance)
-
- /*
- * Remainder of the startup code is handled by C code
- */
- jmp SYM(Init5206e) | Start C code (which never returns)
-
-/***************************************************************************
- Function : CopyDataClearBSSAndStart
-
- Description : Copy DATA segment, clear BSS segment, initialize heap,
- initialise real stack, start C program. Assume that DATA and BSS sizes
- are multiples of 4.
- ***************************************************************************/
- PUBLIC (CopyDataClearBSSAndStart)
-SYM(CopyDataClearBSSAndStart):
- lea copy_start,a0 | Get start of DATA in RAM
- lea SYM(etext),a2 | Get start of DATA in ROM
- cmpl a0,a2 | Are they the same?
- beq.s NOCOPY | Yes, no copy necessary
- lea copy_end,a1 | Get end of DATA in RAM
- bra.s COPYLOOPTEST | Branch into copy loop
-COPYLOOP:
- movel a2@+,a0@+ | Copy word from ROM to RAM
-COPYLOOPTEST:
- cmpl a1,a0 | Done?
- bcs.s COPYLOOP | No, skip
-NOCOPY:
-
- lea clear_start,a0 | Get start of BSS
- lea clear_end,a1 | Get end of BSS
- clrl d0 | Value to set
- bra.s ZEROLOOPTEST | Branch into clear loop
-ZEROLOOP:
- movel d0,a0@+ | Clear a word
-ZEROLOOPTEST:
- cmpl a1,a0 | Done?
- bcs.s ZEROLOOP | No, skip
- move 4(a7),d0
-
- /*
- * Right : Now we're ready to boot RTEMS
- */
- clrl d0 | Pass in null to all boot_card() params
- movel d0,a7@- | command line
- jsr SYM(boot_card) | Call C boot_card function to startup RTEMS
-
-# Wait forever
-_stop:
- nop
- stop #0x2700
- jmp _stop
-
-# The following labelled nops is a placeholders for breakpoints
-_unexp_exception:
- nop
- jmp _stop
-
-_unexp_int:
- nop
- jmp _stop
-
-_reserved_int:
- nop
- jmp _stop
-
-_spurious_int:
- nop
- jmp _stop
-
-_avec1_int:
- nop
- jmp _unexp_int
-
-_avec2_int:
- nop
- jmp _unexp_int
-
-_avec3_int:
- nop
- jmp _unexp_int
-
-_avec4_int:
- nop
- jmp _unexp_int
-
-_avec5_int:
- nop
- jmp _unexp_int
-
-_avec6_int:
- nop
- jmp _unexp_int
-
-_avec7_int:
- nop
- jmp _unexp_int
-
-END_CODE
-
-END