summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/gen68360
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-20 10:19:28 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-20 13:08:36 +0200
commitfbcd7c8fa65eb695e96a62ea1c1ac7a024fa9dfc (patch)
treea17e285cf22cd49cd42e8b3ad562febc3987d566 /c/src/lib/libbsp/m68k/gen68360
parentbsps: Move console drivers to bsps (diff)
downloadrtems-fbcd7c8fa65eb695e96a62ea1c1ac7a024fa9dfc.tar.bz2
bsps: Move start files to bsps
This patch is a part of the BSP source reorganization. Update #3285.
Diffstat (limited to 'c/src/lib/libbsp/m68k/gen68360')
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/Makefile.am2
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/start/start.S418
2 files changed, 1 insertions, 419 deletions
diff --git a/c/src/lib/libbsp/m68k/gen68360/Makefile.am b/c/src/lib/libbsp/m68k/gen68360/Makefile.am
index 42b1c51f5f..f4d4ec6319 100644
--- a/c/src/lib/libbsp/m68k/gen68360/Makefile.am
+++ b/c/src/lib/libbsp/m68k/gen68360/Makefile.am
@@ -8,7 +8,7 @@ dist_project_lib_DATA = startup/bsp_specs
noinst_PROGRAMS =
-start.$(OBJEXT): start/start.S
+start.$(OBJEXT): ../../../../../../bsps/m68k/gen68360/start/start.S
$(CPPASCOMPILE) -o $@ -c $<
project_lib_DATA = start.$(OBJEXT)
diff --git a/c/src/lib/libbsp/m68k/gen68360/start/start.S b/c/src/lib/libbsp/m68k/gen68360/start/start.S
deleted file mode 100644
index 8511960e16..0000000000
--- a/c/src/lib/libbsp/m68k/gen68360/start/start.S
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- *
- * This file contains the entry point for the application.
- * It jumps to the BSP which is responsible for performing
- * all initialization.
- *
- * COPYRIGHT (c) 1989-1999.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may in
- * the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- *
- * Based on the `gen68302' board support package, and covered by the
- * original distribution terms.
- *
- * W. Eric Norum
- * Saskatchewan Accelerator Laboratory
- * University of Saskatchewan
- * Saskatoon, Saskatchewan, CANADA
- * eric@skatter.usask.ca
- */
-
-#include <rtems/asm.h>
-
-BEGIN_CODE
- /*
- * Step 1: Decide on Reset Stack Pointer and Initial Program Counter
- */
-Entry:
- .long m360+1024 | 0: Initial SSP
- .long start | 1: Initial PC
- .long _uhoh | 2: Bus error
- .long _uhoh | 3: Address error
- .long _uhoh | 4: Illegal instruction
- .long _uhoh | 5: Zero division
- .long _uhoh | 6: CHK, CHK2 instruction
- .long _uhoh | 7: TRAPcc, TRAPV instructions
- .long _uhoh | 8: Privilege violation
- .long _uhoh | 9: Trace
- .long _uhoh | 10: Line 1010 emulator
- .long _uhoh | 11: Line 1111 emulator
- .long _uhoh | 12: Hardware breakpoint
- .long _uhoh | 13: Reserved for coprocessor violation
- .long _uhoh | 14: Format error
- .long _uhoh | 15: Uninitialized interrupt
- .long _uhoh | 16: Unassigned, reserved
- .long _uhoh | 17:
- .long _uhoh | 18:
- .long _uhoh | 19:
- .long _uhoh | 20:
- .long _uhoh | 21:
- .long _uhoh | 22:
- .long _uhoh | 23:
- .long _spuriousInterrupt | 24: Spurious interrupt
- .long _uhoh | 25: Level 1 interrupt autovector
- .long _uhoh | 26: Level 2 interrupt autovector
- .long _uhoh | 27: Level 3 interrupt autovector
- .long _uhoh | 28: Level 4 interrupt autovector
- .long _uhoh | 29: Level 5 interrupt autovector
- .long _uhoh | 30: Level 6 interrupt autovector
- .long _uhoh | 31: Level 7 interrupt autovector
- .long _uhoh | 32: Trap instruction (0-15)
- .long _uhoh | 33:
- .long _uhoh | 34:
- .long _uhoh | 35:
- .long _uhoh | 36:
- .long _uhoh | 37:
- .long _uhoh | 38:
- .long _uhoh | 39:
- .long _uhoh | 40:
- .long _uhoh | 41:
- .long _uhoh | 42:
- .long _uhoh | 43:
- .long _uhoh | 44:
- .long _uhoh | 45:
- .long _uhoh | 46:
- .long _uhoh | 47:
- .long _uhoh | 48: Reserved for coprocessor
- .long _uhoh | 49:
- .long _uhoh | 50:
- .long _uhoh | 51:
- .long _uhoh | 52:
- .long _uhoh | 53:
- .long _uhoh | 54:
- .long _uhoh | 55:
- .long _uhoh | 56:
- .long _uhoh | 57:
- .long _uhoh | 58:
- .long _uhoh | 59: Unassigned, reserved
- .long _uhoh | 60:
- .long _uhoh | 61:
- .long _uhoh | 62:
- .long _uhoh | 63:
- .long _uhoh | 64: User defined vectors (192)
- .long _uhoh | 65:
- .long _uhoh | 66:
- .long _uhoh | 67:
- .long _uhoh | 68:
- .long _uhoh | 69:
- .long _uhoh | 70:
- .long _uhoh | 71:
- .long _uhoh | 72:
- .long _uhoh | 73:
- .long _uhoh | 74:
- .long _uhoh | 75:
- .long _uhoh | 76:
- .long _uhoh | 77:
- .long _uhoh | 78:
- .long _uhoh | 79:
- .long _uhoh | 80:
- .long _uhoh | 81:
- .long _uhoh | 82:
- .long _uhoh | 83:
- .long _uhoh | 84:
- .long _uhoh | 85:
- .long _uhoh | 86:
- .long _uhoh | 87:
- .long _uhoh | 88:
- .long _uhoh | 89:
- .long _uhoh | 90:
- .long _uhoh | 91:
- .long _uhoh | 92:
- .long _uhoh | 93:
- .long _uhoh | 94:
- .long _uhoh | 95:
- .long _uhoh | 96:
- .long _uhoh | 97:
- .long _uhoh | 98:
- .long _uhoh | 99:
- .long _uhoh | 100:
- .long _uhoh | 101:
- .long _uhoh | 102:
- .long _uhoh | 103:
- .long _uhoh | 104:
- .long _uhoh | 105:
- .long _uhoh | 106:
- .long _uhoh | 107:
- .long _uhoh | 108:
- .long _uhoh | 109:
- .long _uhoh | 110:
- .long _uhoh | 111:
- .long _uhoh | 112:
- .long _uhoh | 113:
- .long _uhoh | 114:
- .long _uhoh | 115:
- .long _uhoh | 116:
- .long _uhoh | 117:
- .long _uhoh | 118:
- .long _uhoh | 119:
- .long _uhoh | 120:
- .long _uhoh | 121:
- .long _uhoh | 122:
- .long _uhoh | 123:
- .long _uhoh | 124:
- .long _uhoh | 125:
- .long _uhoh | 126:
- .long _uhoh | 127:
- .long _uhoh | 128:
- .long _uhoh | 129:
- .long _uhoh | 130:
- .long _uhoh | 131:
- .long _uhoh | 132:
- .long _uhoh | 133:
- .long _uhoh | 134:
- .long _uhoh | 135:
- .long _uhoh | 136:
- .long _uhoh | 137:
- .long _uhoh | 138:
- .long _uhoh | 139:
- .long _uhoh | 140:
- .long _uhoh | 141:
- .long _uhoh | 142:
- .long _uhoh | 143:
- .long _uhoh | 144:
- .long _uhoh | 145:
- .long _uhoh | 146:
- .long _uhoh | 147:
- .long _uhoh | 148:
- .long _uhoh | 149:
- .long _uhoh | 150:
- .long _uhoh | 151:
- .long _uhoh | 152:
- .long _uhoh | 153:
- .long _uhoh | 154:
- .long _uhoh | 155:
- .long _uhoh | 156:
- .long _uhoh | 157:
- .long _uhoh | 158:
- .long _uhoh | 159:
- .long _uhoh | 160:
- .long _uhoh | 161:
- .long _uhoh | 162:
- .long _uhoh | 163:
- .long _uhoh | 164:
- .long _uhoh | 165:
- .long _uhoh | 166:
- .long _uhoh | 167:
- .long _uhoh | 168:
- .long _uhoh | 169:
- .long _uhoh | 170:
- .long _uhoh | 171:
- .long _uhoh | 172:
- .long _uhoh | 173:
- .long _uhoh | 174:
- .long _uhoh | 175:
- .long _uhoh | 176:
- .long _uhoh | 177:
- .long _uhoh | 178:
- .long _uhoh | 179:
- .long _uhoh | 180:
- .long _uhoh | 181:
- .long _uhoh | 182:
- .long _uhoh | 183:
- .long _uhoh | 184:
- .long _uhoh | 185:
- .long _uhoh | 186:
- .long _uhoh | 187:
- .long _uhoh | 188:
- .long _uhoh | 189:
- .long _uhoh | 190:
- .long _uhoh | 191:
- .long _uhoh | 192:
- .long _uhoh | 193:
- .long _uhoh | 194:
- .long _uhoh | 195:
- .long _uhoh | 196:
- .long _uhoh | 197:
- .long _uhoh | 198:
- .long _uhoh | 199:
- .long _uhoh | 200:
- .long _uhoh | 201:
- .long _uhoh | 202:
- .long _uhoh | 203:
- .long _uhoh | 204:
- .long _uhoh | 205:
- .long _uhoh | 206:
- .long _uhoh | 207:
- .long _uhoh | 208:
- .long _uhoh | 209:
- .long _uhoh | 210:
- .long _uhoh | 211:
- .long _uhoh | 212:
- .long _uhoh | 213:
- .long _uhoh | 214:
- .long _uhoh | 215:
- .long _uhoh | 216:
- .long _uhoh | 217:
- .long _uhoh | 218:
- .long _uhoh | 219:
- .long _uhoh | 220:
- .long _uhoh | 221:
- .long _uhoh | 222:
- .long _uhoh | 223:
- .long _uhoh | 224:
- .long _uhoh | 225:
- .long _uhoh | 226:
- .long _uhoh | 227:
- .long _uhoh | 228:
- .long _uhoh | 229:
- .long _uhoh | 230:
- .long _uhoh | 231:
- .long _uhoh | 232:
- .long _uhoh | 233:
- .long _uhoh | 234:
- .long _uhoh | 235:
- .long _uhoh | 236:
- .long _uhoh | 237:
- .long _uhoh | 238:
- .long _uhoh | 239:
- .long _uhoh | 240:
- .long _uhoh | 241:
- .long _uhoh | 242:
- .long _uhoh | 243:
- .long _uhoh | 244:
- .long _uhoh | 245:
- .long _uhoh | 246:
- .long _uhoh | 247:
- .long _uhoh | 248:
- .long _uhoh | 249:
- .long _uhoh | 250:
- .long _uhoh | 251:
- .long _uhoh | 252:
- .long _uhoh | 253:
- .long _uhoh | 254:
- .long _uhoh | 255:
-
-/*
- * Default trap handler
- * With an oscilloscope you can see AS* stop
- */
- PUBLIC (_uhoh)
-_uhoh: nop | Leave spot for breakpoint
- stop #0x2700 | Stop with interrupts disabled
- bra.l _uhoh | Stuck forever
-
-/*
- * Log, but otherwise ignore, spurious interrupts
- */
- PUBLIC (_spuriousInterrupt)
-_spuriousInterrupt:
- addql #1,_M68kSpuriousInterruptCount
- rte
-
-/*
- * Place the low-order 3 octets of the board's ethernet address at
- * a `well-known' fixed location relative to the startup location.
- */
- .align 2
- .word 0 | Padding
-ethernet_address_buffer:
- .word 0x08F3 | Default address
- .word 0xDEAD
- .word 0xCAFE
-
-/*
- * Initial PC
- */
-.globl start
-start:
- /*
- * Step 2: Stay in Supervisor Mode
- */
-#if ( M68K_HAS_SEPARATE_STACKS == 1 )
- oriw #0x3000,sr | Switch to Master Stack Pointer
- lea SYM(m360)+1024-64,a7 | Put stack in dual-port ram
- | a little below the interrupt stack
-#endif
-
- /*
- * Step 3: Write the VBR
- */
- lea Entry,a0 | Get base of vector table
- movec a0,vbr | Set up the VBR
-
- /*
- * Step 4: Write the MBAR
- */
- movec dfc,d1 | Save destination register
- moveq #7,d0 | CPU-space funcction code
- movec d0,dfc | Set destination function code register
- movel #m360+0x101,d0 | MBAR value (mask CPU space accesses)
- movesl d0,0x3FF00 | Set MBAR
- movec d1,dfc | Restore destination register
-
- /*
- * Step 5: Verify a dual-port RAM location
- */
- lea m360,a0 | Point a0 to first DPRAM location
- moveb #0x33,d0 | Set the test value
- moveb d0,a0@ | Set the memory location
- cmpb a0@,d0 | Does it read back?
- bne _uhoh | If not, bad news!
- notb d0 | Flip bits
- moveb d0,a0@ | Set the memory location
- cmpb a0@,d0 | Does it read back?
- bne _uhoh | If not, bad news!
-
- /*
- * Remaining steps are handled by C code
- */
- jmp _Init68360 | Start C code (which never returns)
-
-/*
- * Copy DATA segment, clear BSS segment, set up real stack, start C program.
- * Assume that DATA and BSS sizes are multiples of 4.
- */
- PUBLIC (_CopyDataClearBSSAndStart)
-_CopyDataClearBSSAndStart:
- lea _copy_start,a0 | Get start of DATA in RAM
- lea 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
-
- movel #_stack_init,a7 | set master stack pointer
- movel d0,a7@- | command line
- jsr boot_card | Call C main
-
- PUBLIC (_mainDone)
-_mainDone:
- nop | Leave spot for breakpoint
- movew #1,a7 | Force a double bus error
- movel d0,a7@- | This should cause a RESET
- stop #0x2700 | Stop with interrupts disabled
- bra.l _mainDone | Stuck forever
-
- .align 2
-END_CODE
-
-BEGIN_DATA_DCL
- .align 2
- PUBLIC (environ)
-environ:
- .long 0
- PUBLIC (_M68kSpuriousInterruptCount)
-_M68kSpuriousInterruptCount:
- .long 0
-END_DATA_DCL
-
-END