summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i386/shared
diff options
context:
space:
mode:
authorVipul Nayyar <nayyar_vipul@yahoo.com>2013-07-26 20:23:39 +0530
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-29 09:07:19 +0200
commit2bdcf4fd511941dab9ef0db0790363dedfaf622f (patch)
treebd5fd57c1b34098691a332fb2012506795617b0e /c/src/lib/libbsp/i386/shared
parentscore: Move object content to public API (diff)
downloadrtems-2bdcf4fd511941dab9ef0db0790363dedfaf622f.tar.bz2
Updated legacy code in i386 pc386
Diffstat (limited to 'c/src/lib/libbsp/i386/shared')
-rw-r--r--c/src/lib/libbsp/i386/shared/comm/tty_drv.c93
-rw-r--r--c/src/lib/libbsp/i386/shared/smp/smp-imps.c30
2 files changed, 48 insertions, 75 deletions
diff --git a/c/src/lib/libbsp/i386/shared/comm/tty_drv.c b/c/src/lib/libbsp/i386/shared/comm/tty_drv.c
index aafb02a58f..16a40df465 100644
--- a/c/src/lib/libbsp/i386/shared/comm/tty_drv.c
+++ b/c/src/lib/libbsp/i386/shared/comm/tty_drv.c
@@ -27,63 +27,19 @@
#include <termios.h>
#include <uart.h>
#include <libcpu/cpuModel.h>
+#include "tty_drv.h"
int BSP_poll_read(int);
/* Internal routines */
static int tty1_conSetAttr( int minor, const struct termios *t);
static int tty2_conSetAttr( int minor, const struct termios *t);
-static void isr_on(const rtems_irq_connect_data *);
-static void isr_off(const rtems_irq_connect_data *);
-static int isr_is_on(const rtems_irq_connect_data *);
extern BSP_polling_getchar_function_type BSP_poll_char;
extern int BSPConsolePort;
extern void rtems_set_waiting_id_comx( int port, rtems_id id, rtems_event_set event );
/*
- * Interrupt structure for tty1
- */
-static rtems_irq_connect_data tty1_isr_data =
-{
- BSP_UART_COM1_IRQ,
- BSP_uart_termios_isr_com1,
- 0,
- isr_on,
- isr_off,
- isr_is_on};
-
-/*
- * Interrupt structure for tty2
- */
-static rtems_irq_connect_data tty2_isr_data =
-{
- BSP_UART_COM2_IRQ,
- BSP_uart_termios_isr_com2,
- 0,
- isr_on,
- isr_off,
- isr_is_on};
-
-static void
-isr_on(const rtems_irq_connect_data *unused)
-{
- return;
-}
-
-static void
-isr_off(const rtems_irq_connect_data *unused)
-{
- return;
-}
-
-static int
-isr_is_on(const rtems_irq_connect_data *irq)
-{
- return BSP_irq_enabled_at_i8259s(irq->name);
-}
-
-/*
* TTYS1 - device driver INITIALIZE entry point.
*/
rtems_device_driver
@@ -111,12 +67,14 @@ tty1_initialize(rtems_device_major_number major,
*/
/* 9600-8-N-1, without hardware flow control */
BSP_uart_init( BSP_UART_COM1, 9600, CHR_8_BITS, 0, 0, 0 );
- status = BSP_install_rtems_irq_handler( &tty1_isr_data );
- if( !status )
- {
- printk("Error installing ttyS1 interrupt handler!\n");
- rtems_fatal_error_occurred(status);
- }
+ status = rtems_interrupt_handler_install(
+ BSP_UART_COM1_IRQ,
+ "tty_drv",
+ RTEMS_INTERRUPT_UNIQUE,
+ BSP_uart_termios_isr_com1,
+ NULL
+ );
+ assert(status == RTEMS_SUCCESSFUL);
/*
* Register the device
*/
@@ -132,7 +90,14 @@ tty1_initialize(rtems_device_major_number major,
static int tty1_last_close(int major, int minor, void *arg)
{
- BSP_remove_rtems_irq_handler( &tty1_isr_data );
+ rtems_status_code status;
+
+ status = rtems_interrupt_handler_remove(
+ BSP_UART_COM1_IRQ,
+ BSP_uart_termios_isr_com1,
+ NULL
+ );
+ assert(status == RTEMS_SUCCESSFUL);
return 0;
}
@@ -339,12 +304,15 @@ tty2_initialize(rtems_device_major_number major,
*/
/* 9600-8-N-1, without hardware flow control */
BSP_uart_init( BSP_UART_COM2, 9600, CHR_8_BITS, 0, 0, 0);
- status = BSP_install_rtems_irq_handler( &tty2_isr_data );
- if( !status )
- {
- printk("Error installing serial console interrupt handler!\n");
- rtems_fatal_error_occurred(status);
- }
+ status = rtems_interrupt_handler_install(
+ BSP_UART_COM2_IRQ,
+ "tty_drv",
+ RTEMS_INTERRUPT_UNIQUE,
+ BSP_uart_termios_isr_com2,
+ NULL
+ );
+ assert(status == RTEMS_SUCCESSFUL);
+
/*
* Register the device
*/
@@ -360,7 +328,14 @@ tty2_initialize(rtems_device_major_number major,
static int tty2_last_close(int major, int minor, void *arg)
{
- BSP_remove_rtems_irq_handler( &tty2_isr_data );
+ rtems_status_code status;
+
+ status = rtems_interrupt_handler_remove(
+ BSP_UART_COM2_IRQ,
+ BSP_uart_termios_isr_com2,
+ NULL
+ );
+ assert(status == RTEMS_SUCCESSFUL);
return 0;
}
diff --git a/c/src/lib/libbsp/i386/shared/smp/smp-imps.c b/c/src/lib/libbsp/i386/shared/smp/smp-imps.c
index 806cfb93f4..57ec5db3e8 100644
--- a/c/src/lib/libbsp/i386/shared/smp/smp-imps.c
+++ b/c/src/lib/libbsp/i386/shared/smp/smp-imps.c
@@ -79,6 +79,7 @@
#include <rtems/bspsmp.h>
#include <rtems/bspIo.h>
#include <libcpu/cpu.h>
+#include <assert.h>
extern void _pc386_delay(void);
@@ -120,14 +121,14 @@ static void UDELAY(int x)
while ( _i-- )
_pc386_delay();
}
-
+
#define READ_MSR_LO(_x) \
(unsigned int)(read_msr(_x) & 0xffffffff)
static inline unsigned long long read_msr(unsigned int msr)
{
unsigned long long value;
-
+
asm volatile("rdmsr" : "=A" (value) : "c" (msr));
return value;
}
@@ -385,7 +386,7 @@ imps_read_config_table(unsigned start, int count)
case IMPS_BCT_PROCESSOR:
if ( imps_num_cpus < rtems_configuration_get_maximum_processors() ) {
add_processor((imps_processor *)start);
- } else
+ } else
imps_num_cpus++;
start += 12; /* 20 total */
break;
@@ -751,22 +752,19 @@ rtems_isr ap_ipi_isr(
#include <rtems/irq.h>
-static rtems_irq_connect_data apIPIIrqData = {
- 16,
- (void *)ap_ipi_isr,
- 0,
- NULL, /* On */
- NULL, /* Off */
- NULL, /* IsOn */
-};
-
extern void bsp_reset(void);
void ipi_install_irq(void)
{
- if (!BSP_install_rtems_irq_handler (&apIPIIrqData)) {
- printk("Unable to initialize IPI\n");
- bsp_reset();
- }
+ rtems_status_code status;
+
+ status = rtems_interrupt_handler_install(
+ 16,
+ "smp-imps",
+ RTEMS_INTERRUPT_UNIQUE,
+ ap_ipi_isr,
+ NULL
+ );
+ assert(status == RTEMS_SUCCESSFUL);
}
#ifdef __SSE__