On Thu, Oct 9, 2014 at 2:39 PM, Joel Sherrill <joel.sherr...@oarcorp.com> wrote: > --- > c/src/lib/libbsp/i386/pc386/console/conscfg.c | 7 +- > c/src/lib/libbsp/i386/pc386/console/keyboard.c | 99 > +++++++++++++------------- > c/src/lib/libbsp/i386/pc386/console/outch.c | 6 +- > c/src/lib/libbsp/i386/pc386/console/rtd316.c | 3 +- > c/src/lib/libbsp/i386/pc386/console/rtd316.h | 24 ++++++- > c/src/lib/libbsp/i386/pc386/ide/ide.c | 2 + > c/src/lib/libbsp/i386/pc386/include/bsp.h | 6 ++ > c/src/lib/libbsp/i386/pc386/startup/bspstart.c | 3 - > c/src/lib/libbsp/i386/pc386/timer/timer.c | 39 +++++----- > c/src/lib/libbsp/i386/shared/comm/i386-stub.c | 12 ++-- > 10 files changed, 122 insertions(+), 79 deletions(-) > > diff --git a/c/src/lib/libbsp/i386/pc386/console/conscfg.c > b/c/src/lib/libbsp/i386/pc386/console/conscfg.c > index f9ed5d8..f0295ef 100644 > --- a/c/src/lib/libbsp/i386/pc386/console/conscfg.c > +++ b/c/src/lib/libbsp/i386/pc386/console/conscfg.c > @@ -5,7 +5,7 @@ > */ > > /* > - * COPYRIGHT (c) 1989-2011. > + * COPYRIGHT (c) 1989-2014. > * On-Line Applications Research Corporation (OAR). > * > * The license and distribution terms for this file may be > @@ -21,6 +21,7 @@ > #include "vgacons.h" > #include <bsp/irq.h> > #include <rtems/pci.h> > +#include <bsp/rtd316.h> > > #define VGA_CONSOLE_FUNCTIONS &vgacons_fns > #if 0 > @@ -39,7 +40,7 @@ > > #define CLOCK_RATE (115200 * 16) > > -uint8_t com_get_register(uint32_t addr, uint8_t i) > +static uint8_t com_get_register(uint32_t addr, uint8_t i) > { > register uint8_t val; > > @@ -47,7 +48,7 @@ uint8_t com_get_register(uint32_t addr, uint8_t i) > return val; > } > > -void com_set_register(uint32_t addr, uint8_t i, uint8_t val) > +static void com_set_register(uint32_t addr, uint8_t i, uint8_t val) > { > outport_byte( (addr + i),val ); > } > diff --git a/c/src/lib/libbsp/i386/pc386/console/keyboard.c > b/c/src/lib/libbsp/i386/pc386/console/keyboard.c > index 271c5e3..3a33c54 100644 > --- a/c/src/lib/libbsp/i386/pc386/console/keyboard.c > +++ b/c/src/lib/libbsp/i386/pc386/console/keyboard.c > @@ -28,7 +28,7 @@ > #define KBD_DEFLOCK 0 > #endif > > -int set_bit(int nr, unsigned long * addr) > +static int set_bit(int nr, unsigned long * addr) > { > int mask; > int retval; > @@ -43,7 +43,7 @@ int set_bit(int nr, unsigned long * addr) > return retval; > } > > -int clear_bit(int nr, unsigned long * addr) > +static int clear_bit(int nr, unsigned long * addr) > { > int mask; > int retval; > @@ -58,7 +58,7 @@ int clear_bit(int nr, unsigned long * addr) > return retval; > } > > -int test_bit(int nr, unsigned long * addr) > +static int test_bit(int nr, unsigned long * addr) > { > int mask; > > @@ -167,19 +167,20 @@ static int sysrq_pressed; > * string, and in both cases we might assume that it is > * in utf-8 already. > */ > -void to_utf8(ushort c) { > - if (c < 0x80) > - put_queue(c); /* 0******* */ > - else if (c < 0x800) { > - put_queue(0xc0 | (c >> 6)); /* 110***** 10****** */ > - put_queue(0x80 | (c & 0x3f)); > - } else { > - put_queue(0xe0 | (c >> 12)); /* 1110**** 10****** 10****** */ > - put_queue(0x80 | ((c >> 6) & 0x3f)); > - put_queue(0x80 | (c & 0x3f)); > - } > - /* UTF-8 is defined for words of up to 31 bits, > - but we need only 16 bits here */ > +static void to_utf8(ushort c) > +{ > + if (c < 0x80) > + put_queue(c); /* 0******* */ > + else if (c < 0x800) { > + put_queue(0xc0 | (c >> 6)); /* 110***** 10****** */ > + put_queue(0x80 | (c & 0x3f)); > + } else { > + put_queue(0xe0 | (c >> 12)); /* 1110**** 10****** 10****** */ > + put_queue(0x80 | ((c >> 6) & 0x3f)); > + put_queue(0x80 | (c & 0x3f)); > + } > + /* UTF-8 is defined for words of up to 31 bits, > + but we need only 16 bits here */ > } > > /* > @@ -333,20 +334,19 @@ void handle_scancode(unsigned char scancode, int down) > static void ( *driver_input_handler_kbd )( void *, unsigned short, unsigned > long ) = 0; > /* > */ > -void kbd_set_driver_handler( void ( *handler )( void *, unsigned short, > unsigned long ) ) > +void kbd_set_driver_handler( > + void ( *handler )( void *, unsigned short, unsigned long ) > +) > { > driver_input_handler_kbd = handler; > } > > static void put_queue(int ch) > { > - if( driver_input_handler_kbd ) > - { > - driver_input_handler_kbd( ( void *)kbd, (unsigned short)ch, 0 ); > - } > - else > - { > - add_to_queue( ch ); > + if ( driver_input_handler_kbd ) { > + driver_input_handler_kbd( ( void *)kbd, (unsigned short)ch, 0 ); > + } else { > + add_to_queue( ch ); > } > } > > @@ -377,7 +377,6 @@ static void enter(void) > > if (vc_kbd_mode(kbd,VC_CRLF)) > put_queue(10); > - > } > > static void caps_toggle(void) > @@ -403,12 +402,10 @@ static void hold(void) > if (rep ) > return; > chg_vc_kbd_led(kbd, VC_SCROLLOCK ); > - > } > > static void num(void) > { > - > if (vc_kbd_mode(kbd,VC_APPLIC)) > applkey('P', 1); > else > @@ -771,39 +768,45 @@ static unsigned char ledstate = 0xff; /* undefined */ > static unsigned char ledioctl; > > unsigned char getledstate(void) { > - return ledstate; > + return ledstate; > } > > void setledstate(struct kbd_struct *kbd, unsigned int led) { > - if (!(led & ~7)) { > - ledioctl = led; > - kbd->ledmode = LED_SHOW_IOCTL; > - } else > + if (!(led & ~7)) { > + ledioctl = led; > + kbd->ledmode = LED_SHOW_IOCTL; > + } else > ; > - kbd->ledmode = LED_SHOW_FLAGS; > - set_leds(); > + kbd->ledmode = LED_SHOW_FLAGS; > + set_leds(); > } > > static struct ledptr { > - unsigned int *addr; > - unsigned int mask; > - unsigned char valid:1; > + unsigned int *addr; > + unsigned int mask; > + unsigned char valid:1; > } ledptrs[3]; > > -void register_leds(int console, unsigned int led, > - unsigned int *addr, unsigned int mask) { > - struct kbd_struct *kbd = kbd_table + console; > +void register_leds( > + int console, > + unsigned int led, > + unsigned int *addr, > + unsigned int mask > +) > +{ > + struct kbd_struct *kbd = kbd_table + console; > > - if (led < 3) { > - ledptrs[led].addr = addr; > - ledptrs[led].mask = mask; > - ledptrs[led].valid = 1; > - kbd->ledmode = LED_SHOW_MEM; > - } else > - kbd->ledmode = LED_SHOW_FLAGS; > + if (led < 3) { > + ledptrs[led].addr = addr; > + ledptrs[led].mask = mask; > + ledptrs[led].valid = 1; > + kbd->ledmode = LED_SHOW_MEM; > + } else > + kbd->ledmode = LED_SHOW_FLAGS; > } > > -static inline unsigned char getleds(void){ > +static inline unsigned char getleds(void) > +{ > > struct kbd_struct *kbd = kbd_table + fg_console; > > diff --git a/c/src/lib/libbsp/i386/pc386/console/outch.c > b/c/src/lib/libbsp/i386/pc386/console/outch.c > index f0c7599..90ffedf 100644 > --- a/c/src/lib/libbsp/i386/pc386/console/outch.c > +++ b/c/src/lib/libbsp/i386/pc386/console/outch.c > @@ -239,7 +239,7 @@ int ro,co; > return rval; > } > > -void > +static void > clear_screen(void) > { > int i,j; > @@ -308,6 +308,10 @@ _IBMPC_initVideo(void) > } /* _IBMPC_initVideo */ > > /* for old DOS compatibility n-curses type of applications */ > +void gotoxy( int x, int y ); > +int whereX( void ); > +int whereY( void ); > + > void gotoxy( int x, int y ) > { > gotorc(y,x); > diff --git a/c/src/lib/libbsp/i386/pc386/console/rtd316.c > b/c/src/lib/libbsp/i386/pc386/console/rtd316.c > index e27f128..7219ff6 100644 > --- a/c/src/lib/libbsp/i386/pc386/console/rtd316.c > +++ b/c/src/lib/libbsp/i386/pc386/console/rtd316.c > @@ -7,7 +7,7 @@ > */ > > /* > - * COPYRIGHT (c) 1989-2012. > + * COPYRIGHT (c) 1989-2014. > * On-Line Applications Research Corporation (OAR). > * > * The license and distribution terms for this file may be > @@ -26,6 +26,7 @@ > #include <rtems/bspIo.h> > #include <bsp/rtd316.h> > #include <rtems/score/i386.h> > +#include <rtems/console_private.h> > > #define RTD_CLOCK_RATE (460800 * 32) > > diff --git a/c/src/lib/libbsp/i386/pc386/console/rtd316.h > b/c/src/lib/libbsp/i386/pc386/console/rtd316.h > index 6c3478c..aabad2c 100644 > --- a/c/src/lib/libbsp/i386/pc386/console/rtd316.h > +++ b/c/src/lib/libbsp/i386/pc386/console/rtd316.h > @@ -7,7 +7,7 @@ > */ > > /* > - * COPYRIGHT (c) 1989-2012. > + * COPYRIGHT (c) 1989-2014. > * On-Line Applications Research Corporation (OAR). > * > * The license and distribution terms for this file may be > @@ -47,6 +47,28 @@ rtems_device_driver rtd316_initialize( > void *arg > ); > > +/** > + * @brief RTD316 Obtain Register Helper > + * > + * This method is used to read registers on the RTD316. > + * > + * @param[in] addr is the base address > + * @param[in] reg is the register number > + * > + * @return This method returns the value of the register. > + */ > +uint8_t rtd316_com_get_register(uint32_t addr, uint8_t reg); > + > +/** > + * @brief RTD316 Set Register Helper > + * > + * This method is used to set registers on the RTD316. > + * > + * @param[in] addr is the base address > + * @param[in] reg is the register number > + */ > +void rtd316_com_set_register(uint32_t addr,uint8_t reg, uint8_t val); > + > #ifdef __cplusplus > } > #endif > diff --git a/c/src/lib/libbsp/i386/pc386/ide/ide.c > b/c/src/lib/libbsp/i386/pc386/ide/ide.c > index e74a193..73b6df2 100644 > --- a/c/src/lib/libbsp/i386/pc386/ide/ide.c > +++ b/c/src/lib/libbsp/i386/pc386/ide/ide.c > @@ -230,6 +230,8 @@ static void pc386_ide_initialize > char* p = &model_number[0]; > bool data_ready; > > + (void) cur_multiple_sectors; /* avoid set but not used warning */ > + > memset(model_number, 0, sizeof(model_number)); > > outport_byte(port+IDE_REGISTER_DEVICE_HEAD, > diff --git a/c/src/lib/libbsp/i386/pc386/include/bsp.h > b/c/src/lib/libbsp/i386/pc386/include/bsp.h > index ef16b4a..7e6d3f3 100644 > --- a/c/src/lib/libbsp/i386/pc386/include/bsp.h > +++ b/c/src/lib/libbsp/i386/pc386/include/bsp.h > @@ -179,9 +179,15 @@ char _IBMPC_inch (void); /* from > 'inch.c' */ > char _IBMPC_inch_sleep (void); /* from 'inch.c' */ > > void Wait_X_ms(unsigned int timeToWait); /* from 'timer.c' */ > +void Calibrate_loop_1ms(void); /* from 'timer.c' */ > + > +void rtems_irq_mngt_init(void); /* from 'irq_init.c' */ > + > +void bsp_size_memory(void); /* from 'bspstart.c' */ > > void Clock_driver_install_handler(void); /* from 'ckinit.c' */ > void Clock_driver_support_initialize_hardware(void); /* from 'ckinit.c' */ > + > size_t read_aux(char * buffer, size_t count); /* from 'ps2_mouse.c' */ > > /* Definitions for BSPConsolePort */ > diff --git a/c/src/lib/libbsp/i386/pc386/startup/bspstart.c > b/c/src/lib/libbsp/i386/pc386/startup/bspstart.c > index ff67cc7..ebe6b7c 100644 > --- a/c/src/lib/libbsp/i386/pc386/startup/bspstart.c > +++ b/c/src/lib/libbsp/i386/pc386/startup/bspstart.c > @@ -36,9 +36,6 @@ > /* > * External routines > */ > -extern void Calibrate_loop_1ms(void); > -extern void rtems_irq_mngt_init(void); > -extern void bsp_size_memory(void); > void Clock_driver_install_handler(void); > > /*-------------------------------------------------------------------------+ > diff --git a/c/src/lib/libbsp/i386/pc386/timer/timer.c > b/c/src/lib/libbsp/i386/pc386/timer/timer.c > index 953db03..541d2e3 100644 > --- a/c/src/lib/libbsp/i386/pc386/timer/timer.c > +++ b/c/src/lib/libbsp/i386/pc386/timer/timer.c > @@ -65,15 +65,16 @@ void Timer_exit(void); > */ > > /* > - * Timer cleanup routine at RTEMS exit. NOTE: This routine is > - * not really necessary, since there will be a reset at exit. > + * Timer cleanup routine at RTEMS exit. > + * > + * NOTE: This routine is not really necessary, since there will be > + * a reset at exit. > */ > - > -void tsc_timer_exit(void) > +static void tsc_timer_exit(void) > { > } > > -void tsc_timer_initialize(void) > +static void tsc_timer_initialize(void) > { > static bool First = true; > > @@ -86,9 +87,9 @@ void tsc_timer_initialize(void) > } > > /* > - * > + * Read TSC timer value. > */ > -uint32_t tsc_read_timer(void) > +static uint32_t tsc_read_timer(void) > { > register uint32_t total; > > @@ -151,16 +152,18 @@ static rtems_raw_irq_connect_data timer_raw_irq_data = { > }; > > /* > - * Timer cleanup routine at RTEMS exit. NOTE: This routine is > - * not really necessary, since there will be a reset at exit. > - */ void > -i386_timer_exit(void) > + * Timer cleanup routine at RTEMS exit. > + * > + * NOTE: This routine is not really necessary, since there will be > + * a reset at exit. > + */ > +static void i386_timer_exit(void) > { > i386_delete_idt_entry (&timer_raw_irq_data); > } > > extern void rtems_irq_prologue_0(void); > -void i386_timer_initialize(void) > +static void i386_timer_initialize(void) > { > static bool First = true; > > @@ -192,7 +195,7 @@ void i386_timer_initialize(void) > /* > * Read hardware timer value. > */ > -uint32_t i386_read_timer(void) > +static uint32_t i386_read_timer(void) > { > register uint32_t total, clicks; > register uint8_t lsb, msb; > @@ -268,7 +271,7 @@ static unsigned short lastLoadedValue; > * > * Returns: Nothing. Loaded value must be a number of clock bits... > */ > -void loadTimerValue( unsigned short loadedValue ) > +static void loadTimerValue( unsigned short loadedValue ) > { > lastLoadedValue = loadedValue; > outport_byte(TIMER_MODE, TIMER_SEL0|TIMER_16BIT|TIMER_SQWAVE); > @@ -282,7 +285,7 @@ void loadTimerValue( unsigned short loadedValue ) > * > * Returns: number of clock bits elapsed since last load. > */ > -unsigned int readTimer0(void) > +static unsigned int readTimer0(void) > { > unsigned short lsb, msb; > unsigned char status; > @@ -302,19 +305,19 @@ unsigned int readTimer0(void) > return (2*lastLoadedValue - count); > } > > -void Timer0Reset(void) > +static void Timer0Reset(void) > { > loadTimerValue(0xffff); > readTimer0(); > } > > -void fastLoop (unsigned int loopCount) > +static void fastLoop (unsigned int loopCount) > { > unsigned int i; > for( i=0; i < loopCount; i++ )outport_byte( SLOW_DOWN_IO, 0 ); > } > > -void slowLoop (unsigned int loopCount) > +static void slowLoop (unsigned int loopCount) > { > unsigned int j; > for (j=0; j <100 ; j++) { > diff --git a/c/src/lib/libbsp/i386/shared/comm/i386-stub.c > b/c/src/lib/libbsp/i386/shared/comm/i386-stub.c > index 578b018..8113d7e 100644 > --- a/c/src/lib/libbsp/i386/shared/comm/i386-stub.c > +++ b/c/src/lib/libbsp/i386/shared/comm/i386-stub.c > @@ -607,7 +607,7 @@ set_char (char *addr, int val) > /* return a pointer to the last char put in buf (null) */ > /* If MAY_FAULT is non-zero, then we should set mem_err in response to > a fault; if zero treat a fault like any other fault in the stub. */ > -char * > +static char * > mem2hex (char *mem, char *buf, int count, int may_fault) > { > int i; > @@ -654,7 +654,7 @@ hex2mem (char *buf, char *mem, int count, int may_fault) > > /* this function takes the 386 exception vector and attempts to > translate this number into a unix compatible signal value */ > -int > +static int > computeSignal (int exceptionVector) > { > int sigval; > @@ -715,7 +715,7 @@ computeSignal (int exceptionVector) > /* WHILE WE FIND NICE HEX CHARS, BUILD AN INT */ > /* RETURN NUMBER OF CHARS PROCESSED */ > /**********************************************/ > -int > +static int > hexToInt (char **ptr, int *intValue) > { Put the function name on the line with return type? More like this above.
> int numChars = 0; > @@ -742,8 +742,12 @@ hexToInt (char **ptr, int *intValue) > > /* > * This function does all command procesing for interfacing to gdb. > + * > + * NOTE: This method is called from assembly code so must be marked > + * as used. > */ > -void > +static void handle_exception (int exceptionVector) __attribute__((used)); > +static void I'm not certain what the semantics are for declaring a function static when it is used from another source file. Perhaps it should be declared somewhere? Also, there should be an RTEMS_ATTRIBUTE_USED or similar that should be used here. > handle_exception (int exceptionVector) > { > int sigval; > -- > 1.9.3 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel