Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:48

0001 /**
0002  *  @file
0003  *
0004  *  Board-specific initialization code. Called from the generic boot_card()
0005  *  function defined in rtems/c/src/lib/libbsp/shared/main.c. That function
0006  *  does some of the board independent initialization. It is called from the
0007  *  generic MC680x0 entry point _start() defined in
0008  *  rtems/c/src/lib/start/m68k/start.s
0009  *
0010  *  _start() has set up a stack, has zeroed the .bss section, has turned off
0011  *  interrupts, and placed the processor in the supervisor mode. boot_card()
0012  *  has left the processor in that state when bsp_start() was called.
0013  *
0014  *  RUNS WITH ADDRESS TRANSLATION AND CACHING TURNED OFF!
0015  *  ASSUMES THAT THE VIRTUAL ADDRESSES WILL BE IDENTICAL TO THE PHYSICAL
0016  *  ADDRESSES. Software-controlled address translation would be required
0017  *  otherwise.
0018  *
0019  *  ASSUMES THAT 167BUG IS PRESENT TO CATCH ANY EXCEPTIONS DURING
0020  *  INITIALIZATION.
0021  */
0022 
0023 /*
0024  *  COPYRIGHT (c) 1989-2012.
0025  *  On-Line Applications Research Corporation (OAR).
0026  *
0027  *  The license and distribution terms for this file may be
0028  *  found in the file LICENSE in this distribution or at
0029  *  http://www.rtems.org/license/LICENSE.
0030  *
0031  *  Modifications of respective RTEMS files:
0032  *  Copyright (c) 1998, National Research Council of Canada
0033  */
0034 
0035 #include <bsp.h>
0036 #include <bsp/bootcard.h>
0037 #include <page_table.h>
0038 
0039 void M68KFPSPInstallExceptionHandlers (void);
0040 
0041 void bsp_start( void )
0042 {
0043   void **rom_monitor_vector_table;
0044   int index;
0045 
0046   /*
0047    *  167Bug Vectors are at 0xFFE00000
0048    */
0049   rom_monitor_vector_table = (void **)0xFFE00000;
0050   m68k_set_vbr( rom_monitor_vector_table );
0051 
0052   /*
0053    *  Copy 167Bug Bus Error handler into our exception vector. All 167Bug
0054    *  exception vectors are the same and point to the generalized exception
0055    *  handler. The bus error handler is the one that Motorola says to copy
0056    *  (p. 2-13, Debugging Package for Motorola 68K CISC CPUs User's Manual
0057    *  68KBUG/D1A3, October 1993).
0058    */
0059   for ( index=2 ; index<=255 ; index++ )
0060     M68Kvec[ index ] = rom_monitor_vector_table[ 2 ];
0061 
0062   /* Any exceptions during initialization should be trapped by 167Bug */
0063   m68k_set_vbr( &M68Kvec );
0064 
0065   /* Install the 68040 FPSP here */
0066   M68KFPSPInstallExceptionHandlers();
0067 
0068   /*
0069    *  You may wish to make the VME arbitration round-robin here, currently
0070    *  we leave it as it is.
0071    */
0072 
0073   /* Set the Interrupt Base Vectors */
0074   lcsr->vector_base = (VBR0 << 28) | (VBR1 << 24);
0075 
0076   /*
0077    *  Initialize address translation
0078    */
0079   page_table_init();
0080 }