m68k/mvme162: Fix warnings

This commit is contained in:
Joel Sherrill
2014-10-15 17:17:08 -05:00
parent 2674e84c21
commit c186f2ed9e
9 changed files with 855 additions and 884 deletions

View File

@@ -5,7 +5,9 @@
* *
* To run with interrupt-driven I/O, ensure m360_smc1_interrupt * To run with interrupt-driven I/O, ensure m360_smc1_interrupt
* is set before calling the initialization routine. * is set before calling the initialization routine.
* */
/*
* Author: * Author:
* W. Eric Norum * W. Eric Norum
* Saskatchewan Accelerator Laboratory * Saskatchewan Accelerator Laboratory
@@ -30,7 +32,7 @@
/* /*
* Declare clock speed -- may be overwritten by downloader or debugger * Declare clock speed -- may be overwritten by downloader or debugger
*/ */
int m360_clock_rate = 25000000; int m360_clock_rate = 25000000;
/* /*
* Interrupt-driven input buffer * Interrupt-driven input buffer
@@ -40,7 +42,7 @@ int console_baud_rate = 9600;
/* /*
*/ */
#define RXBUFSIZE 16 #define RXBUFSIZE 16
/* /*
* Interrupt-driven callback * Interrupt-driven callback
@@ -64,15 +66,15 @@ static volatile m360BufferDescriptor_t *smcRxBd, *smcTxBd;
static int static int
smc1BRGC (int baud) smc1BRGC (int baud)
{ {
int divisor; int divisor;
int div16 = 0; int div16 = 0;
divisor = ((m360_clock_rate / 16) + (baud / 2)) / baud; divisor = ((m360_clock_rate / 16) + (baud / 2)) / baud;
if (divisor > 4096) { if (divisor > 4096) {
div16 = 1; div16 = 1;
divisor = (divisor + 8) / 16; divisor = (divisor + 8) / 16;
} }
return M360_BRG_EN | M360_BRG_EXTC_BRGCLK | ((divisor - 1) << 1) | div16; return M360_BRG_EN | M360_BRG_EXTC_BRGCLK | ((divisor - 1) << 1) | div16;
} }
/* /*
@@ -95,165 +97,164 @@ smc1SetAttributes (int minor, const struct termios *t)
static rtems_isr static rtems_isr
smc1InterruptHandler (rtems_vector_number v) smc1InterruptHandler (rtems_vector_number v)
{ {
/* /*
* Buffer received? * Buffer received?
*/ */
if (m360.smc1.smce & 0x1) { if (m360.smc1.smce & 0x1) {
m360.smc1.smce = 0x1; m360.smc1.smce = 0x1;
while ((smcRxBd->status & M360_BD_EMPTY) == 0) { while ((smcRxBd->status & M360_BD_EMPTY) == 0) {
rtems_termios_enqueue_raw_characters (smc1ttyp, rtems_termios_enqueue_raw_characters (smc1ttyp,
(char *)smcRxBd->buffer, (char *)smcRxBd->buffer,
smcRxBd->length); smcRxBd->length);
smcRxBd->status = M360_BD_EMPTY | M360_BD_WRAP | M360_BD_INTERRUPT; smcRxBd->status = M360_BD_EMPTY | M360_BD_WRAP | M360_BD_INTERRUPT;
} }
} }
/* /*
* Buffer transmitted? * Buffer transmitted?
*/ */
if (m360.smc1.smce & 0x2) { if (m360.smc1.smce & 0x2) {
m360.smc1.smce = 0x2; m360.smc1.smce = 0x2;
if ((smcTxBd->status & M360_BD_READY) == 0) if ((smcTxBd->status & M360_BD_READY) == 0)
rtems_termios_dequeue_characters (smc1ttyp, smcTxBd->length); rtems_termios_dequeue_characters (smc1ttyp, smcTxBd->length);
} }
m360.cisr = 1UL << 4; /* Clear SMC1 interrupt-in-service bit */ m360.cisr = 1UL << 4; /* Clear SMC1 interrupt-in-service bit */
} }
static int static int
smc1Initialize (int major, int minor, void *arg) smc1Initialize (int major, int minor, void *arg)
{ {
/* /*
* Allocate buffer descriptors * Allocate buffer descriptors
*/ */
smcRxBd = M360AllocateBufferDescriptors (1); smcRxBd = M360AllocateBufferDescriptors (1);
smcTxBd = M360AllocateBufferDescriptors (1); smcTxBd = M360AllocateBufferDescriptors (1);
/* /*
* Configure port B pins to enable SMTXD1 and SMRXD1 pins * Configure port B pins to enable SMTXD1 and SMRXD1 pins
*/ */
m360.pbpar |= 0xC0; m360.pbpar |= 0xC0;
m360.pbdir &= ~0xC0; m360.pbdir &= ~0xC0;
m360.pbodr &= ~0xC0; m360.pbodr &= ~0xC0;
/* /*
* Set up BRG1 (9,600 baud) * Set up BRG1 (9,600 baud)
*/ */
m360.brgc1 = M360_BRG_RST; m360.brgc1 = M360_BRG_RST;
m360.brgc1 = smc1BRGC (console_baud_rate); m360.brgc1 = smc1BRGC (console_baud_rate);
/* /*
* Put SMC1 in NMSI mode, connect SMC1 to BRG1 * Put SMC1 in NMSI mode, connect SMC1 to BRG1
*/ */
m360.simode |= M360_SI_SMC1_BRG1; m360.simode |= M360_SI_SMC1_BRG1;
/* /*
* Set up SMC1 parameter RAM common to all protocols * Set up SMC1 parameter RAM common to all protocols
*/ */
m360.smc1p.rbase = (char *)smcRxBd - (char *)&m360; m360.smc1p.rbase = (char *)smcRxBd - (char *)&m360;
m360.smc1p.tbase = (char *)smcTxBd - (char *)&m360; m360.smc1p.tbase = (char *)smcTxBd - (char *)&m360;
m360.smc1p.rfcr = M360_RFCR_MOT | M360_RFCR_DMA_SPACE; m360.smc1p.rfcr = M360_RFCR_MOT | M360_RFCR_DMA_SPACE;
m360.smc1p.tfcr = M360_TFCR_MOT | M360_TFCR_DMA_SPACE; m360.smc1p.tfcr = M360_TFCR_MOT | M360_TFCR_DMA_SPACE;
if (m360_smc1_interrupt) if (m360_smc1_interrupt)
m360.smc1p.mrblr = RXBUFSIZE; m360.smc1p.mrblr = RXBUFSIZE;
else else
m360.smc1p.mrblr = 1; m360.smc1p.mrblr = 1;
/* /*
* Set up SMC1 parameter RAM UART-specific parameters * Set up SMC1 parameter RAM UART-specific parameters
*/ */
m360.smc1p.un.uart.max_idl = 10; m360.smc1p.un.uart.max_idl = 10;
m360.smc1p.un.uart.brklen = 0; m360.smc1p.un.uart.brklen = 0;
m360.smc1p.un.uart.brkec = 0; m360.smc1p.un.uart.brkec = 0;
m360.smc1p.un.uart.brkcr = 0; m360.smc1p.un.uart.brkcr = 0;
/* /*
* Set up the Receive Buffer Descriptor * Set up the Receive Buffer Descriptor
*/ */
smcRxBd->status = M360_BD_EMPTY | M360_BD_WRAP | M360_BD_INTERRUPT; smcRxBd->status = M360_BD_EMPTY | M360_BD_WRAP | M360_BD_INTERRUPT;
smcRxBd->length = 0; smcRxBd->length = 0;
smcRxBd->buffer = rxBuf; smcRxBd->buffer = rxBuf;
/* /*
* Setup the Transmit Buffer Descriptor * Setup the Transmit Buffer Descriptor
*/ */
smcTxBd->status = M360_BD_WRAP; smcTxBd->status = M360_BD_WRAP;
/* /*
* Set up SMC1 general and protocol-specific mode registers * Set up SMC1 general and protocol-specific mode registers
*/ */
m360.smc1.smce = ~0; /* Clear any pending events */ m360.smc1.smce = ~0; /* Clear any pending events */
m360.smc1.smcm = 0; /* Mask all interrupt/event sources */ m360.smc1.smcm = 0; /* Mask all interrupt/event sources */
m360.smc1.smcmr = M360_SMCMR_CLEN(9) | M360_SMCMR_SM_UART; m360.smc1.smcmr = M360_SMCMR_CLEN(9) | M360_SMCMR_SM_UART;
/* /*
* Send "Init parameters" command * Send "Init parameters" command
*/ */
M360ExecuteRISC (M360_CR_OP_INIT_RX_TX | M360_CR_CHAN_SMC1); M360ExecuteRISC (M360_CR_OP_INIT_RX_TX | M360_CR_CHAN_SMC1);
/* /*
* Enable receiver and transmitter * Enable receiver and transmitter
*/ */
m360.smc1.smcmr |= M360_SMCMR_TEN | M360_SMCMR_REN; m360.smc1.smcmr |= M360_SMCMR_TEN | M360_SMCMR_REN;
if (m360_smc1_interrupt) { if (m360_smc1_interrupt) {
rtems_isr_entry old_handler; rtems_isr_entry old_handler;
rtems_status_code sc;
sc = rtems_interrupt_catch (smc1InterruptHandler, (void) rtems_interrupt_catch (smc1InterruptHandler,
(m360.cicr & 0xE0) | 0x04, (m360.cicr & 0xE0) | 0x04,
&old_handler); &old_handler);
m360.smc1.smcm = 3; /* Enable SMC1 TX and RX interrupts */ m360.smc1.smcm = 3; /* Enable SMC1 TX and RX interrupts */
m360.cimr |= 1UL << 4; /* Enable SMC1 interrupts */ m360.cimr |= 1UL << 4; /* Enable SMC1 interrupts */
} }
return 0; return 0;
} }
static int static int
smc1PollRead (int minor) smc1PollRead (int minor)
{ {
unsigned char c; unsigned char c;
if (smcRxBd->status & M360_BD_EMPTY) if (smcRxBd->status & M360_BD_EMPTY)
return -1; return -1;
c = rxBuf[0]; c = rxBuf[0];
smcRxBd->status = M360_BD_EMPTY | M360_BD_WRAP; smcRxBd->status = M360_BD_EMPTY | M360_BD_WRAP;
return c; return c;
} }
/* /*
* Device-dependent write routine * Device-dependent write routine
* Interrupt-driven devices: * Interrupt-driven devices:
* Begin transmission of as many characters as possible (minimum is 1). * Begin transmission of as many characters as possible (minimum is 1).
* Polling devices: * Polling devices:
* Transmit all characters. * Transmit all characters.
*/ */
static ssize_t static ssize_t
smc1InterruptWrite (int minor, const char *buf, size_t len) smc1InterruptWrite (int minor, const char *buf, size_t len)
{ {
if (len > 0) { if (len > 0) {
smcTxBd->buffer = (char *)buf; smcTxBd->buffer = (char *)buf;
smcTxBd->length = len; smcTxBd->length = len;
smcTxBd->status = M360_BD_READY | M360_BD_WRAP | M360_BD_INTERRUPT; smcTxBd->status = M360_BD_READY | M360_BD_WRAP | M360_BD_INTERRUPT;
} }
return 0; return 0;
} }
static ssize_t static ssize_t
smc1PollWrite (int minor, const char *buf, size_t len) smc1PollWrite (int minor, const char *buf, size_t len)
{ {
size_t retval = len; size_t retval = len;
while (len--) { while (len--) {
static char txBuf; static char txBuf;
while (smcTxBd->status & M360_BD_READY) while (smcTxBd->status & M360_BD_READY)
continue; continue;
txBuf = *buf++; txBuf = *buf++;
smcTxBd->buffer = &txBuf; smcTxBd->buffer = &txBuf;
smcTxBd->length = 1; smcTxBd->length = 1;
smcTxBd->status = M360_BD_READY | M360_BD_WRAP; smcTxBd->status = M360_BD_READY | M360_BD_WRAP;
} }
return retval; return retval;
} }
/* /*
@@ -277,20 +278,20 @@ rtems_device_driver console_initialize(
void *arg void *arg
) )
{ {
rtems_status_code status; rtems_status_code status;
/* /*
* Set up TERMIOS * Set up TERMIOS
*/ */
rtems_termios_initialize (); rtems_termios_initialize ();
/* /*
* Register the device * Register the device
*/ */
status = rtems_io_register_name ("/dev/console", major, 0); status = rtems_io_register_name ("/dev/console", major, 0);
if (status != RTEMS_SUCCESSFUL) if (status != RTEMS_SUCCESSFUL)
rtems_fatal_error_occurred (status); rtems_fatal_error_occurred (status);
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
/* /*
@@ -302,41 +303,41 @@ rtems_device_driver console_open(
void * arg void * arg
) )
{ {
rtems_status_code sc; rtems_status_code sc;
static const rtems_termios_callbacks intrCallbacks = { static const rtems_termios_callbacks intrCallbacks = {
smc1Initialize, /* firstOpen */ smc1Initialize, /* firstOpen */
NULL, /* lastClose */ NULL, /* lastClose */
NULL, /* pollRead */ NULL, /* pollRead */
smc1InterruptWrite, /* write */ smc1InterruptWrite, /* write */
smc1SetAttributes, /* setAttributes */ smc1SetAttributes, /* setAttributes */
NULL, /* stopRemoteTx */ NULL, /* stopRemoteTx */
NULL, /* startRemoteTx */ NULL, /* startRemoteTx */
1 /* outputUsesInterrupts */ 1 /* outputUsesInterrupts */
}; };
static const rtems_termios_callbacks pollCallbacks = { static const rtems_termios_callbacks pollCallbacks = {
smc1Initialize, /* firstOpen */ smc1Initialize, /* firstOpen */
NULL, /* lastClose */ NULL, /* lastClose */
smc1PollRead, /* pollRead */ smc1PollRead, /* pollRead */
smc1PollWrite, /* write */ smc1PollWrite, /* write */
smc1SetAttributes, /* setAttributes */ smc1SetAttributes, /* setAttributes */
NULL, /* stopRemoteTx */ NULL, /* stopRemoteTx */
NULL, /* startRemoteTx */ NULL, /* startRemoteTx */
0 /* outputUsesInterrupts */ 0 /* outputUsesInterrupts */
}; };
/* /*
* Do generic termios initialization * Do generic termios initialization
*/ */
if (m360_smc1_interrupt) { if (m360_smc1_interrupt) {
rtems_libio_open_close_args_t *args = arg; rtems_libio_open_close_args_t *args = arg;
sc = rtems_termios_open (major, minor, arg, &intrCallbacks); sc = rtems_termios_open (major, minor, arg, &intrCallbacks);
smc1ttyp = args->iop->data1; smc1ttyp = args->iop->data1;
} }
else { else {
sc = rtems_termios_open (major, minor, arg, &pollCallbacks); sc = rtems_termios_open (major, minor, arg, &pollCallbacks);
} }
return sc; return sc;
} }
/* /*
@@ -348,7 +349,7 @@ rtems_device_driver console_close(
void * arg void * arg
) )
{ {
return rtems_termios_close (arg); return rtems_termios_close (arg);
} }
/* /*
@@ -360,7 +361,7 @@ rtems_device_driver console_read(
void * arg void * arg
) )
{ {
return rtems_termios_read (arg); return rtems_termios_read (arg);
} }
/* /*
@@ -372,7 +373,7 @@ rtems_device_driver console_write(
void * arg void * arg
) )
{ {
return rtems_termios_write (arg); return rtems_termios_write (arg);
} }
/* /*
@@ -384,5 +385,5 @@ rtems_device_driver console_control(
void * arg void * arg
) )
{ {
return rtems_termios_ioctl (arg); return rtems_termios_ioctl (arg);
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1038,7 +1038,6 @@ rtems_device_driver SciRead (
{ {
rtems_libio_rw_args_t *rw_args; /* ptr to argument struct */ rtems_libio_rw_args_t *rw_args; /* ptr to argument struct */
char *buffer; char *buffer;
uint16_t length;
rw_args = (rtems_libio_rw_args_t *) arg; /* arguments to read() */ rw_args = (rtems_libio_rw_args_t *) arg; /* arguments to read() */
@@ -1054,8 +1053,6 @@ rtems_device_driver SciRead (
buffer = rw_args->buffer; /* points to user's buffer */ buffer = rw_args->buffer; /* points to user's buffer */
length = rw_args->count; /* how many bytes they want */
/* *buffer = SciReadCharWait(); wait for a character */ /* *buffer = SciReadCharWait(); wait for a character */
/* if there isn't a character available, wait until one shows up */ /* if there isn't a character available, wait until one shows up */
@@ -1147,7 +1144,6 @@ rtems_device_driver SciControl (
{ {
rtems_libio_ioctl_args_t *args = arg; /* rtems arg struct */ rtems_libio_ioctl_args_t *args = arg; /* rtems arg struct */
uint16_t command; /* the cmd to execute */ uint16_t command; /* the cmd to execute */
uint16_t unused; /* maybe later */
uint16_t *ptr; /* ptr to user data */ uint16_t *ptr; /* ptr to user data */
/*printk("%s major=%d minor=%d\r\n", __FUNCTION__,major,minor); */ /*printk("%s major=%d minor=%d\r\n", __FUNCTION__,major,minor); */

View File

@@ -1,7 +1,9 @@
/* /*
* This file contains the MVME162 console IO package. * This file contains the MVME162 console IO package.
* */
* COPYRIGHT (c) 1989-1999.
/*
* COPYRIGHT (c) 1989-2013.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -24,19 +26,10 @@
Ring_buffer_t Console_Buffer[2]; Ring_buffer_t Console_Buffer[2];
static bool Console_Is_Initialized = false;
/* Printk function */
static void _162Bug_output_char( char c );
static void _BSP_output_char( char c );
BSP_output_char_function_type BSP_output_char = _BSP_output_char;
/* /*
* Interrupt handler for receiver interrupts * Interrupt handler for receiver interrupts
*/ */
static rtems_isr C_Receive_ISR(rtems_vector_number vector)
rtems_isr C_Receive_ISR(rtems_vector_number vector)
{ {
register int ipend, port; register int ipend, port;
@@ -55,44 +48,6 @@ rtems_isr C_Receive_ISR(rtems_vector_number vector)
} }
} }
/*
* _162Bug_output_char
*
* Output a single character using the 162Bug functions. The character
* will be written to the default output port.
*/
void _162Bug_output_char( char c )
{
asm volatile( "moveb %0, -(%%sp)\n\t" /* char to output */
"trap #15\n\t" /* Trap to 162Bug */
".short 0x20" /* Code for .OUTCHR */
:: "d" (c) );
}
/*
* _BSP_output_char
*
* printk() function prototyped in bspIo.h. Does not use termios.
*
* If we have initialized the console device then use it, otherwise
* use the 162Bug routines to send it to the default output port.
*/
void _BSP_output_char(char c)
{
if (Console_Is_Initialized)
putchar(c);
else
_162Bug_output_char(c);
if ('\n' == c)
_BSP_output_char('\r');
}
rtems_device_driver console_initialize( rtems_device_driver console_initialize(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -105,7 +60,6 @@ rtems_device_driver console_initialize(
/* /*
* Initialise receiver interrupts on both ports * Initialise receiver interrupts on both ports
*/ */
for (i = 0; i <= 1; i++) { for (i = 0; i <= 1; i++) {
Ring_buffer_Initialize( &Console_Buffer[i] ); Ring_buffer_Initialize( &Console_Buffer[i] );
ZWRITE(i, 2, SCC_VECTOR); ZWRITE(i, 2, SCC_VECTOR);
@@ -153,7 +107,6 @@ rtems_device_driver console_initialize(
/* /*
* Non-blocking char input * Non-blocking char input
*/ */
bool char_ready(int port, char *ch) bool char_ready(int port, char *ch)
{ {
if ( Ring_buffer_Is_empty( &Console_Buffer[port] ) ) if ( Ring_buffer_Is_empty( &Console_Buffer[port] ) )
@@ -167,8 +120,7 @@ bool char_ready(int port, char *ch)
/* /*
* Block on char input * Block on char input
*/ */
static char inbyte(int port)
char inbyte(int port)
{ {
char tmp_char; char tmp_char;
@@ -180,8 +132,7 @@ char inbyte(int port)
* This routine transmits a character out the SCC. It no longer supports * This routine transmits a character out the SCC. It no longer supports
* XON/XOFF flow control. * XON/XOFF flow control.
*/ */
static void outbyte(char ch, int port)
void outbyte(char ch, int port)
{ {
while (1) { while (1) {
if (ZREAD0(port) & TX_BUFFER_EMPTY) break; if (ZREAD0(port) & TX_BUFFER_EMPTY) break;
@@ -192,7 +143,6 @@ void outbyte(char ch, int port)
/* /*
* Open entry point * Open entry point
*/ */
rtems_device_driver console_open( rtems_device_driver console_open(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -205,7 +155,6 @@ rtems_device_driver console_open(
/* /*
* Close entry point * Close entry point
*/ */
rtems_device_driver console_close( rtems_device_driver console_close(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -218,7 +167,6 @@ rtems_device_driver console_close(
/* /*
* read bytes from the serial port. We only have stdin. * read bytes from the serial port. We only have stdin.
*/ */
rtems_device_driver console_read( rtems_device_driver console_read(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -253,7 +201,6 @@ rtems_device_driver console_read(
/* /*
* write bytes to the serial port. Stdout and stderr are the same. * write bytes to the serial port. Stdout and stderr are the same.
*/ */
rtems_device_driver console_write( rtems_device_driver console_write(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -287,7 +234,6 @@ rtems_device_driver console_write(
/* /*
* IO Control entry point * IO Control entry point
*/ */
rtems_device_driver console_control( rtems_device_driver console_control(
rtems_device_major_number major, rtems_device_major_number major,
rtems_device_minor_number minor, rtems_device_minor_number minor,
@@ -296,3 +242,33 @@ rtems_device_driver console_control(
{ {
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
} }
/*
* _162Bug_output_char
*
* Output a single character using the 162Bug functions. The character
* will be written to the default output port.
*/
static void _162Bug_output_char( char c )
{
asm volatile( "moveb %0, -(%%sp)\n\t" /* char to output */
"trap #15\n\t" /* Trap to 162Bug */
".short 0x20" /* Code for .OUTCHR */
:: "d" (c) );
}
/*
* _BSP_output_char
*
* printk() function prototyped in bspIo.h. Does not use termios.
*
* If we have initialized the console device then use it, otherwise
* use the 162Bug routines to send it to the default output port.
*/
static void _BSP_output_char(char c)
{
_162Bug_output_char(c);
}
/* Printk function */
BSP_output_char_function_type BSP_output_char = _BSP_output_char;

View File

@@ -1,8 +1,9 @@
/* bsp.h /*
*
* This include file contains all MVME162fx board IO definitions. * This include file contains all MVME162fx board IO definitions.
* */
* COPYRIGHT (c) 1989-1999.
/*
* COPYRIGHT (c) 1989-2014.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -162,7 +163,6 @@ typedef volatile struct {
#define EXTERN extern #define EXTERN extern
#endif #endif
/* /*
* This value is the default address location of the 162Bug vector table * This value is the default address location of the 162Bug vector table
* and is also the default start address of the boards DRAM. This value * and is also the default start address of the boards DRAM. This value
@@ -194,6 +194,12 @@ rtems_isr_entry set_vector(
int type int type
); );
/*
* Prototypes for methods in the BSP that cross file boundaries.
*/
bool char_ready(int port, char *ch);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@@ -1,7 +1,9 @@
/* /*
* This routine returns control to 162Bug. * This routine returns control to 162Bug.
* */
* COPYRIGHT (c) 1989-2010.
/*
* COPYRIGHT (c) 1989-2014.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
@@ -21,9 +23,9 @@
#include <rtems/zilog/z8036.h> #include <rtems/zilog/z8036.h>
#include <page_table.h> #include <page_table.h>
extern void start( void ); static rtems_isr bsp_return_to_monitor_trap(
rtems_vector_number vector
void bsp_return_to_monitor_trap(void) )
{ {
page_table_teardown(); page_table_teardown();
@@ -32,18 +34,6 @@ void bsp_return_to_monitor_trap(void)
__asm__ volatile( "trap #15" ); /* trap to 162Bug */ __asm__ volatile( "trap #15" ); /* trap to 162Bug */
__asm__ volatile( ".short 0x63" ); /* return to 162Bug (.RETURN) */ __asm__ volatile( ".short 0x63" ); /* return to 162Bug (.RETURN) */
/* restart program */
/*
* This does not work on the 162....
*/
#if 0
{ register volatile void *start_addr;
start_addr = start;
__asm__ volatile ( "jmp %0@" : "=a" (start_addr) : "0" (start_addr) );
}
#endif
} }
void bsp_fatal_extension( void bsp_fatal_extension(
@@ -53,5 +43,5 @@ void bsp_fatal_extension(
) )
{ {
M68Kvec[ 45 ] = bsp_return_to_monitor_trap; /* install handler */ M68Kvec[ 45 ] = bsp_return_to_monitor_trap; /* install handler */
__asm__ volatile( "trap #13" ); /* insures SUPV mode */ __asm__ volatile( "trap #13" ); /* ensures SUPV mode */
} }

View File

@@ -27,7 +27,7 @@
uint32_t Ttimer_val; uint32_t Ttimer_val;
bool benchmark_timer_find_average_overhead; bool benchmark_timer_find_average_overhead;
rtems_isr timerisr(void); rtems_isr timerisr(rtems_vector_number vector);
void benchmark_timer_initialize(void) void benchmark_timer_initialize(void)
{ {

View File

@@ -229,9 +229,8 @@ rtems_isr_entry Prev_modem_isr; /* Previous modem/timer isr */
) )
{ {
unsigned long i = 20000; /* In case clock is off */ unsigned long i = 20000; /* In case clock is off */
rtems_interval ticks_per_second, start_ticks, end_ticks, current_ticks; rtems_interval start_ticks, end_ticks, current_ticks;
ticks_per_second = rtems_clock_get_ticks_per_second();
start_ticks = rtems_clock_get_ticks_since_boot(); start_ticks = rtems_clock_get_ticks_since_boot();
end_ticks = start_ticks + delay; end_ticks = start_ticks + delay;

View File

@@ -31,9 +31,11 @@ rtems_isr bsp_spurious_handler(
CPU_Interrupt_frame *isf */ CPU_Interrupt_frame *isf */
) )
{ {
#if 0
printk( "Unexpected interrupt (0x%x)\n", vector );
#else
char *s; char *s;
printk( "Unexpected interrupt (0x%x)\n", vector );
/* /*
printk( "It looks like we got the interrupt at 0x%x\n", isf->interrupted ); printk( "It looks like we got the interrupt at 0x%x\n", isf->interrupted );
*/ */
@@ -41,9 +43,7 @@ rtems_isr bsp_spurious_handler(
/* /*
* Can we print a name? * Can we print a name?
*/ */
s = 0; s = 0;
#if 0
if ( vector <= 0x1f ) { if ( vector <= 0x1f ) {
switch ( vector ) { switch ( vector ) {
case 1: s = "INT0"; break; case 1: s = "INT0"; break;