Changeset 0ebbf66 in rtems
- Timestamp:
- 10/05/98 22:36:06 (24 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- dc6763c8
- Parents:
- 711a2a1
- Location:
- c/src/lib/libbsp/i386
- Files:
-
- 9 added
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/lib/libbsp/i386/i386ex/clock/ckinit.c
r711a2a1 r0ebbf66 78 78 } 79 79 80 static rtems_irq_connect_data clockIrqData = { PC_386_PERIODIC_TIMER,80 static rtems_irq_connect_data clockIrqData = {BSP_PERIODIC_TIMER, 81 81 Clock_isr, 82 82 ClockOn, … … 115 115 outport_byte ( TMR0 , clock_msb ); /* then MSB */ 116 116 117 if (! pc386_install_rtems_irq_handler (&clockIrqData)) {117 if (!BSP_install_rtems_irq_handler (&clockIrqData)) { 118 118 printk("Unable to initialize system clock\n"); 119 119 rtems_fatal_error_occurred(1); … … 152 152 else if (args->command == rtems_build_name('N', 'E', 'W', ' ')) 153 153 { 154 if (! pc386_install_rtems_irq_handler (&clockIrqData)) {154 if (!BSP_install_rtems_irq_handler (&clockIrqData)) { 155 155 printk("Error installing clock interrupt handler!\n"); 156 156 rtems_fatal_error_occurred(1); … … 169 169 { 170 170 ClockOff(&clockIrqData); 171 pc386_remove_rtems_irq_handler (&clockIrqData);171 BSP_remove_rtems_irq_handler (&clockIrqData); 172 172 } -
c/src/lib/libbsp/i386/i386ex/console/console.c
r711a2a1 r0ebbf66 1 /*-------------------------------------------------------------------------+ 2 | console.c v1.1 - i386ex BSP - 1997/08/07 3 +--------------------------------------------------------------------------+ 4 | This file contains the i386ex console I/O package. It is just a termios 5 | wrapper. 6 +--------------------------------------------------------------------------+ 7 | (C) Copyright 1997 - 8 | - NavIST Group - Real-Time Distributed Systems and Industrial Automation 9 | 10 | http://pandora.ist.utl.pt 11 | 12 | Instituto Superior Tecnico * Lisboa * PORTUGAL 13 +--------------------------------------------------------------------------+ 14 | Disclaimer: 15 | 16 | This file is provided "AS IS" without warranty of any kind, either 17 | expressed or implied. 18 +--------------------------------------------------------------------------+ 19 | This code is based on: 20 | console.c,v 1.4 1995/12/19 20:07:23 joel Exp - go32 BSP 21 | console.c,v 1.15 pc386 BSP 22 | With the following copyright notice: 23 | ************************************************************************** 24 | * COPYRIGHT (c) 1989-1998. 25 | * On-Line Applications Research Corporation (OAR). 26 | * Copyright assigned to U.S. Government, 1994. 27 | * 28 | * The license and distribution terms for this file may be 29 | * found in found in the file LICENSE in this distribution or at 30 | * http://www.OARcorp.com/rtems/license.html. 31 | ************************************************************************** 32 | 33 | $Id$ 34 +--------------------------------------------------------------------------*/ 35 36 #include <stdio.h> 37 #include <stdlib.h> 38 #include <assert.h> 39 40 /* workaround for gcc development tools */ 41 #undef __assert 42 void __assert (const char *file, int line, const char *msg); 43 44 #include <bsp.h> 45 #include <irq.h> 46 #include <rtems/libio.h> 47 #include <termios.h> 48 #include <uart.h> 49 #include <libcpu/cpuModel.h> 50 1 51 /* 2 * This file contains the i386ex console IO package. 3 * 4 * COPYRIGHT (c) 1989-1998. 5 * On-Line Applications Research Corporation (OAR). 6 * Copyright assigned to U.S. Government, 1994. 7 * 8 * The license and distribution terms for this file may be 9 * found in the file LICENSE in this distribution or at 10 * http://www.OARcorp.com/rtems/license.html. 11 * 12 * $Id$ 52 * Possible value for console input/output : 53 * BSP_UART_COM1 54 * BSP_UART_COM2 55 * BSP_CONSOLE_PORT_CONSOLE is not valid in this BSP. 56 * All references to either keyboard or video handling have been removed. 13 57 */ 14 58 15 #define F386_INIT 16 17 #include <bsp.h> 18 #include <rtems/libio.h> 19 #include <bspIo.h> 20 #include <stdlib.h> 21 22 #include "../start/80386ex.h" 23 24 /* console_cleanup 25 * 26 * This routine is called at exit to clean up the console hardware. 27 * 28 * Input parameters: NONE 29 * 30 * Output parameters: NONE 31 * 32 * Return values: 59 int BSPConsolePort = BSP_UART_COM2; 60 int BSPBaseBaud = 781250; 61 int BSP_poll_read(int); 62 63 extern BSP_polling_getchar_function_type BSP_poll_char; 64 65 static int conSetAttr(int minor, const struct termios *); 66 static void isr_on(const rtems_irq_connect_data *); 67 static void isr_off(const rtems_irq_connect_data *); 68 static int isr_is_on(const rtems_irq_connect_data *); 69 70 /* 71 * Change references to com2 if required. 33 72 */ 34 73 35 void console_cleanup( void ) 36 { 37 register rtems_unsigned8 ignored; 38 39 /* clear the read buffer */ 40 41 inport_byte( RBR0, ignored ); 42 43 } 44 45 /* console_initialize 46 * 47 * This routine initializes the console IO driver. 48 * 49 * Input parameters: NONE 50 * 51 * Output parameters: NONE 52 * 53 * Return values: 54 */ 55 56 rtems_device_driver console_initialize( 57 rtems_device_major_number major, 58 rtems_device_minor_number minor, 59 void *arg 60 ) 74 static rtems_irq_connect_data console_isr_data = 75 { BSP_UART_COM2_IRQ, 76 BSP_uart_termios_isr_com2, 77 isr_on, 78 isr_off, 79 isr_is_on}; 80 81 static void 82 isr_on(const rtems_irq_connect_data *unused) 83 { 84 return; 85 } 86 87 static void 88 isr_off(const rtems_irq_connect_data *unused) 89 { 90 return; 91 } 92 93 static int 94 isr_is_on(const rtems_irq_connect_data *irq) 95 { 96 return BSP_irq_enabled_at_i8259s(irq->name); 97 } 98 99 void console_reserve_resources(rtems_configuration_table *conf) 100 { 101 rtems_termios_reserve_resources(conf, 1); 102 return; 103 } 104 105 void __assert (const char *file, int line, const char *msg) 106 { 107 static char exit_msg[] = "EXECUTIVE SHUTDOWN! Any key to reboot..."; 108 unsigned char ch; 109 110 /* 111 * Note we cannot call exit or printf from here, 112 * assert can fail inside ISR too 113 */ 114 115 /* 116 * Close console 117 */ 118 __rtems_close(2); 119 __rtems_close(1); 120 __rtems_close(0); 121 122 printk("\nassert failed: %s: ", file); 123 printk("%d: ", line); 124 printk("%s\n\n", msg); 125 printk(exit_msg); 126 ch = BSP_poll_char(); 127 printk("\nShould jump to reset now!\n"); 128 } 129 130 131 /*-------------------------------------------------------------------------+ 132 | Console device driver INITIALIZE entry point. 133 +--------------------------------------------------------------------------+ 134 | Initilizes the I/O console (keyboard + VGA display) driver. 135 +--------------------------------------------------------------------------*/ 136 rtems_device_driver 137 console_initialize(rtems_device_major_number major, 138 rtems_device_minor_number minor, 139 void *arg) 61 140 { 62 141 rtems_status_code status; 63 142 64 143 /* 65 * flush the console now and at exit. Just in case. 66 */ 67 68 console_cleanup(); 69 70 status = rtems_io_register_name( 71 "/dev/console", 72 major, 73 (rtems_device_minor_number) 0 74 ); 144 * Set up TERMIOS 145 */ 146 rtems_termios_initialize (); 147 148 /* 149 * Do device-specific initialization 150 */ 151 152 /* 9600-8-N-1, no hardware flow control */ 153 BSP_uart_init(BSPConsolePort, 9600, 0); 154 155 156 /* Set interrupt handler */ 157 if(BSPConsolePort == BSP_UART_COM1) 158 { 159 console_isr_data.name = BSP_UART_COM1_IRQ; 160 console_isr_data.hdl = BSP_uart_termios_isr_com1; 161 162 } 163 else 164 { 165 assert(BSPConsolePort == BSP_UART_COM2); 166 console_isr_data.name = BSP_UART_COM2_IRQ; 167 console_isr_data.hdl = BSP_uart_termios_isr_com2; 168 } 169 170 status = BSP_install_rtems_irq_handler(&console_isr_data); 171 172 if (!status){ 173 printk("Error installing serial console interrupt handler!\n"); 174 rtems_fatal_error_occurred(status); 175 } 176 /* 177 * Register the device 178 */ 179 status = rtems_io_register_name ("/dev/console", major, 0); 180 if (status != RTEMS_SUCCESSFUL) 181 { 182 printk("Error registering console device!\n"); 183 rtems_fatal_error_occurred (status); 184 } 185 186 if(BSPConsolePort == BSP_UART_COM1) 187 { 188 printk("Initialized console on port COM1 9600-8-N-1\n\n"); 189 } 190 else 191 { 192 printk("Initialized console on port COM2 9600-8-N-1\n\n"); 193 } 194 195 return RTEMS_SUCCESSFUL; 196 } /* console_initialize */ 197 198 199 static int console_open_count = 0; 200 201 static int console_last_close(int major, int minor, void *arg) 202 { 203 BSP_remove_rtems_irq_handler (&console_isr_data); 204 205 return 0; 206 } 207 208 /*-------------------------------------------------------------------------+ 209 | Console device driver OPEN entry point 210 +--------------------------------------------------------------------------*/ 211 rtems_device_driver 212 console_open(rtems_device_major_number major, 213 rtems_device_minor_number minor, 214 void *arg) 215 { 216 rtems_status_code status; 217 static rtems_termios_callbacks cb = 218 { 219 NULL, /* firstOpen */ 220 console_last_close, /* lastClose */ 221 NULL, /* poll read */ 222 BSP_uart_termios_write_com2, /* write */ 223 conSetAttr, /* setAttributes */ 224 NULL, /* stopRemoteTx */ 225 NULL, /* startRemoteTx */ 226 1 /* outputUsesInterrupts */ 227 }; 228 229 if(BSPConsolePort == BSP_UART_COM2) 230 { 231 cb.write = BSP_uart_termios_write_com2; 232 } 233 234 status = rtems_termios_open (major, minor, arg, &cb); 235 236 if(status != RTEMS_SUCCESSFUL) 237 { 238 printk("Error openning console device\n"); 239 return status; 240 } 241 242 /* 243 * Pass data area info down to driver 244 */ 245 BSP_uart_termios_set(BSPConsolePort, 246 ((rtems_libio_open_close_args_t *)arg)->iop->data1); 247 248 /* Enable interrupts on channel */ 249 BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS); 250 251 return RTEMS_SUCCESSFUL; 252 } 253 254 /*-------------------------------------------------------------------------+ 255 | Console device driver CLOSE entry point 256 +--------------------------------------------------------------------------*/ 257 rtems_device_driver 258 console_close(rtems_device_major_number major, 259 rtems_device_minor_number minor, 260 void *arg) 261 { 262 263 return (rtems_termios_close (arg)); 264 265 } /* console_close */ 266 75 267 76 if (status != RTEMS_SUCCESSFUL) 77 rtems_fatal_error_occurred(status); 268 /*-------------------------------------------------------------------------+ 269 | Console device driver READ entry point. 270 +--------------------------------------------------------------------------+ 271 | Read characters from the I/O console. We only have stdin. 272 +--------------------------------------------------------------------------*/ 273 rtems_device_driver 274 console_read(rtems_device_major_number major, 275 rtems_device_minor_number minor, 276 void *arg) 277 { 278 rtems_status_code sc; 279 printf("read the console\n"); 280 281 sc = rtems_termios_read (arg); 282 283 if ( sc != RTEMS_SUCCESSFUL ) 284 printf("console_read: fails %s\n",rtems_status_text(sc)); 285 286 return sc; 287 288 } /* console_read */ 78 289 79 atexit( console_cleanup ); 80 81 return RTEMS_SUCCESSFUL; 82 } 83 84 85 /* is_character_ready 86 * 87 * This routine returns TRUE if a character is available. 88 * 89 * Input parameters: NONE 90 * 91 * Output parameters: NONE 92 * 93 * Return values: 94 */ 95 96 rtems_boolean is_character_ready( 97 char *ch 98 ) 99 { 100 register rtems_unsigned8 status; 101 102 inport_byte( LSR1, status ); 103 104 if ( Is_rx_ready( status ) ) { 105 inport_byte( RBR1, status ); 106 *ch = status; 107 return TRUE; 108 } 109 return FALSE; 110 } 111 112 /* 113 * Wait for an input. May be used before intr are ON. 114 */ 115 char BSP_wait_polled_input( void ) 116 { 117 char c; 118 while (!is_character_ready(&c)) 119 continue; 120 121 return c; 122 } 123 124 /* inbyte 125 * 126 * This routine reads a character from the UART. 127 * 128 * Input parameters: NONE 129 * 130 * Output parameters: NONE 131 * 132 * Return values: 133 * character read from UART 134 */ 135 136 char inbyte( void ) 137 { 138 register rtems_unsigned8 status; 139 char ch; 140 141 do { 142 inport_byte( LSR1, status ); 143 } while ( !( status & 0x01 ));/* s/b while ( !( Is_rx_ready( status ) ) ); */ 144 145 inport_byte( RBR1, ch ); 146 147 return ch; 148 } 149 150 /* outbyte 151 * 152 * This routine transmits a character out the port. It supports 153 * XON/XOFF flow control. 154 * 155 * Input parameters: 156 * ch - character to be transmitted 157 * 158 * Output parameters: NONE 159 */ 160 161 void outbyte( 162 char ch 163 ) 164 { 165 rtems_unsigned8 status; 166 167 do { 168 inport_byte( LSR1, status ); 169 } while ( ! ( 0x40 & status ) ); /* ( Is_tx_ready( status ) ) );*/ 170 171 /* 172 * GDB will NOT use XON/XOFF protocol 173 */ 174 175 176 #ifdef USE_XON 177 178 while ( is_character_ready( &status ) == TRUE ) { 179 if ( status == XOFF ) 180 do { 181 while ( is_character_ready( &status ) == FALSE ) ; 182 } while ( status != XON ); 183 } 184 185 #endif 186 187 outport_byte( TBR1, ch ); 188 189 } 190 191 /* 192 * Open entry point 193 */ 290 291 /*-------------------------------------------------------------------------+ 292 | Console device driver WRITE entry point. 293 +--------------------------------------------------------------------------+ 294 | Write characters to the I/O console. Stderr and stdout are the same. 295 +--------------------------------------------------------------------------*/ 296 rtems_device_driver 297 console_write(rtems_device_major_number major, 298 rtems_device_minor_number minor, 299 void * arg) 300 { 301 return rtems_termios_write (arg); 194 302 195 rtems_device_driver console_open( 196 rtems_device_major_number major, 197 rtems_device_minor_number minor, 198 void * arg 199 ) 200 { 201 return RTEMS_SUCCESSFUL; 202 } 303 } /* console_write */ 304 305 203 306 204 307 /* 205 * Close entry point308 * Handle ioctl request. 206 309 */ 207 208 rtems_device_driver console_close( 209 rtems_device_major_number major, 210 rtems_device_minor_number minor, 211 void * arg 310 rtems_device_driver 311 console_control(rtems_device_major_number major, 312 rtems_device_minor_number minor, 313 void * arg 212 314 ) 213 { 214 return RTEMS_SUCCESSFUL; 215 } 216 315 { 316 return rtems_termios_ioctl (arg); 317 } 318 319 static int 320 conSetAttr(int minor, const struct termios *t) 321 { 322 int baud; 323 324 switch (t->c_cflag & CBAUD) 325 { 326 case B50: 327 baud = 50; 328 break; 329 case B75: 330 baud = 75; 331 break; 332 case B110: 333 baud = 110; 334 break; 335 case B134: 336 baud = 134; 337 break; 338 case B150: 339 baud = 150; 340 break; 341 case B200: 342 baud = 200; 343 break; 344 case B300: 345 baud = 300; 346 break; 347 case B600: 348 baud = 600; 349 break; 350 case B1200: 351 baud = 1200; 352 break; 353 case B1800: 354 baud = 1800; 355 break; 356 case B2400: 357 baud = 2400; 358 break; 359 case B4800: 360 baud = 4800; 361 break; 362 case B9600: 363 baud = 9600; 364 break; 365 case B19200: 366 baud = 19200; 367 break; 368 case B38400: 369 baud = 38400; 370 break; 371 case B57600: 372 baud = 57600; 373 break; 374 case B115200: 375 baud = 115200; 376 break; 377 default: 378 baud = 0; 379 rtems_fatal_error_occurred (RTEMS_INTERNAL_ERROR); 380 return 0; 381 } 382 383 BSP_uart_set_baud(BSPConsolePort, baud); 384 385 return 0; 386 } 387 217 388 /* 218 * read bytes from the serial port. We only have stdin.389 * BSP initialization 219 390 */ 220 221 rtems_device_driver console_read( 222 rtems_device_major_number major, 223 rtems_device_minor_number minor, 224 void * arg 225 ) 226 { 227 rtems_libio_rw_args_t *rw_args; 228 char *buffer; 229 int maximum; 230 int count = 0; 231 232 rw_args = (rtems_libio_rw_args_t *) arg; 233 234 buffer = rw_args->buffer; 235 maximum = rw_args->count; 236 237 for (count = 0; count < maximum; count++) { 238 buffer[ count ] = inbyte(); 239 if (buffer[ count ] == '\n' || buffer[ count ] == '\r') { 240 buffer[ count++ ] = '\n'; 241 break; 242 } 243 } 244 245 rw_args->bytes_moved = count; 246 return (count >= 0) ? RTEMS_SUCCESSFUL : RTEMS_UNSATISFIED; 247 } 248 249 /* 250 * write bytes to the serial port. Stdout and stderr are the same. 251 */ 252 253 rtems_device_driver console_write( 254 rtems_device_major_number major, 255 rtems_device_minor_number minor, 256 void * arg 257 ) 258 { 259 int count; 260 int maximum; 261 rtems_libio_rw_args_t *rw_args; 262 char *buffer; 263 264 rw_args = (rtems_libio_rw_args_t *) arg; 265 266 buffer = rw_args->buffer; 267 maximum = rw_args->count; 268 269 for (count = 0; count < maximum; count++) { 270 if ( buffer[ count ] == '\n') { 271 outbyte('\r'); 272 } 273 outbyte( buffer[ count ] ); 274 } 275 276 rw_args->bytes_moved = maximum; 277 return 0; 278 } 279 280 /* 281 * IO Control entry point 282 */ 283 284 rtems_device_driver console_control( 285 rtems_device_major_number major, 286 rtems_device_minor_number minor, 287 void * arg 288 ) 289 { 290 return RTEMS_SUCCESSFUL; 291 } 292 293 BSP_output_char_function_type BSP_output_char = outbyte; 294 BSP_polling_getchar_function_type BSP_poll_char = BSP_wait_polled_input; 295 391 392 BSP_output_char_function_type BSP_output_char = 393 (BSP_output_char_function_type) BSP_output_char_via_serial; 394 395 BSP_polling_getchar_function_type BSP_poll_char = 396 (BSP_polling_getchar_function_type) BSP_poll_char_via_serial; 397 398 int BSP_poll_read(int ttyMinor){ 399 400 return BSP_poll_char_via_serial(); 401 } -
c/src/lib/libbsp/i386/i386ex/start/Makefile.in
r711a2a1 r0ebbf66 37 37 DEFINES += -DNEXT_GAS 38 38 endif 39 39 40 CPPFLAGS += 40 41 CFLAGS += -
c/src/lib/libbsp/i386/i386ex/startup/Makefile.in
r711a2a1 r0ebbf66 5 5 @SET_MAKE@ 6 6 srcdir = @srcdir@ 7 VPATH = @srcdir@:@srcdir@/../../../shared 7 VPATH = @srcdir@:@srcdir@/../../../shared:@srcdir@/../../shared/comm:@srcdir@/../../shared/irq:@srcdir@/../../shared/io 8 8 RTEMS_ROOT = @top_srcdir@ 9 9 PROJECT_ROOT = @PROJECT_ROOT@ … … 11 11 PGM=${ARCH}/startup.rel 12 12 13 IMPORT_SRC=$(srcdir)/../../shared/irq/irq.c \ 14 $(srcdir)/../../shared/irq/irq_init.c $(srcdir)/../../shared/irq/irq_asm.s 13 # C source names, if any, go here -- minus the .c 14 C_PIECES=bspclean bsplibc bsppost bspstart main sbrk irq irq_init i386-stub-glue uart i386-stub 15 15 16 # C source names, if any, go here -- minus the .c17 C_PIECES=bspclean bsplibc bsppost bspstart main sbrk irq irq_init18 16 C_FILES=$(C_PIECES:%=%.c) 19 17 C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) … … 38 36 39 37 #DEFINES += -DPRINTON 40 DEFINES += -I$(srcdir) 38 39 DEFINES += -I$(srcdir) -DBSP_IS_I386EX=1 41 40 CPPFLAGS += 42 41 CFLAGS += -g … … 57 56 58 57 preinstall: 59 ${CP} ${IMPORT_SRC} . 58 $(INSTALL) ${IMPORT_SRC} . 59 60 # ${CP} ${IMPORT_SRC} . 60 61 61 62 ${PGM}: ${SRCS} ${OBJS} -
c/src/lib/libbsp/i386/i386ex/timer/timer.c
r711a2a1 r0ebbf66 56 56 * enable interrrupt at i8259 level 57 57 */ 58 pc386_irq_enable_at_i8259s(used->idtIndex - PC386_IRQ_VECTOR_BASE);58 BSP_irq_enable_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE); 59 59 } 60 60 … … 64 64 * disable interrrupt at i8259 level 65 65 */ 66 pc386_irq_disable_at_i8259s(used->idtIndex - PC386_IRQ_VECTOR_BASE);66 BSP_irq_disable_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE); 67 67 /* reset timer mode to standard (DOS) value */ 68 68 } 69 69 70 70 static rtems_raw_irq_connect_data timer_raw_irq_data = { 71 PC_386_RT_TIMER3 + PC386_IRQ_VECTOR_BASE,71 BSP_RT_TIMER3 + BSP_IRQ_VECTOR_BASE, 72 72 timerisr, 73 73 TimerOn, -
c/src/lib/libbsp/i386/pc386/Makefile.in
r711a2a1 r0ebbf66 18 18 # wrapup is the one that actually builds and installs the library 19 19 # from the individual .rel files built in other directories 20 SUB_DIRS=include tools start startup clock console timer pc386dev$(NETWORK) \20 SUB_DIRS=include tools start startup clock console timer $(NETWORK) \ 21 21 wrapup -
c/src/lib/libbsp/i386/pc386/clock/ckinit.c
r711a2a1 r0ebbf66 177 177 } 178 178 179 static rtems_irq_connect_data clockIrqData = { PC_386_PERIODIC_TIMER,179 static rtems_irq_connect_data clockIrqData = {BSP_PERIODIC_TIMER, 180 180 clockIsr, 181 181 clockOn, … … 196 196 { 197 197 198 if (! pc386_install_rtems_irq_handler (&clockIrqData)) {198 if (!BSP_install_rtems_irq_handler (&clockIrqData)) { 199 199 printk("Unable to initialize system clock\n"); 200 200 rtems_fatal_error_occurred(1); … … 230 230 else if (args->command == rtems_build_name('N', 'E', 'W', ' ')) 231 231 { 232 if (! pc386_install_rtems_irq_handler (&clockIrqData)) {232 if (!BSP_install_rtems_irq_handler (&clockIrqData)) { 233 233 printk("Error installing clock interrupt handler!\n"); 234 234 rtems_fatal_error_occurred(1); … … 242 242 void Clock_exit() 243 243 { 244 pc386_remove_rtems_irq_handler (&clockIrqData);244 BSP_remove_rtems_irq_handler (&clockIrqData); 245 245 } 246 246 -
c/src/lib/libbsp/i386/pc386/console/console.c
r711a2a1 r0ebbf66 35 35 #include <stdlib.h> 36 36 #include <assert.h> 37 #undef __assert 38 void __assert (const char *file, int line, const char *msg); 37 39 38 40 #include <bsp.h> … … 40 42 #include <rtems/libio.h> 41 43 #include <termios.h> 42 #include < pc386uart.h>44 #include <uart.h> 43 45 #include <libcpu/cpuModel.h> 44 46 45 47 /* 46 48 * Possible value for console input/output : 47 * PC386_CONSOLE_PORT_CONSOLE48 * PC386_UART_COM149 * PC386_UART_COM249 * BSP_CONSOLE_PORT_CONSOLE 50 * BSP_UART_COM1 51 * BSP_UART_COM2 50 52 */ 51 53 52 54 /* 53 55 * Possible value for console input/output : 54 * PC386_CONSOLE_PORT_CONSOLE55 * PC386_UART_COM156 * PC386_UART_COM256 * BSP_CONSOLE_PORT_CONSOLE 57 * BSP_UART_COM1 58 * BSP_UART_COM2 57 59 */ 58 60 59 int PC386ConsolePort = PC386_CONSOLE_PORT_CONSOLE; 61 int BSPConsolePort = BSP_CONSOLE_PORT_CONSOLE; 62 63 /* int BSPConsolePort = BSP_UART_COM2; */ 64 int BSPBaseBaud = 115200; 60 65 61 66 extern BSP_polling_getchar_function_type BSP_poll_char; … … 67 72 extern rtems_boolean _IBMPC_scankey(char *); /* defined in 'inch.c' */ 68 73 extern char BSP_wait_polled_input(void); 74 extern void _IBMPC_initVideo(void); 69 75 70 76 static int conSetAttr(int minor, const struct termios *); … … 74 80 75 81 76 static rtems_irq_connect_data console_isr_data = { PC_386_KEYBOARD,82 static rtems_irq_connect_data console_isr_data = {BSP_KEYBOARD, 77 83 _IBMPC_keyboard_isr, 78 84 isr_on, … … 95 101 isr_is_on(const rtems_irq_connect_data *irq) 96 102 { 97 return pc386_irq_enabled_at_i8259s(irq->name);103 return BSP_irq_enabled_at_i8259s(irq->name); 98 104 } 99 105 100 106 void console_reserve_resources(rtems_configuration_table *conf) 101 107 { 102 if(PC386ConsolePort != PC386_CONSOLE_PORT_CONSOLE)108 if(BSPConsolePort != BSP_CONSOLE_PORT_CONSOLE) 103 109 { 104 110 rtems_termios_reserve_resources(conf, 1); 105 111 } 112 106 113 return; 107 114 } 108 115 109 void __assert (const char *file, int line, const char *msg)110 { 111 static char exit_msg[] = "EXECUTIVE SHUTDOWN! Any key to reboot...";116 void __assert (const char *file, int line, const char *msg) 117 { 118 static char exit_msg[] = "EXECUTIVE SHUTDOWN! Any key to reboot..."; 112 119 unsigned char ch; 113 120 114 121 /* 115 122 * Note we cannot call exit or printf from here, 116 123 * assert can fail inside ISR too 117 124 */ 118 /* 125 126 /* 119 127 * Close console 120 128 */ … … 130 138 printk("\n\n"); 131 139 rtemsReboot(); 140 132 141 } 133 142 … … 150 159 */ 151 160 152 if(PC386ConsolePort == PC386_CONSOLE_PORT_CONSOLE) 153 {154 161 162 if(BSPConsolePort == BSP_CONSOLE_PORT_CONSOLE) 163 { 155 164 /* Install keyboard interrupt handler */ 156 status = pc386_install_rtems_irq_handler(&console_isr_data);165 status = BSP_install_rtems_irq_handler(&console_isr_data); 157 166 158 167 if (!status) … … 182 191 183 192 /* 9600-8-N-1 */ 184 PC386_uart_init(PC386ConsolePort, 9600, 0);193 BSP_uart_init(BSPConsolePort, 9600, 0); 185 194 186 195 187 196 /* Set interrupt handler */ 188 if( PC386ConsolePort == PC386_UART_COM1)189 { 190 console_isr_data.name = PC386_UART_COM1_IRQ;191 console_isr_data.hdl = PC386_uart_termios_isr_com1;197 if(BSPConsolePort == BSP_UART_COM1) 198 { 199 console_isr_data.name = BSP_UART_COM1_IRQ; 200 console_isr_data.hdl = BSP_uart_termios_isr_com1; 192 201 193 202 } 194 203 else 195 204 { 196 assert( PC386ConsolePort == PC386_UART_COM2);197 console_isr_data.name = PC386_UART_COM2_IRQ;198 console_isr_data.hdl = PC386_uart_termios_isr_com2;199 } 200 201 status = pc386_install_rtems_irq_handler(&console_isr_data);205 assert(BSPConsolePort == BSP_UART_COM2); 206 console_isr_data.name = BSP_UART_COM2_IRQ; 207 console_isr_data.hdl = BSP_uart_termios_isr_com2; 208 } 209 210 status = BSP_install_rtems_irq_handler(&console_isr_data); 202 211 203 212 if (!status){ … … 215 224 } 216 225 217 if( PC386ConsolePort == PC386_UART_COM1)226 if(BSPConsolePort == BSP_UART_COM1) 218 227 { 219 228 printk("Initialized console on port COM1 9600-8-N-1\n\n"); … … 230 239 * This may be convenient to debug the serial line driver itself... 231 240 */ 232 printk("Warning : This will be the last message displayed on console\n");241 /* printk("Warning : This will be the last message displayed on console\n");*/ 233 242 BSP_output_char = (BSP_output_char_function_type) BSP_output_char_via_serial; 234 243 BSP_poll_char = (BSP_polling_getchar_function_type) BSP_poll_char_via_serial; … … 243 252 static int console_last_close(int major, int minor, void *arg) 244 253 { 245 pc386_remove_rtems_irq_handler (&console_isr_data);254 BSP_remove_rtems_irq_handler (&console_isr_data); 246 255 247 256 return 0; … … 262 271 console_last_close, /* lastClose */ 263 272 NULL, /* pollRead */ 264 PC386_uart_termios_write_com1, /* write */273 BSP_uart_termios_write_com1, /* write */ 265 274 conSetAttr, /* setAttributes */ 266 275 NULL, /* stopRemoteTx */ … … 269 278 }; 270 279 271 if( PC386ConsolePort == PC386_CONSOLE_PORT_CONSOLE)280 if(BSPConsolePort == BSP_CONSOLE_PORT_CONSOLE) 272 281 { 273 282 ++console_open_count; … … 275 284 } 276 285 277 if( PC386ConsolePort == PC386_UART_COM2)278 { 279 cb.write = PC386_uart_termios_write_com2;286 if(BSPConsolePort == BSP_UART_COM2) 287 { 288 cb.write = BSP_uart_termios_write_com2; 280 289 } 281 290 … … 291 300 * Pass data area info down to driver 292 301 */ 293 PC386_uart_termios_set(PC386ConsolePort,302 BSP_uart_termios_set(BSPConsolePort, 294 303 ((rtems_libio_open_close_args_t *)arg)->iop->data1); 295 304 296 305 /* Enable interrupts on channel */ 297 PC386_uart_intr_ctrl(PC386ConsolePort, PC386_UART_INTR_CTRL_TERMIOS);306 BSP_uart_intr_ctrl(BSPConsolePort, BSP_UART_INTR_CTRL_TERMIOS); 298 307 299 308 return RTEMS_SUCCESSFUL; … … 310 319 rtems_device_driver res = RTEMS_SUCCESSFUL; 311 320 312 if( PC386ConsolePort != PC386_CONSOLE_PORT_CONSOLE)321 if(BSPConsolePort != BSP_CONSOLE_PORT_CONSOLE) 313 322 { 314 323 res = rtems_termios_close (arg); … … 338 347 int count, maximum = rw_args->count; 339 348 340 if( PC386ConsolePort != PC386_CONSOLE_PORT_CONSOLE)349 if(BSPConsolePort != BSP_CONSOLE_PORT_CONSOLE) 341 350 { 342 351 return rtems_termios_read (arg); … … 383 392 int count, maximum = rw_args->count; 384 393 385 if( PC386ConsolePort != PC386_CONSOLE_PORT_CONSOLE)394 if(BSPConsolePort != BSP_CONSOLE_PORT_CONSOLE) 386 395 { 387 396 return rtems_termios_write (arg); … … 410 419 ) 411 420 { 412 if( PC386ConsolePort != PC386_CONSOLE_PORT_CONSOLE)421 if(BSPConsolePort != BSP_CONSOLE_PORT_CONSOLE) 413 422 { 414 423 return rtems_termios_ioctl (arg); … … 482 491 } 483 492 484 PC386_uart_set_baud(PC386ConsolePort, baud);493 BSP_uart_set_baud(BSPConsolePort, baud); 485 494 486 495 return 0; -
c/src/lib/libbsp/i386/pc386/include/bsp.h
r711a2a1 r0ebbf66 161 161 void rtemsReboot(void); /* from 'exit.c' */ 162 162 163 /* Definitions for PC386ConsolePort */164 #define PC386_CONSOLE_PORT_CONSOLE (-1)165 #define PC386_CONSOLE_PORT_COM1 (PC386_UART_COM1)166 #define PC386_CONSOLE_PORT_COM2 (PC386_UART_COM2)163 /* Definitions for BSPConsolePort */ 164 #define BSP_CONSOLE_PORT_CONSOLE (-1) 165 #define BSP_CONSOLE_PORT_COM1 (BSP_UART_COM1) 166 #define BSP_CONSOLE_PORT_COM2 (BSP_UART_COM2) 167 167 168 168 /* GDB stub stuff */ -
c/src/lib/libbsp/i386/pc386/start/Makefile.in
r711a2a1 r0ebbf66 34 34 # 35 35 36 ifeq ($(RTEMS_GAS_CODE16),yes)36 #ifeq ($(RTEMS_GAS_CODE16),yes) 37 37 DEFINES += -DNEXT_GAS 38 endif38 #endif 39 39 CPPFLAGS += 40 40 CFLAGS += -
c/src/lib/libbsp/i386/pc386/start/start16.s
r711a2a1 r0ebbf66 34 34 .set STACKOFF, 0x200-0x10 # offset to load into %esp, from start of image 35 35 36 /* #define NEW_GAS*/36 /* #define NEW_GAS */ 37 37 /*----------------------------------------------------------------------------+ 38 38 | CODE section -
c/src/lib/libbsp/i386/pc386/startup/Makefile.in
r711a2a1 r0ebbf66 5 5 @SET_MAKE@ 6 6 srcdir = @srcdir@ 7 VPATH = @srcdir@:@srcdir@/../../../shared:@srcdir@/../../shared/irq 7 VPATH = @srcdir@:@srcdir@/../../../shared:@srcdir@/../../shared/irq:@srcdir@/../../shared/comm:@srcdir@/../../shared/pci 8 8 RTEMS_ROOT = @top_srcdir@ 9 9 PROJECT_ROOT = @PROJECT_ROOT@ … … 12 12 13 13 # C source names, if any, go here -- minus the .c 14 C_PIECES=bsplibc bsppost bspstart exit irq irq_init main sbrk 14 C_PIECES=bsplibc bsppost bspstart exit irq irq_init main sbrk i386-stub i386-stub-glue uart pcibios 15 15 C_FILES=$(C_PIECES:%=%.c) 16 16 C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) -
c/src/lib/libbsp/i386/pc386/startup/bspstart.c
r711a2a1 r0ebbf66 147 147 * Initialize printk channel 148 148 */ 149 149 150 _IBMPC_initVideo(); 150 151 -
c/src/lib/libbsp/i386/pc386/startup/exit.c
r711a2a1 r0ebbf66 36 36 #include <bsp.h> 37 37 #include <rtems/libio.h> 38 #include < pc386uart.h>38 #include <uart.h> 39 39 40 40 void bsp_cleanup(void) -
c/src/lib/libbsp/i386/pc386/startup/linkcmds
r711a2a1 r0ebbf66 63 63 _rodata_start = . ; 64 64 *(.rodata) 65 *(.gnu.linkonce.r*)66 65 _erodata = ALIGN( 0x10 ) ; 67 66 -
c/src/lib/libbsp/i386/pc386/timer/timer.c
r711a2a1 r0ebbf66 168 168 * disable interrrupt at i8259 level 169 169 */ 170 pc386_irq_disable_at_i8259s(used->idtIndex - PC386_IRQ_VECTOR_BASE);170 BSP_irq_disable_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE); 171 171 /* reset timer mode to standard (DOS) value */ 172 172 outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_16BIT|TIMER_RATEGEN); … … 186 186 * enable interrrupt at i8259 level 187 187 */ 188 pc386_irq_enable_at_i8259s(used->idtIndex - PC386_IRQ_VECTOR_BASE);188 BSP_irq_enable_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE); 189 189 } 190 190 … … 192 192 timerIsOn(const rtems_raw_irq_connect_data *used) 193 193 { 194 return pc386_irq_enabled_at_i8259s(used->idtIndex - PC386_IRQ_VECTOR_BASE);}194 return BSP_irq_enabled_at_i8259s(used->idtIndex - BSP_IRQ_VECTOR_BASE);} 195 195 196 196 static rtems_raw_irq_connect_data timer_raw_irq_data = { 197 PC_386_PERIODIC_TIMER + PC386_IRQ_VECTOR_BASE,197 BSP_PERIODIC_TIMER + BSP_IRQ_VECTOR_BASE, 198 198 timerisr, 199 199 timerOn, -
c/src/lib/libbsp/i386/pc386/wrapup/Makefile.in
r711a2a1 r0ebbf66 13 13 NETWORK = $(NETWORK_$(HAS_NETWORKING)_V) 14 14 15 BSP_PIECES=startup clock console timer pc386dev$(NETWORK)15 BSP_PIECES=startup clock console timer $(NETWORK) 16 16 GENERIC_PIECES= 17 17 -
c/src/lib/libbsp/i386/shared/Makefile.in
r711a2a1 r0ebbf66 13 13 14 14 # Descend into the $(RTEMS_BSP_FAMILY) directory 15 SUB_DIRS=irq io 15 SUB_DIRS=irq io comm pci 16 16 -
c/src/lib/libbsp/i386/shared/irq/irq.c
r711a2a1 r0ebbf66 22 22 * that must be disabled when a particular entry is activated. 23 23 * They will be dynamically computed from teh prioruty table given 24 * in pc386_rtems_irq_mngt_set();24 * in BSP_rtems_irq_mngt_set(); 25 25 * CAUTION : this table is accessed directly by interrupt routine 26 26 * prologue. 27 27 */ 28 rtems_i8259_masks irq_mask_or_tbl[ PC_386_IRQ_LINES_NUMBER];29 30 /* 31 * Copy of data given via initial pc386_rtems_irq_mngt_set() for28 rtems_i8259_masks irq_mask_or_tbl[BSP_IRQ_LINES_NUMBER]; 29 30 /* 31 * Copy of data given via initial BSP_rtems_irq_mngt_set() for 32 32 * the sake of efficiency. 33 33 * CAUTION : this table is accessed directly by interrupt routine 34 34 * prologue. 35 35 */ 36 rtems_irq_hdl current_irq[ PC_386_IRQ_LINES_NUMBER];36 rtems_irq_hdl current_irq[BSP_IRQ_LINES_NUMBER]; 37 37 /* 38 38 * default handler connected on each irq after bsp initialization … … 57 57 58 58 /*-------------------------------------------------------------------------+ 59 | Function: PC386_irq_disable_at_i8259s59 | Function: BSP_irq_disable_at_i8259s 60 60 | Description: Mask IRQ line in appropriate PIC chip. 61 61 | Global Variables: i8259s_cache … … 63 63 | Returns: Nothing. 64 64 +--------------------------------------------------------------------------*/ 65 int pc386_irq_disable_at_i8259s (const rtems_irq_symbolic_name irqLine)65 int BSP_irq_disable_at_i8259s (const rtems_irq_symbolic_name irqLine) 66 66 { 67 67 unsigned short mask; 68 68 unsigned int level; 69 69 70 if ( ((int)irqLine < PC_386_LOWEST_OFFSET) ||71 ((int)irqLine > PC_386_MAX_OFFSET )70 if ( ((int)irqLine < BSP_LOWEST_OFFSET) || 71 ((int)irqLine > BSP_MAX_OFFSET ) 72 72 ) 73 73 return 1; … … 92 92 93 93 /*-------------------------------------------------------------------------+ 94 | Function: pc386_irq_enable_at_i8259s94 | Function: BSP_irq_enable_at_i8259s 95 95 | Description: Unmask IRQ line in appropriate PIC chip. 96 96 | Global Variables: i8259s_cache … … 98 98 | Returns: Nothing. 99 99 +--------------------------------------------------------------------------*/ 100 int pc386_irq_enable_at_i8259s (const rtems_irq_symbolic_name irqLine)100 int BSP_irq_enable_at_i8259s (const rtems_irq_symbolic_name irqLine) 101 101 { 102 102 unsigned short mask; 103 103 unsigned int level; 104 104 105 if ( ((int)irqLine < PC_386_LOWEST_OFFSET) ||106 ((int)irqLine > PC_386_MAX_OFFSET )105 if ( ((int)irqLine < BSP_LOWEST_OFFSET) || 106 ((int)irqLine > BSP_MAX_OFFSET ) 107 107 ) 108 108 return 1; … … 126 126 } /* mask_irq */ 127 127 128 int pc386_irq_enabled_at_i8259s (const rtems_irq_symbolic_name irqLine)128 int BSP_irq_enabled_at_i8259s (const rtems_irq_symbolic_name irqLine) 129 129 { 130 130 unsigned short mask; 131 131 132 if ( ((int)irqLine < PC_386_LOWEST_OFFSET) ||133 ((int)irqLine > PC_386_MAX_OFFSET )132 if ( ((int)irqLine < BSP_LOWEST_OFFSET) || 133 ((int)irqLine > BSP_MAX_OFFSET ) 134 134 ) 135 135 return 1; … … 141 141 142 142 /*-------------------------------------------------------------------------+ 143 | Function: pc386_irq_ack_at_i8259s143 | Function: BSP_irq_ack_at_i8259s 144 144 | Description: Signal generic End Of Interrupt (EOI) to appropriate PIC. 145 145 | Global Variables: None. … … 147 147 | Returns: Nothing. 148 148 +--------------------------------------------------------------------------*/ 149 int pc386_irq_ack_at_i8259s (const rtems_irq_symbolic_name irqLine)150 { 151 if ( ((int)irqLine < PC_386_LOWEST_OFFSET) ||152 ((int)irqLine > PC_386_MAX_OFFSET )149 int BSP_irq_ack_at_i8259s (const rtems_irq_symbolic_name irqLine) 150 { 151 if ( ((int)irqLine < BSP_LOWEST_OFFSET) || 152 ((int)irqLine > BSP_MAX_OFFSET ) 153 153 ) 154 154 return 1; … … 213 213 static int isValidInterrupt(int irq) 214 214 { 215 if ( (irq < PC_386_LOWEST_OFFSET) || (irq > PC_386_MAX_OFFSET))215 if ( (irq < BSP_LOWEST_OFFSET) || (irq > BSP_MAX_OFFSET)) 216 216 return 0; 217 217 return 1; … … 222 222 */ 223 223 224 int pc386_install_rtems_irq_handler (const rtems_irq_connect_data* irq)224 int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq) 225 225 { 226 226 unsigned int level; … … 252 252 * Enable interrupt at PIC level 253 253 */ 254 pc386_irq_enable_at_i8259s (irq->name);254 BSP_irq_enable_at_i8259s (irq->name); 255 255 /* 256 256 * Enable interrupt on device … … 264 264 265 265 266 int pc386_get_current_rtems_irq_handler (rtems_irq_connect_data* irq)266 int BSP_get_current_rtems_irq_handler (rtems_irq_connect_data* irq) 267 267 { 268 268 if (!isValidInterrupt(irq->name)) { … … 273 273 } 274 274 275 int pc386_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)275 int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq) 276 276 { 277 277 unsigned int level; … … 295 295 * disable interrupt at PIC level 296 296 */ 297 pc386_irq_disable_at_i8259s (irq->name);297 BSP_irq_disable_at_i8259s (irq->name); 298 298 299 299 /* … … 318 318 */ 319 319 320 int pc386_rtems_irq_mngt_set(rtems_irq_global_settings* config)320 int BSP_rtems_irq_mngt_set(rtems_irq_global_settings* config) 321 321 { 322 322 int i; … … 338 338 for (i=0; i < internal_config->irqNb; i++) { 339 339 if (rtems_hdl_tbl[i].hdl != default_rtems_entry.hdl) { 340 pc386_irq_enable_at_i8259s (i);340 BSP_irq_enable_at_i8259s (i); 341 341 rtems_hdl_tbl[i].on(&rtems_hdl_tbl[i]); 342 342 } 343 343 else { 344 344 rtems_hdl_tbl[i].off(&rtems_hdl_tbl[i]); 345 pc386_irq_disable_at_i8259s (i);345 BSP_irq_disable_at_i8259s (i); 346 346 } 347 347 } … … 349 349 * must disable slave pic anyway 350 350 */ 351 pc386_irq_enable_at_i8259s (2);351 BSP_irq_enable_at_i8259s (2); 352 352 _CPU_ISR_Enable(level); 353 353 return 1; 354 354 } 355 355 356 int pc386_rtems_irq_mngt_get(rtems_irq_global_settings** config)356 int BSP_rtems_irq_mngt_get(rtems_irq_global_settings** config) 357 357 { 358 358 *config = internal_config; -
c/src/lib/libbsp/i386/shared/irq/irq.h
r711a2a1 r0ebbf66 38 38 typedef enum { 39 39 /* Base vector for our IRQ handlers. */ 40 PC386_IRQ_VECTOR_BASE = PC386_ASM_IRQ_VECTOR_BASE,41 PC_386_IRQ_LINES_NUMBER = 16,42 PC_386_LOWEST_OFFSET = 0,43 PC_386_MAX_OFFSET = PC_386_IRQ_LINES_NUMBER - 1,40 BSP_IRQ_VECTOR_BASE = BSP_ASM_IRQ_VECTOR_BASE, 41 BSP_IRQ_LINES_NUMBER = 16, 42 BSP_LOWEST_OFFSET = 0, 43 BSP_MAX_OFFSET = BSP_IRQ_LINES_NUMBER - 1, 44 44 /* 45 * Interrupt offset in comparison to PC386_ASM_IRQ_VECTOR_BASE46 * NB : 1) Interrupt vector number in IDT = offset + PC386_ASM_IRQ_VECTOR_BASE45 * Interrupt offset in comparison to BSP_ASM_IRQ_VECTOR_BASE 46 * NB : 1) Interrupt vector number in IDT = offset + BSP_ASM_IRQ_VECTOR_BASE 47 47 * 2) The same name should be defined on all architecture 48 48 * so that handler connexion can be unchanged. 49 49 */ 50 PC_386_PERIODIC_TIMER = 0,51 52 PC_386_KEYBOARD = 1,53 54 PC386_UART_COM2_IRQ = 3,55 56 PC386_UART_COM1_IRQ = 4,57 58 PC_386_RT_TIMER1 = 8,50 BSP_PERIODIC_TIMER = 0, 51 52 BSP_KEYBOARD = 1, 53 54 BSP_UART_COM2_IRQ = 3, 55 56 BSP_UART_COM1_IRQ = 4, 57 58 BSP_RT_TIMER1 = 8, 59 59 60 PC_386_RT_TIMER3 = 1060 BSP_RT_TIMER3 = 10 61 61 }rtems_irq_symbolic_name; 62 62 … … 128 128 rtems_irq_connect_data* irqHdlTbl; 129 129 /* 130 * actual value of PC386_IRQ_VECTOR_BASE...130 * actual value of BSP_IRQ_VECTOR_BASE... 131 131 */ 132 132 rtems_irq_symbolic_name irqBase; … … 156 156 * not be propagated further to the processor 157 157 */ 158 int pc386_irq_disable_at_i8259s (const rtems_irq_symbolic_name irqLine);158 int BSP_irq_disable_at_i8259s (const rtems_irq_symbolic_name irqLine); 159 159 /* 160 160 * function to enable a particular irq at 8259 level. After calling … … 162 162 * be propagated further to the processor 163 163 */ 164 int pc386_irq_enable_at_i8259s (const rtems_irq_symbolic_name irqLine);164 int BSP_irq_enable_at_i8259s (const rtems_irq_symbolic_name irqLine); 165 165 /* 166 166 * function to acknoledge a particular irq at 8259 level. After calling … … 170 170 * handlers. 171 171 */ 172 int pc386_irq_ack_at_i8259s (const rtems_irq_symbolic_name irqLine);172 int BSP_irq_ack_at_i8259s (const rtems_irq_symbolic_name irqLine); 173 173 /* 174 174 * function to check if a particular irq is enabled at 8259 level. After calling 175 175 */ 176 int pc386_irq_enabled_at_i8259s (const rtems_irq_symbolic_name irqLine);176 int BSP_irq_enabled_at_i8259s (const rtems_irq_symbolic_name irqLine); 177 177 /* 178 178 * ------------------------ RTEMS Single Irq Handler Mngt Routines ---------------- … … 212 212 * 213 213 */ 214 int pc386_install_rtems_irq_handler (const rtems_irq_connect_data*);214 int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*); 215 215 /* 216 216 * function to get the current RTEMS irq handler for ptr->name. It enables to 217 217 * define hanlder chain... 218 218 */ 219 int pc386_get_current_rtems_irq_handler (rtems_irq_connect_data* ptr);219 int BSP_get_current_rtems_irq_handler (rtems_irq_connect_data* ptr); 220 220 /* 221 221 * function to get disconnect the RTEMS irq handler for ptr->name. … … 223 223 * The user can use the previous function to get it. 224 224 */ 225 int pc386_remove_rtems_irq_handler (const rtems_irq_connect_data*);225 int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data*); 226 226 227 227 /* … … 234 234 * handler (config->irqHdlTbl[i].hdl) different from "config->defaultEntry.hdl" 235 235 * has been individualy connected via 236 * pc386_install_rtems_irq_handler(&config->irqHdlTbl[i])236 * BSP_install_rtems_irq_handler(&config->irqHdlTbl[i]) 237 237 * And each handler currently equal to config->defaultEntry.hdl 238 238 * has been previously disconnected via 239 * pc386_remove_rtems_irq_handler (&config->irqHdlTbl[i])239 * BSP_remove_rtems_irq_handler (&config->irqHdlTbl[i]) 240 240 * 241 241 * This is to say that all information given will be used and not just … … 248 248 */ 249 249 250 int pc386_rtems_irq_mngt_set(rtems_irq_global_settings* config);250 int BSP_rtems_irq_mngt_set(rtems_irq_global_settings* config); 251 251 /* 252 252 * (Re) get info on current RTEMS interrupt management. 253 253 */ 254 int pc386_rtems_irq_mngt_get(rtems_irq_global_settings**);254 int BSP_rtems_irq_mngt_get(rtems_irq_global_settings**); 255 255 256 256 #ifdef __cplusplus -
c/src/lib/libbsp/i386/shared/irq/irq_asm.h
r711a2a1 r0ebbf66 16 16 #define __IRQ_ASM_H__ 17 17 18 #define PC386_ASM_IRQ_VECTOR_BASE 0x2018 #define BSP_ASM_IRQ_VECTOR_BASE 0x20 19 19 /* PIC's command and mask registers */ 20 20 #define PIC_MASTER_COMMAND_IO_PORT 0x20 /* Master PIC command register */ -
c/src/lib/libbsp/i386/shared/irq/irq_init.c
r711a2a1 r0ebbf66 56 56 * Table used to store rtems managed interrupt handlers. 57 57 * Borrow the table to store raw handler entries at the beginning. 58 * The table will be reinitialized before the call to pc386_rtems_irq_mngt_set().59 */ 60 static rtems_irq_connect_data rtemsIrq[ PC_386_IRQ_LINES_NUMBER] = {58 * The table will be reinitialized before the call to BSP_rtems_irq_mngt_set(). 59 */ 60 static rtems_irq_connect_data rtemsIrq[BSP_IRQ_LINES_NUMBER] = { 61 61 {0,(rtems_irq_hdl)rtems_irq_prologue_0}, 62 62 {0,(rtems_irq_hdl)rtems_irq_prologue_1}, … … 87 87 }; 88 88 89 static rtems_irq_prio irqPrioTable[ PC_386_IRQ_LINES_NUMBER]={89 static rtems_irq_prio irqPrioTable[BSP_IRQ_LINES_NUMBER]={ 90 90 /* 91 91 * actual rpiorities for interrupt : … … 156 156 * with RTEMS prologue. 157 157 */ 158 for (i = 0; i < PC_386_IRQ_LINES_NUMBER; i++) {158 for (i = 0; i < BSP_IRQ_LINES_NUMBER; i++) { 159 159 create_interrupt_gate_descriptor(&idtEntry,(rtems_raw_irq_hdl) rtemsIrq[i].hdl); 160 idt_entry_tbl[i + PC386_ASM_IRQ_VECTOR_BASE] = idtEntry;160 idt_entry_tbl[i + BSP_ASM_IRQ_VECTOR_BASE] = idtEntry; 161 161 } 162 162 /* … … 168 168 * re-init the rtemsIrq table 169 169 */ 170 for (i = 0; i < PC_386_IRQ_LINES_NUMBER; i++) {170 for (i = 0; i < BSP_IRQ_LINES_NUMBER; i++) { 171 171 rtemsIrq[i] = defaultIrq; 172 172 rtemsIrq[i].name = i; … … 175 175 * Init initial Interrupt management config 176 176 */ 177 initial_config.irqNb = PC_386_IRQ_LINES_NUMBER;177 initial_config.irqNb = BSP_IRQ_LINES_NUMBER; 178 178 initial_config.defaultEntry = defaultIrq; 179 179 initial_config.irqHdlTbl = rtemsIrq; 180 initial_config.irqBase = PC386_ASM_IRQ_VECTOR_BASE;180 initial_config.irqBase = BSP_ASM_IRQ_VECTOR_BASE; 181 181 initial_config.irqPrioTbl = irqPrioTable; 182 182 183 if (! pc386_rtems_irq_mngt_set(&initial_config)) {183 if (!BSP_rtems_irq_mngt_set(&initial_config)) { 184 184 /* 185 185 * put something here that will show the failure... … … 201 201 printk("idt_entry_tbl = %x Interrupt_descriptor_table addr = %x\n", 202 202 idt_entry_tbl, &Interrupt_descriptor_table); 203 tmp = (unsigned) get_hdl_from_vector ( PC386_ASM_IRQ_VECTOR_BASE + PC_386_PERIODIC_TIMER);203 tmp = (unsigned) get_hdl_from_vector (BSP_ASM_IRQ_VECTOR_BASE + BSP_PERIODIC_TIMER); 204 204 printk("clock isr address from idt = %x should be %x\n", 205 205 tmp, (unsigned) rtems_irq_prologue_0);
Note: See TracChangeset
for help on using the changeset viewer.