16f4a8856e084fbeae226ef52de1fc4f8d2c68765Greg Ungerer/*
26f4a8856e084fbeae226ef52de1fc4f8d2c68765Greg Ungerer * head-ram.S - startup code for Motorola 68360
381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer *
481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer * Copyright 2001 (C) SED Systems, a Division of Calian Ltd.
581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer * Based on: arch/m68knommu/platform/68328/pilot/crt0_rom.S
681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer * Based on: arch/m68knommu/platform/68360/uCquicc/crt0_rom.S, 2.0.38.1.pre7
781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer *           uClinux Kernel
881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer * Copyright (C) Michael Leslie <mleslie@lineo.com>
981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer * Based on: arch/m68knommu/platform/68EZ328/ucsimm/crt0_rom.S
1081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer * Copyright (C) 1998  D. Jeff Dionne <jeff@uclinux.org>,
1181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer *
1281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer */
1381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define ASSEMBLY
1481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
1581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.global _stext
1681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.global _start
1781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
1881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.global _rambase
1981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.global _ramvec
2081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.global _ramstart
2181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.global _ramend
2281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
2381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.global _quicc_base
2481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.global _periph_base
2581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
26d046f6118bb2a207870e35db1411b958199a3750Greg Ungerer#define	RAMEND                      (CONFIG_RAMBASE + CONFIG_RAMSIZE)
27d773c660973560970a6b3697cb280ddc5389447dGreg Ungerer#define	ROMEND                      (CONFIG_ROMBASE + CONFIG_ROMSIZE)
28d046f6118bb2a207870e35db1411b958199a3750Greg Ungerer
2981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define REGB                        0x1000
3081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define PEPAR                       (_dprbase + REGB + 0x0016)
3181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define GMR                         (_dprbase + REGB + 0x0040)
3281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define OR0                         (_dprbase + REGB + 0x0054)
3381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define BR0                         (_dprbase + REGB + 0x0050)
3481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define OR1                         (_dprbase + REGB + 0x0064)
3581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define BR1                         (_dprbase + REGB + 0x0060)
3681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define OR4                         (_dprbase + REGB + 0x0094)
3781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define BR4                         (_dprbase + REGB + 0x0090)
3881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define OR6                         (_dprbase + REGB + 0x00b4)
3981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define BR6                         (_dprbase + REGB + 0x00b0)
4081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define OR7                         (_dprbase + REGB + 0x00c4)
4181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define BR7                         (_dprbase + REGB + 0x00c0)
4281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
4381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCR                         (_dprbase + REGB + 0x0000)
4481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define AVR                         (_dprbase + REGB + 0x0008)
4581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
4681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define SYPCR                       (_dprbase + REGB + 0x0022)
4781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
4881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define PLLCR                       (_dprbase + REGB + 0x0010)
4981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define CLKOCR                      (_dprbase + REGB + 0x000C)
5081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define CDVCR                       (_dprbase + REGB + 0x0014)
5181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
5281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define BKAR                        (_dprbase + REGB + 0x0030)
5381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define BKCR                        (_dprbase + REGB + 0x0034)
5481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define SWIV                        (_dprbase + REGB + 0x0023)
5581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define PICR                        (_dprbase + REGB + 0x0026)
5681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define PITR                        (_dprbase + REGB + 0x002A)
5781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
5881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer/* Define for all memory configuration */
5981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_GMR                 0x00000000
6081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define SIM_OR_MASK                 0x0fffffff
6181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
6281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer/* Defines for chip select zero - the flash */
6381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define SIM_OR0_MASK                0x20000002
6481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define SIM_BR0_MASK                0x00000001
6581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
6681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
6781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer/* Defines for chip select one - the RAM */
6881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define SIM_OR1_MASK                0x10000000
6981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define SIM_BR1_MASK                0x00000001
7081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
7181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_MBAR_ADRS           0x0003ff00
7281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_MBAR_BA_MASK        0xfffff000
7381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_MBAR_AS_MASK        0x00000001
7481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
7581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_PEPAR               0x00B4
7681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
7781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_DISABLE_INTRPTS         0x2700
7881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_AVR                 0x00
7981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
8081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_MCR                 0x00005cff
8181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
8281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_CLKOCR              0x00
8381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_PLLCR               0x8000
8481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_CDVCR               0x0000
8581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
8681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_SYPCR               0x0000
8781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_SWIV                0x00
8881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_PICR                0x0000
8981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#define MCU_SIM_PITR                0x0000
9081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
9181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
9281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer#include <asm/m68360_regs.h>
9381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
9481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
9581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer/*
9681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer * By the time this RAM specific code begins to execute, DPRAM
9781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer * and DRAM should already be mapped and accessible.
9881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer */
9981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
10081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.text
10181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_start:
10281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_stext:
10381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	nop
10481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	ori.w	#MCU_DISABLE_INTRPTS, %sr	/* disable interrupts: */
10581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* We should not need to setup the boot stack the reset should do it. */
106d046f6118bb2a207870e35db1411b958199a3750Greg Ungerer	movea.l	#RAMEND, %sp			/*set up stack at the end of DRAM:*/
10781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
10881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererset_mbar_register:
10981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	moveq.l	#0x07, %d1			/* Setup MBAR */
11081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	movec	%d1, %dfc
11181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
11281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	lea.l	MCU_SIM_MBAR_ADRS, %a0
11381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#_dprbase, %d0
11481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	andi.l	#MCU_SIM_MBAR_BA_MASK, %d0
11581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	ori.l	#MCU_SIM_MBAR_AS_MASK, %d0
11681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	moves.l	%d0, %a0@
11781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
11881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	moveq.l	#0x05, %d1
11981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	movec.l	%d1, %dfc
12081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
12181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Now we can begin to access registers in DPRAM */
12281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
12381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererset_sim_mcr:
12481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Set Module Configuration Register */
12581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#MCU_SIM_MCR, MCR
12681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
12781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* to do:	Determine cause of reset */
12881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
12981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/*
13081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	 *       configure system clock MC68360 p. 6-40
13181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	 *       (value +1)*osc/128 = system clock
13281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	 */
13381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererset_sim_clock:
13481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.w	#MCU_SIM_PLLCR, PLLCR
13581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.b	#MCU_SIM_CLKOCR, CLKOCR
13681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.w	#MCU_SIM_CDVCR, CDVCR
13781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
13881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Wait for the PLL to settle */
13981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.w	#16384, %d0
14081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererpll_settle_wait:
14181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	subi.w	#1, %d0
14281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	bne	pll_settle_wait
14381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
14481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Setup the system protection register, and watchdog timer register */
14581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.b	#MCU_SIM_SWIV, SWIV
14681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.w	#MCU_SIM_PICR, PICR
14781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.w	#MCU_SIM_PITR, PITR
14881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.w	#MCU_SIM_SYPCR, SYPCR
14981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
15081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Clear DPRAM - system + parameter */
15181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	movea.l	#_dprbase, %a0
15281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	movea.l	#_dprbase+0x2000, %a1
15381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
15481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Copy 0 to %a0 until %a0 == %a1 */
15581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererclear_dpram:
15681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	movel	#0, %a0@+
15781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	cmpal	%a0, %a1
15881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	bhi	clear_dpram
15981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
16081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererconfigure_memory_controller:
16181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Set up Global Memory Register (GMR) */
16281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#MCU_SIM_GMR, %d0
16381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%d0, GMR
16481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
16581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererconfigure_chip_select_0:
166d046f6118bb2a207870e35db1411b958199a3750Greg Ungerer	move.l	#RAMEND, %d0
16781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	subi.l	#__ramstart, %d0
16881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	subq.l	#0x01, %d0
16981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	eori.l	#SIM_OR_MASK, %d0
17081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	ori.l	#SIM_OR0_MASK, %d0
17181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%d0, OR0
17281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
17381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#__ramstart, %d0
17481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	ori.l	#SIM_BR0_MASK, %d0
17581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%d0, BR0
17681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
17781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererconfigure_chip_select_1:
178d773c660973560970a6b3697cb280ddc5389447dGreg Ungerer	move.l	#ROMEND, %d0
17981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	subi.l	#__rom_start, %d0
18081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	subq.l	#0x01, %d0
18181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	eori.l	#SIM_OR_MASK, %d0
18281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	ori.l	#SIM_OR1_MASK, %d0
18381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%d0, OR1
18481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
18581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#__rom_start, %d0
18681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	ori.l	#SIM_BR1_MASK, %d0
18781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%d0, BR1
18881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
18981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.w	#MCU_SIM_PEPAR, PEPAR
19081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
19181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* point to vector table: */
19281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#_romvec, %a0
19381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#_ramvec, %a1
19481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerercopy_vectors:
19581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%a0@, %d0
19681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%d0, %a1@
19781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%a0@, %a1@
19881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	addq.l	#0x04, %a0
19981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	addq.l	#0x04, %a1
20081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	cmp.l	#_start, %a0
20181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	blt	copy_vectors
20281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
20381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#_ramvec, %a1
20481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	movec	%a1, %vbr
20581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
20681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
20781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Copy data segment from ROM to RAM */
20881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	moveal	#_stext, %a0
20981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	moveal	#_sdata, %a1
21081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	moveal	#_edata, %a2
21181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
21281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Copy %a0 to %a1 until %a1 == %a2 */
21381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg UngererLD1:
21481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%a0@, %d0
21581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	addq.l	#0x04, %a0
21681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	%d0, %a1@
21781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	addq.l	#0x04, %a1
21881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	cmp.l	#_edata, %a1
21981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	blt     LD1
22081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
221dc0610518f9f01814783f14ba476b41c6ffb27cbGeert Uytterhoeven	moveal	#__bss_start, %a0
222dc0610518f9f01814783f14ba476b41c6ffb27cbGeert Uytterhoeven	moveal	#__bss_stop, %a1
22381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
22481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Copy 0 to %a0 until %a0 == %a1 */
22581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg UngererL1:
22681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	movel	#0, %a0@+
22781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	cmpal	%a0, %a1
22881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	bhi	L1
22981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
23081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererload_quicc:
23181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#_dprbase, _quicc_base
23281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
23381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererstore_ram_size:
23481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	/* Set ram size information */
23581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	move.l	#_sdata, _rambase
236dc0610518f9f01814783f14ba476b41c6ffb27cbGeert Uytterhoeven	move.l	#__bss_stop, _ramstart
237d046f6118bb2a207870e35db1411b958199a3750Greg Ungerer	move.l	#RAMEND, %d0
23881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	sub.l	#0x1000, %d0			/* Reserve 4K for stack space.*/
239d046f6118bb2a207870e35db1411b958199a3750Greg Ungerer	move.l	%d0, _ramend			/* Different from RAMEND.*/
24081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
24181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	pea	0
24281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	pea	env
24381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	pea	%sp@(4)
24481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	pea	0
24581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
24681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	lea	init_thread_union, %a2
24781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	lea	0x2000(%a2), %sp
24881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
24981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererlp:
25081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	jsr	start_kernel
25181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
25281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_exit:
25381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	jmp	_exit
25481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
25581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
25681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.data
25781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.align 4
25881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererenv:
25981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.long	0
26081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_quicc_base:
26181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.long	0
26281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_periph_base:
26381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.long	0
26481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_ramvec:
26581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.long   0
26681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_rambase:
26781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.long   0
26881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_ramstart:
26981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.long   0
27081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_ramend:
27181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.long   0
27281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer_dprbase:
27381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.long	0xffffe000
27481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
27581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer	.text
27681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
27781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    /*
27881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer     * These are the exception vectors at boot up, they are copied into RAM
27981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer     * and then overwritten as needed.
28081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer     */
28181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer
2822c31c341a827b99eef743753aa9adb917b9ea6dbDenys Vlasenko.section ".data..initvect","awx"
283d046f6118bb2a207870e35db1411b958199a3750Greg Ungerer    .long   RAMEND	/* Reset: Initial Stack Pointer                 - 0.  */
28481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   _start      /* Reset: Initial Program Counter               - 1.  */
28581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   buserr      /* Bus Error                                    - 2.  */
28681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Address Error                                - 3.  */
28781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Illegal Instruction                          - 4.  */
28881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Divide by zero                               - 5.  */
28981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* CHK, CHK2 Instructions                       - 6.  */
29081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* TRAPcc, TRAPV Instructions                   - 7.  */
29181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Privilege Violation                          - 8.  */
29281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trace                                        - 9.  */
29381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Line 1010 Emulator                           - 10. */
29481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Line 1111 Emualtor                           - 11. */
29581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Harware Breakpoint                           - 12. */
29681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Reserved for Coprocessor Protocol Violation)- 13. */
29781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Format Error                                 - 14. */
29881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Uninitialized Interrupt                      - 15. */
29981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Unassigned, Reserver)                       - 16. */
30081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Unassigned, Reserver)                       - 17. */
30181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Unassigned, Reserver)                       - 18. */
30281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Unassigned, Reserver)                       - 19. */
30381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Unassigned, Reserver)                       - 20. */
30481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Unassigned, Reserver)                       - 21. */
30581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Unassigned, Reserver)                       - 22. */
30681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* (Unassigned, Reserver)                       - 23. */
30781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Spurious Interrupt                           - 24. */
30881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Level 1 Interrupt Autovector                 - 25. */
30981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Level 2 Interrupt Autovector                 - 26. */
31081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Level 3 Interrupt Autovector                 - 27. */
31181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Level 4 Interrupt Autovector                 - 28. */
31281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Level 5 Interrupt Autovector                 - 29. */
31381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Level 6 Interrupt Autovector                 - 30. */
31481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Level 7 Interrupt Autovector                 - 31. */
31581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   system_call /* Trap Instruction Vectors 0                   - 32. */
31681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 1                   - 33. */
31781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 2                   - 34. */
31881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 3                   - 35. */
31981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 4                   - 36. */
32081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 5                   - 37. */
32181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 6                   - 38. */
32281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 7                   - 39. */
32381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 8                   - 40. */
32481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 9                   - 41. */
32581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 10                  - 42. */
32681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 11                  - 43. */
32781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 12                  - 44. */
32881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 13                  - 45. */
32981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 14                  - 46. */
33081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   trap        /* Trap Instruction Vectors 15                  - 47. */
33181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 48. */
33281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 49. */
33381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 50. */
33481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 51. */
33581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 52. */
33681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 53. */
33781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 54. */
33881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 55. */
33981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 56. */
34081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 57. */
34181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Reserved for Coprocessor)                   - 58. */
34281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Unassigned, Reserved)                       - 59. */
34381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Unassigned, Reserved)                       - 60. */
34481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Unassigned, Reserved)                       - 61. */
34581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Unassigned, Reserved)                       - 62. */
34681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (Unassigned, Reserved)                       - 63. */
34781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    /*                  The assignment of these vectors to the CPM is         */
34881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    /*                  dependent on the configuration of the CPM vba         */
34981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    /*                          fields.                                       */
35081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 1) CPM Error           - 64. */
35181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 2) CPM Parallel IO PC11- 65. */
35281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 3) CPM Parallel IO PC10- 66. */
35381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 4) CPM SMC2 / PIP      - 67. */
35481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 5) CPM SMC1            - 68. */
35581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 6) CPM SPI             - 69. */
35681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 7) CPM Parallel IO PC9 - 70. */
35781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 8) CPM Timer 4         - 71. */
35881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 9) CPM Reserved        - 72. */
35981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 10) CPM Parallel IO PC8- 73. */
36081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 11) CPM Parallel IO PC7- 74. */
36181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 12) CPM Parallel IO PC6- 75. */
36281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 13) CPM Timer 3        - 76. */
36381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 14) CPM Reserved       - 77. */
36481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 15) CPM Parallel IO PC5- 78. */
36581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 16) CPM Parallel IO PC4- 79. */
36681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 17) CPM Reserved       - 80. */
36781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 18) CPM RISC Timer Tbl - 81. */
36881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 19) CPM Timer 2        - 82. */
36981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 21) CPM Reserved       - 83. */
37081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 22) CPM IDMA2          - 84. */
37181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 23) CPM IDMA1          - 85. */
37281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 24) CPM SDMA Bus Err   - 86. */
37381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 25) CPM Parallel IO PC3- 87. */
37481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 26) CPM Parallel IO PC2- 88. */
37581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 27) CPM Timer 1        - 89. */
37681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 28) CPM Parallel IO PC1- 90. */
37781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 29) CPM SCC 4          - 91. */
37881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 30) CPM SCC 3          - 92. */
37981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 31) CPM SCC 2          - 93. */
38081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 32) CPM SCC 1          - 94. */
38181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 33) CPM Parallel IO PC0- 95. */
38281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    /*                  I don't think anything uses the vectors after here.   */
38381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0           /* (User-Defined Vectors 34)                    - 96. */
38481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0               /* (User-Defined Vectors 35  -  39). */
38581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 40  -  49). */
38681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 50  -  59). */
38781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 60  -  69). */
38881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 70  -  79). */
38981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 80  -  89). */
39081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 90  -  99). */
39181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 100 - 109). */
39281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 110 - 119). */
39381d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 120 - 129). */
39481d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 130 - 139). */
39581d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 140 - 149). */
39681d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 150 - 159). */
39781d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 160 - 169). */
39881d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 170 - 179). */
39981d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0,0,0,0,0,0,0,0     /* (User-Defined Vectors 180 - 189). */
40081d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer    .long   0,0,0                   /* (User-Defined Vectors 190 - 192). */
40181d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungerer.text
40281d4903d2d17a9f33ece2666185a8b51e6935ae0Greg Ungererignore: rte
403