summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-04-16 20:03:31 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-04-16 20:03:31 +0000
commit2cdde6d82076b0ef52a175f0c15eb15bc918fc1d (patch)
treea185212b466113725003ec2393022005f9514576 /c
parent2001-04-16 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-2cdde6d82076b0ef52a175f0c15eb15bc918fc1d.tar.bz2
2001-04-16 Joel Sherrill <joel@OARcorp.com>
* start/start.S, startup/bspstart.c, startup/linkcmds: Cleanup that was not merged from the simple non-RTEMS program.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/mips/genmongoosev/ChangeLog5
-rw-r--r--c/src/lib/libbsp/mips/genmongoosev/start/start.S95
-rw-r--r--c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c55
-rw-r--r--c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds4
4 files changed, 30 insertions, 129 deletions
diff --git a/c/src/lib/libbsp/mips/genmongoosev/ChangeLog b/c/src/lib/libbsp/mips/genmongoosev/ChangeLog
index 6c6227b15a..c53eb55195 100644
--- a/c/src/lib/libbsp/mips/genmongoosev/ChangeLog
+++ b/c/src/lib/libbsp/mips/genmongoosev/ChangeLog
@@ -1,5 +1,10 @@
2001-04-16 Joel Sherrill <joel@OARcorp.com>
+ * start/start.S, startup/bspstart.c, startup/linkcmds:
+ Cleanup that was not merged from the simple non-RTEMS program.
+
+2001-04-16 Joel Sherrill <joel@OARcorp.com>
+
* start/start.S, startup/bspstart.c, startup/linkcmds:
Modifications made with Gregory Menke <gregory.menke@gsfc.nasa.gov>
as he debugged this BSP using a logic analyzer.
diff --git a/c/src/lib/libbsp/mips/genmongoosev/start/start.S b/c/src/lib/libbsp/mips/genmongoosev/start/start.S
index 3d77a87546..525232e2c8 100644
--- a/c/src/lib/libbsp/mips/genmongoosev/start/start.S
+++ b/c/src/lib/libbsp/mips/genmongoosev/start/start.S
@@ -1,12 +1,7 @@
/*
- * start.S -- startup file for GENMONGOOSE-V BSP.
- * It is based on the JMR3904 BSP which is in turn based upon
- * support in newlib-1.8.2/libgloss/mips and adapted for RTEMS.
+ * start.S -- startup file for JMR3904 BSP based upon crt0.S from
+ * newlib-1.8.2/libgloss/mips and adapted for RTEMS.
*
- * COPYRIGHT (c) 2001.
- * On-Line Applications Research Corporation (OAR).
- * Mongoose-V Modifications
- *
* crt0.S -- startup file for MIPS.
*
* Copyright (c) 1995, 1996, 1997 Cygnus Support
@@ -22,13 +17,14 @@
* they apply.
*/
+#include <asm.h>
+#include "regs.S"
+
#ifdef __mips16
/* This file contains 32 bit assembly code. */
.set nomips16
#endif
-#include "regs.S"
-
/* This is for referencing addresses that are not in the .sdata or
.sbss section under embedded-pic, or before we've set up gp. */
#ifdef __mips_embedded_pic
@@ -41,43 +37,6 @@
# define LA(t,x) la t,x
#endif /* __mips_embedded_pic */
-#define zero $0
-#define AT $1 /* assembler temporaries */
-#define v0 $2 /* value holders */
-#define v1 $3
-#define a0 $4 /* arguments */
-#define a1 $5
-#define a2 $6
-#define a3 $7
-#define t0 $8 /* temporaries */
-#define t1 $9
-#define t2 $10
-#define t3 $11
-#define t4 $12
-#define t5 $13
-#define t6 $14
-#define t7 $15
-#define s0 $16 /* saved registers */
-#define s1 $17
-#define s2 $18
-#define s3 $19
-#define s4 $20
-#define s5 $21
-#define s6 $22
-#define s7 $23
-#define t8 $24 /* temporaries */
-#define t9 $25
-#define k0 $26 /* kernel registers */
-#define k1 $27
-#define gp $28 /* global pointer */
-#define sp $29 /* stack pointer */
-#define s8 $30 /* saved register */
-#define fp $30 /* frame pointer (old usage) */
-#define ra $31 /* return address */
-
-
-
-
.text
.align 2
@@ -86,7 +45,7 @@
* start of the .text section.
*/
nop
-
+
.globl _start
.ent _start
_start:
@@ -99,7 +58,8 @@ _start:
nop
_branch:
move $5, $31 # $5 == where are we
- li $6, 0x8002000c # $6 == where we want to be
+ li $6, 0x8800000c # $6 == where we want to be
+ #la $6,_branch
beq $5, $6, _start_in_ram
nop
# relocate the code from EEPROM to RAM
@@ -111,7 +71,6 @@ relocate:
addu $6, $6, 4 # RAM++
bne $6, $7, relocate # copied all the way to edata?
nop
-
la $6, _start_in_ram
jr $6
nop
@@ -234,42 +193,4 @@ _sys_exit:
nop
.end _sys_exit
-#define FRAME(name,frm_reg,offset,ret_reg) \
- .globl name; \
- .ent name; \
-name:; \
- .frame frm_reg,offset,ret_reg
-#define ENDFRAME(name) \
- .end name
-
-FRAME(mips_enable_interrupts,sp,0,ra)
- mfc0 t0,C0_SR /* get status reg */
- nop
- or t0,t0,a0
- mtc0 t0,C0_SR /* save updated status reg */
- j ra
- nop
-ENDFRAME(mips_enable_interrupts)
-#define SR_IEC 0x00000001 /* cur interrupt enable, 1 => enable */
-#define C0_SR $12 /* status register */
-
-/*
-FRAME(_CPU_ISR_Set_level,sp,0,ra)
- nop
- mfc0 t0,C0_SR
- andi a0, SR_IEC
- or t0, a0
- mtc0 t0,C0_SR
- nop
- j ra
-ENDFRAME(_CPU_ISR_Set_level)
-*/
-
- .section vectors
- .align 2
-
-FRAME(__ISR_MAIN,sp,0,ra)
-
-ENDFRAME(__ISR_MAIN)
-
/* EOF crt0.S */
diff --git a/c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c b/c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c
index cb3fdd34f6..002aea0cb3 100644
--- a/c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c
+++ b/c/src/lib/libbsp/mips/genmongoosev/startup/bspstart.c
@@ -57,18 +57,16 @@ void bsp_libc_init( void *, unsigned32, int );
void bsp_pretasking_hook(void)
{
- extern int HeapBase;
- extern int HeapSize;
+ extern int HeapBase;
+ extern int HeapSize;
void *heapStart = &HeapBase;
unsigned long heapSize = (unsigned long)&HeapSize;
- unsigned long ramSpace;
bsp_libc_init(heapStart, (unsigned32) heapSize, 0);
#ifdef RTEMS_DEBUG
rtems_debug_enable( RTEMS_DEBUG_ALL_MASK );
#endif
-
}
/*
@@ -81,54 +79,33 @@ void bsp_start( void )
{
extern int _end;
extern int WorkspaceBase;
- /* Configure Number of Register Caches */
+ extern int _RamSize, _RamBase;
+ int ram_left;
+
+ ram_left = (unsigned32) &_RamSize -
+ (unsigned32)&WorkspaceBase - (unsigned32) &_RamBase;
Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
Cpu_table.postdriver_hook = bsp_postdriver_hook;
Cpu_table.interrupt_stack_size = 4096;
- /* HACK -- tied to value linkcmds */
- if ( BSP_Configuration.work_space_size >(4096*1024) )
- _sys_exit( 1 );
+ if ( BSP_Configuration.work_space_size > ram_left )
+ _sys_exit( 1 );
BSP_Configuration.work_space_start = (void *) &WorkspaceBase;
- /*mips_set_sr( 0xff00 ); all interrupts unmasked but globally off */
- /* depend on the IRC to take care of things */
-
+ /* Clear all pending peripheral interrupts and mask them. */
+
MONGOOSEV_WRITE( MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_CAUSE_REGISTER, 0 );
MONGOOSEV_WRITE( MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_MASK_REGISTER, 0 );
/*
- mips_set_sr( (SR_CU0 | SR_CU1 | SR_IBIT1 | SR_IBIT2 | SR_IBIT3 | SR_IBIT4 | SR_IBIT6 | SR_IBIT8) );
- */
+ * Enable coprocessors.
+ * Disable external interrupts.
+ * Enable software interrupts.
+ */
+
mips_set_sr( (SR_CU0 | SR_CU1 | SR_IBIT1 | SR_IBIT2) );
mips_install_isr_entries();
-
- MONGOOSEV_WRITE( MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_CAUSE_REGISTER, 0 );
-}
-
-/* XXX */
-void clear_cache( void *address, size_t n )
-{
}
-
-/* Structure filled in by get_mem_info. Only the size field is
- actually used (to clear bss), so the others aren't even filled in. */
-
-struct s_mem
-{
- unsigned int size;
- unsigned int icsize;
- unsigned int dcsize;
-};
-
-
-void
-get_mem_info (mem)
- struct s_mem *mem;
-{
- mem->size = 0x1000000; /* XXX figure out something here */
-}
-
diff --git a/c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds b/c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds
index abfafff936..19f478f17b 100644
--- a/c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds
+++ b/c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds
@@ -117,11 +117,9 @@ data segment after the exception vectors and below 0x80020000,
__stack = .;
_stack_init = .;
_clear_end = .;
- WorkspaceBase = .;
- /* HACK -- tied to value bspstart */
- . += 4096K; /* reserve some memory for workspace */
HeapBase = .;
. += HeapSize; /* reserve some memory for heap */
+ WorkspaceBase = .;
}
end = .;
_end = .;