summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c')
-rw-r--r--c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c215
1 files changed, 0 insertions, 215 deletions
diff --git a/c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c b/c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c
deleted file mode 100644
index ad0cdcc183..0000000000
--- a/c/src/lib/libbsp/powerpc/eth_comm/startup/bspstart.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* bsp_start()
- *
- * This routine starts the application. It includes application,
- * board, and monitor specific initialization and configuration.
- * The generic CPU dependent initialization has been performed
- * before this routine is invoked.
- *
- * The MPC860 specific stuff was written by Jay Monkman (jmonkman@frasca.com)
- *
- * COPYRIGHT (c) 1989-1999.
- * 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.com/license/LICENSE.
- *
- * $Id$
- */
-
-#include <string.h>
-
-#include <bsp.h>
-#include <bsp/irq.h>
-#include <rtems/libio.h>
-#include <rtems/libcsupport.h>
-#include <info.h>
-#include <libcpu/cpuIdent.h>
-#include <libcpu/spr.h>
-#include <rtems/bspIo.h>
-
-boardinfo_t M860_binfo;
-
-/*
- * The original table from the application and our copy of it with
- * some changes.
- */
-extern rtems_configuration_table Configuration;
-extern unsigned long intrStackPtr;
-rtems_configuration_table BSP_Configuration;
-
-rtems_cpu_table Cpu_table;
-
-char *rtems_progname;
-
-/*
- * Use the shared implementations of the following routines
- */
-void bsp_postdriver_hook(void);
-void bsp_libc_init( void *, uint32_t, int );
-
-void BSP_panic(char *s)
-{
- printk("%s PANIC %s\n",_RTEMS_version, s);
- __asm__ __volatile ("sc");
-}
-
-void _BSP_Fatal_error(unsigned int v)
-{
- printk("%s PANIC ERROR %x\n",_RTEMS_version, v);
- __asm__ __volatile ("sc");
-}
-
-/*
- * Function: bsp_pretasking_hook
- * Created: 95/03/10
- *
- * Description:
- * BSP pretasking hook. Called just before drivers are initialized.
- * Used to setup libc and install any BSP extensions.
- *
- * NOTES:
- * Must not use libc (to do io) from here, since drivers are
- * not yet initialized.
- *
- */
-
-void
-bsp_pretasking_hook(void)
-{
- extern int _end;
- uint32_t heap_start;
-
- /*
- * Let's check to see if the size of M860_binfo is what
- * it should be. It might not be if the info.h files
- * for RTEMS and the bootloader define boardinfo_t
- * differently.
- */
-
- /* Oops. printf() won't work yet, since the console is not initialized.
- I should probably find some way of doing this though.
- if (M860_binfo.size != sizeof(boardinfo_t)) {
- printf("The size of the Board Info Block appears to be incorrect.\n");
- printf(" This could occur if the 'info.h' files for RTEMS and the\n");
- printf(" bootloader differ in their definition of boardinfo_t\n");
- }
- */
- heap_start = (uint32_t) &_end;
-
- /* Align the heap on a natural boundary (4 bytes?) */
- if (heap_start & (CPU_ALIGNMENT-1)) {
- heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
- }
- /* set up a 256K heap */
- bsp_libc_init((void *) heap_start, 256 * 1024, 0);
-
-#ifdef RTEMS_DEBUG
- rtems_debug_enable( RTEMS_DEBUG_ALL_MASK );
-#endif
-}
-
-SPR_RW(SPRG0)
-SPR_RW(SPRG1)
-
-void bsp_start(void)
-{
- extern int _end;
- uint32_t heap_start;
- uint32_t ws_start;
- ppc_cpu_id_t myCpu;
- ppc_cpu_revision_t myCpuRevision;
- register unsigned char* intrStack;
- extern void cpu_init(void);
-
- /*
- * Get CPU identification dynamically. Note that the get_ppc_cpu_type() function
- * store the result in global variables so that it can be used latter...
- */
- myCpu = get_ppc_cpu_type();
- myCpuRevision = get_ppc_cpu_revision();
-
- cpu_init();
- mmu_init();
- /*
- * Initialize some SPRG registers related to irq handling
- */
-
- intrStack = (((unsigned char*)&intrStackPtr) - CPU_MINIMUM_STACK_FRAME_SIZE);
-
- _write_SPRG1((unsigned int)intrStack);
-
- /* Signal them that this BSP has fixed PR288 - eventually, this should go away */
- _write_SPRG0(PPC_BSP_HAS_FIXED_PR288);
-
- /*
- * Install our own set of exception vectors
- */
- initialize_exceptions();
-
- /*
- * Allocate the memory for the RTEMS Work Space. This can come from
- * a variety of places: hard coded address, malloc'ed from outside
- * RTEMS world (e.g. simulator or primitive memory manager), or (as
- * typically done by stock BSPs) by subtracting the required amount
- * of work space from the last physical address on the CPU board.
- */
-
- /*
- * Need to "allocate" the memory for the RTEMS Workspace and
- * tell the RTEMS configuration where it is. This memory is
- * not malloc'ed. It is just "pulled from the air".
- */
-
- heap_start = (uint32_t) &_end;
- if (heap_start & (CPU_ALIGNMENT-1))
- heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
-
- ws_start = heap_start + (256 * 1024);
- if (ws_start & ((512 * 1024) - 1)) { /* align to 512K boundary */
- ws_start = (ws_start + (512 * 1024)) & ~((512 * 1024) - 1);
- }
-
- BSP_Configuration.work_space_start = (void *)ws_start;
- BSP_Configuration.work_space_size = 512 * 1024;
-
- /*
- * initialize the CPU table for this BSP
- */
-
- Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
- Cpu_table.postdriver_hook = bsp_postdriver_hook;
- Cpu_table.interrupt_stack_size = CONFIGURE_INTERRUPT_STACK_MEMORY;
-
- Cpu_table.clicks_per_usec = 1; /* for 4MHz extclk */
- Cpu_table.serial_per_sec = 10000000;
- Cpu_table.serial_external_clock = 1;
- Cpu_table.serial_xon_xoff = 0;
- Cpu_table.serial_cts_rts = 1;
- Cpu_table.serial_rate = 9600;
- Cpu_table.timer_average_overhead = 0;
- Cpu_table.timer_least_valid = 0;
- Cpu_table.clock_speed = 40000000;
-
- /*
- * Since we are currently autodetecting whether to use SCC1 or
- * the FEC for ethernet, we set up a register in the ethernet
- * transciever that is used for 10/100 Mbps ethernet now, so that
- * we can attempt to read it later in rtems_enet_driver_attach()
- */
- m8xx.fec.mii_speed = 0x0a;
- m8xx.fec.mii_data = 0x680a0000;
-
- m8xx.scc2.sccm=0;
- m8xx.scc2p.rbase=0;
- m8xx.scc2p.tbase=0;
- m8xx_cp_execute_cmd( M8xx_CR_OP_STOP_TX | M8xx_CR_CHAN_SCC2 );
- /*
- * Initalize RTEMS IRQ system
- */
- BSP_rtems_irq_mng_init(0);
-#ifdef SHOW_MORE_INIT_SETTINGS
- printk("Exit from bspstart\n");
-#endif
-
-}