source: rtems/c/src/lib/libbsp/sparc/erc32/include/bsp.h @ 3eec211

4.104.114.84.95
Last change on this file since 3eec211 was 2700423, checked in by Joel Sherrill <joel.sherrill@…>, on 11/13/00 at 22:29:14

2000-11-13 Jiri Gaisler <jgais@…>

  • Makefile.am, configure.in, gnatsupp/Makefile.am, gnatsupp/gnatsupp.c, include/Makefile.am, include/bsp.h, start/Makefile.am, startup/Makefile.am, startup/setvec.c, wrapup/Makefile.am:
  • erc32sonic: New directory.
  • erc32sonic/Makefile.am, erc32sonic/erc32sonic.c, erc32sonic/.cvsignore: New files.
  • include/erc32.h: New file.
  • startup/boardinit.S: New file. Big update of SPARC support for ERC32 and LEON. Added support for ERC32 without floating point. Added SONIC support as configured on Tharsys ERC32 board. The bsp's share various code in the shared directory:

gnat-support, start-up code, etc.

To decrease the foot-print, I removed the 16 kbyte start-up
stack that was put in .bss and never reused once the system
was up. The stack is now put between the heap and the
workspace. To reclaim it, the user can do a rtems_region_extend
to merge the stack to the heap region once the system is up.

  • Property mode set to 100644
File size: 4.3 KB
RevLine 
[7f96eef]1/*  bsp.h
2 *
3 *  This include file contains all SPARC simulator definitions.
4 *
[08311cc3]5 *  COPYRIGHT (c) 1989-1999.
[7f96eef]6 *  On-Line Applications Research Corporation (OAR).
7 *
[98e4ebf5]8 *  The license and distribution terms for this file may be
9 *  found in the file LICENSE in this distribution or at
[03f2154e]10 *  http://www.OARcorp.com/rtems/license.html.
[7f96eef]11 *
12 *  Ported to ERC32 implementation of the SPARC by On-Line Applications
13 *  Research Corporation (OAR) under contract to the European Space
14 *  Agency (ESA).
15 *
16 *  ERC32 modifications of respective RTEMS file: COPYRIGHT (c) 1995.
17 *  European Space Agency.
18 *
19 *  $Id$
20 */
21
[4159370]22#ifndef __ERC32_BSP_h
23#define __ERC32_BSP_h
[7f96eef]24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#include <rtems.h>
30#include <iosupp.h>
[4159370]31#include <libcpu/erc32.h>
[df49c60]32#include <clockdrv.h>
33
34#include <console.h>
35
36/*
37 *  confdefs.h overrides for this BSP:
38 *   - two termios serial ports
39 *   - Interrupt stack space is not minimum if defined.
40 */
41
42#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 2
43#define CONFIGURE_INTERRUPT_STACK_MEMORY  (16 * 1024)
[7f96eef]44
[2700423]45/*
46 * Network driver configuration
47 */
48
49struct rtems_bsdnet_ifconfig;
50extern int rtems_erc32_sonic_driver_attach (struct rtems_bsdnet_ifconfig *config);
51#define RTEMS_BSP_NETWORK_DRIVER_NAME   "sonic1"
52#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_erc32_sonic_driver_attach
53
[7f96eef]54/*
55 *  Define the time limits for RTEMS Test Suite test durations.
56 *  Long test and short test duration limits are provided.  These
57 *  values are in seconds and need to be converted to ticks for the
58 *  application.
59 *
60 */
61
62#define MAX_LONG_TEST_DURATION       3   /* 3 seconds */
63#define MAX_SHORT_TEST_DURATION      3   /* 3 seconds */
64
65/*
66 *  Define the interrupt mechanism for Time Test 27
67 *
68 *  NOTE: Since the interrupt code for the SPARC supports both synchronous
69 *        and asynchronous trap handlers, support for testing with both
70 *        is included.
71 */
72
73#define SIS_USE_SYNCHRONOUS_TRAP  0
74
75/*
76 *  The synchronous trap is an arbitrarily chosen software trap.
77 */
78
79#if (SIS_USE_SYNCHRONOUS_TRAP == 1)
80
81#define TEST_VECTOR SPARC_SYNCHRONOUS_TRAP( 0x90 )
82
83#define MUST_WAIT_FOR_INTERRUPT 1
84
85#define Install_tm27_vector( handler ) \
86  set_vector( (handler), TEST_VECTOR, 1 );
87
88#define Cause_tm27_intr() \
89  asm volatile( "ta 0x10; nop " );
90
91#define Clear_tm27_intr() 
92
93#define Lower_tm27_intr()
94
95/*
96 *  The asynchronous trap is an arbitrarily chosen ERC32 interrupt source.
97 */
98
99#else   /* use a regular asynchronous trap */
100
101#define TEST_INTERRUPT_SOURCE ERC32_INTERRUPT_EXTERNAL_1
102#define TEST_VECTOR ERC32_TRAP_TYPE( TEST_INTERRUPT_SOURCE )
103 
104#define MUST_WAIT_FOR_INTERRUPT 1
105 
106#define Install_tm27_vector( handler ) \
107  set_vector( (handler), TEST_VECTOR, 1 );
108 
109#define Cause_tm27_intr() \
110  do { \
111    ERC32_Force_interrupt( TEST_INTERRUPT_SOURCE ); \
112    nop(); \
113    nop(); \
114    nop(); \
115  } while (0)
116 
117#define Clear_tm27_intr() \
118  ERC32_Clear_interrupt( TEST_INTERRUPT_SOURCE )
119 
120#define Lower_tm27_intr()
121
122#endif
123
124/*
125 *  Simple spin delay in microsecond units for device drivers.
126 *  This is very dependent on the clock speed of the target.
127 */
128
129extern void Clock_delay(rtems_unsigned32 microseconds);
130
131#define delay( microseconds ) Clock_delay(microseconds)
132
133/* Constants */
134
135/*
136 *  Information placed in the linkcmds file.
137 */
138
139extern int   RAM_START;
140extern int   RAM_END;
141extern int   RAM_SIZE;
142 
143extern int   PROM_START;
144extern int   PROM_END;
145extern int   PROM_SIZE;
146
147extern int   CLOCK_SPEED;
148 
149extern int   end;        /* last address in the program */
150
151/*
152 *  Device Driver Table Entries
153 */
154 
155/*
156 * NOTE: Use the standard Console driver entry
157 */
158 
159/*
160 * NOTE: Use the standard Clock driver entry
161 */
162 
163 
164/* miscellaneous stuff assumed to exist */
165
166void bsp_cleanup( void );
167
168void bsp_start( void );
169
170rtems_isr_entry set_vector(                     /* returns old vector */
171    rtems_isr_entry     handler,                /* isr routine        */
172    rtems_vector_number vector,                 /* vector number      */
173    int                 type                    /* RTEMS or RAW intr  */
174);
175
176void DEBUG_puts( char *string );
177
178void BSP_fatal_return( void );
179
180void bsp_spurious_initialize( void );
181
182extern rtems_configuration_table BSP_Configuration;     /* owned by BSP */
183
184extern rtems_cpu_table           Cpu_table;             /* owned by BSP */
185
186#ifdef __cplusplus
187}
188#endif
189
190#endif
191/* end of include file */
Note: See TracBrowser for help on using the repository browser.