[PATCH 37] LEON3: renamed console/debugputs.c to printk_support.c

Gedare Bloom gedare at rtems.org
Thu Apr 19 17:45:56 UTC 2012


I used git mv and pushed.

On Thu, Apr 19, 2012 at 1:44 PM, Joel Sherrill
<joel.sherrill at oarcorp.com> wrote:
> On 04/19/2012 12:36 PM, Gedare Bloom wrote:
>>
>> patch didn't apply cleanly but I was able to recreate it and
>> apply/push. please verify.
>
> it looks OK to commit but I have a question.
>
> Did you do a git mv? This looks like git thinks one file
> was removed and another one was added?
>>
>> -Gedare
>>
>> On Thu, Apr 19, 2012 at 9:21 AM, Daniel Hellstrom<daniel at gaisler.com>
>>  wrote:
>>>
>>> Signed-off-by: Daniel Hellstrom<daniel at gaisler.com>
>>> ---
>>>  c/src/lib/libbsp/sparc/leon3/Makefile.am           |    2 +-
>>>  c/src/lib/libbsp/sparc/leon3/console/debugputs.c   |  169
>>> --------------------
>>>  .../libbsp/sparc/leon3/console/printk_support.c    |  169
>>> ++++++++++++++++++++
>>>  3 files changed, 170 insertions(+), 170 deletions(-)
>>>  delete mode 100644 c/src/lib/libbsp/sparc/leon3/console/debugputs.c
>>>  create mode 100644 c/src/lib/libbsp/sparc/leon3/console/printk_support.c
>>>
>>> diff --git a/c/src/lib/libbsp/sparc/leon3/Makefile.am
>>> b/c/src/lib/libbsp/sparc/leon3/Makefile.am
>>> index 09d8b8e..a9badce 100644
>>> --- a/c/src/lib/libbsp/sparc/leon3/Makefile.am
>>> +++ b/c/src/lib/libbsp/sparc/leon3/Makefile.am
>>> @@ -63,7 +63,7 @@ libbsp_a_SOURCES +=
>>> ../../sparc/shared/amba/ambapp_show.c
>>>  # console
>>>  libbsp_a_SOURCES += console/console.c
>>>  # debugio
>>> -libbsp_a_SOURCES += console/debugputs.c
>>> +libbsp_a_SOURCES += console/printk_support.c
>>>  # clock
>>>  libbsp_a_SOURCES += clock/ckinit.c
>>>  libbsp_a_SOURCES += ../../shared/clockdrv_shell.h
>>> diff --git a/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
>>> b/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
>>> deleted file mode 100644
>>> index 9815053..0000000
>>> --- a/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
>>> +++ /dev/null
>>> @@ -1,169 +0,0 @@
>>> -/*
>>> - *  This file contains the TTY driver for the serial ports on the LEON.
>>> - *
>>> - *  This driver uses the termios pseudo driver.
>>> - *
>>> - *  COPYRIGHT (c) 1989-1999.
>>> - *  On-Line Applications Research Corporation (OAR).
>>> - *
>>> - *  Modified for LEON3 BSP.
>>> - *  COPYRIGHT (c) 2011.
>>> - *  Aeroflex Gaisler.
>>> - *
>>> - *  The license and distribution terms for this file may be
>>> - *  found in the file LICENSE in this distribution or at
>>> - *  http://www.rtems.com/license/LICENSE.
>>> - */
>>> -
>>> -#include<bsp.h>
>>> -#include<rtems/libio.h>
>>> -#include<stdlib.h>
>>> -#include<assert.h>
>>> -#include<stdio.h>
>>> -
>>> -/* Let user override which on-chip APBUART will be debug UART
>>> - * 0 = Default APBUART. On MP system CPU0=APBUART0, CPU1=APBUART1...
>>> - * 1 = APBUART[0]
>>> - * 2 = APBUART[1]
>>> - * 3 = APBUART[2]
>>> - * ...
>>> - */
>>> -int debug_uart_index __attribute__((weak)) = 0;
>>> -struct apbuart_regs *dbg_uart = NULL;
>>> -
>>> -/* Before UART driver has registered (or when no UART is available),
>>> calls to
>>> - * printk that gets to bsp_out_char() will be filling data into the
>>> - * pre_printk_dbgbuf[] buffer, hopefully the buffer can help debugging
>>> the
>>> - * early BSP boot.. At least the last printk() will be caught.
>>> - */
>>> -char pre_printk_dbgbuf[32] = {0};
>>> -int pre_printk_pos = 0;
>>> -
>>> -/* Initialize the BSP system debug console layer. It will scan AMBA
>>> Plu&Play
>>> - * for a debug APBUART and enable RX/TX for that UART.
>>> - */
>>> -int bsp_debug_uart_init(void)
>>> -{
>>> -  int i;
>>> -  struct ambapp_dev *adev;
>>> -  struct ambapp_apb_info *apb;
>>> -
>>> -  /* Update debug_uart_index to index used as debug console.
>>> -   * Let user select Debug console by setting debug_uart_index. If the
>>> -   * BSP is to provide the default UART (debug_uart_index==0):
>>> -   *   non-MP: APBUART[0] is debug console
>>> -   *   MP: LEON CPU index select UART
>>> -   */
>>> -  if (debug_uart_index == 0) {
>>> -#if defined(RTEMS_MULTIPROCESSING)
>>> -    debug_uart_index = LEON3_Cpu_Index;
>>> -#else
>>> -    debug_uart_index = 0;
>>> -#endif
>>> -  } else {
>>> -    debug_uart_index = debug_uart_index - 1; /* User selected
>>> dbg-console */
>>> -  }
>>> -
>>> -  /* Find APBUART core for System Debug Console */
>>> -  i = debug_uart_index;
>>> -  adev = (void *)ambapp_for_each(&ambapp_plb,
>>> (OPTIONS_ALL|OPTIONS_APB_SLVS),
>>> -                                 VENDOR_GAISLER, GAISLER_APBUART,
>>> -                                 ambapp_find_by_idx, (void *)&i);
>>> -  if (adev) {
>>> -    /* Found a matching debug console, initialize debug uart if present
>>> -     * for printk
>>> -     */
>>> -    apb = (struct ambapp_apb_info *)adev->devinfo;
>>> -    dbg_uart = (struct apbuart_regs *)apb->start;
>>> -    dbg_uart->ctrl |= LEON_REG_UART_CTRL_RE | LEON_REG_UART_CTRL_TE;
>>> -    dbg_uart->status = 0;
>>> -    return 1;
>>> -  } else
>>> -    return 0;
>>> -}
>>> -
>>> -/*
>>> - *  apbuart_outbyte_polled
>>> - *
>>> - *  This routine transmits a character using polling.
>>> - */
>>> -void apbuart_outbyte_polled(
>>> -  struct apbuart_regs *regs,
>>> -  unsigned char ch,
>>> -  int do_cr_on_newline,
>>> -  int wait_sent
>>> -)
>>> -{
>>> -send:
>>> -  while ( (regs->status&  LEON_REG_UART_STATUS_THE) == 0 ) {
>>>
>>> -    /* Lower bus utilization while waiting for UART */
>>> -    asm volatile ("nop"::); asm volatile ("nop"::);
>>> -    asm volatile ("nop"::); asm volatile ("nop"::);
>>> -    asm volatile ("nop"::); asm volatile ("nop"::);
>>> -    asm volatile ("nop"::); asm volatile ("nop"::);
>>> -  }
>>> -  regs->data = (unsigned int) ch;
>>> -
>>> -  if ((ch == '\n')&&  do_cr_on_newline) {
>>>
>>> -    ch = '\r';
>>> -    goto send;
>>> -  }
>>> -
>>> -  /* Wait until the character has been sent? */
>>> -  if (wait_sent) {
>>> -    while ((regs->status&  LEON_REG_UART_STATUS_THE) == 0)
>>>
>>> -      ;
>>> -  }
>>> -}
>>> -
>>> -/*
>>> - *  apbuart_inbyte_nonblocking
>>> - *
>>> - *  This routine polls for a character.
>>> - */
>>> -int apbuart_inbyte_nonblocking(struct apbuart_regs *regs)
>>> -{
>>> -  /* Clear errors */
>>> -  if (regs->status&  LEON_REG_UART_STATUS_ERR)
>>>
>>> -    regs->status = ~LEON_REG_UART_STATUS_ERR;
>>> -
>>> -  if ((regs->status&  LEON_REG_UART_STATUS_DR) == 0)
>>>
>>> -    return EOF;
>>> -  else
>>> -    return (int) regs->data;
>>> -}
>>> -
>>> -/* putchar/getchar for printk */
>>> -static void bsp_out_char(char c)
>>> -{
>>> -  if (dbg_uart == NULL) {
>>> -    /* Local debug buffer when UART driver has not registered */
>>> -    pre_printk_dbgbuf[pre_printk_pos++] = c;
>>> -    pre_printk_pos = pre_printk_pos&  (sizeof(pre_printk_dbgbuf)-1);
>>>
>>> -    return;
>>> -  }
>>> -
>>> -  apbuart_outbyte_polled(dbg_uart, c, 1, 1);
>>> -}
>>> -
>>> -/*
>>> - *  To support printk
>>> - */
>>> -
>>> -#include<rtems/bspIo.h>
>>> -
>>> -BSP_output_char_function_type BSP_output_char = bsp_out_char;
>>> -
>>> -static int bsp_in_char(void)
>>> -{
>>> -  int tmp;
>>> -
>>> -  if (dbg_uart == NULL)
>>> -    return EOF;
>>> -
>>> -  while ((tmp = apbuart_inbyte_nonblocking(dbg_uart))<  0)
>>> -    ;
>>> -  return tmp;
>>> -}
>>> -
>>> -BSP_polling_getchar_function_type BSP_poll_char = bsp_in_char;
>>> diff --git a/c/src/lib/libbsp/sparc/leon3/console/printk_support.c
>>> b/c/src/lib/libbsp/sparc/leon3/console/printk_support.c
>>> new file mode 100644
>>> index 0000000..9815053
>>> --- /dev/null
>>> +++ b/c/src/lib/libbsp/sparc/leon3/console/printk_support.c
>>> @@ -0,0 +1,169 @@
>>> +/*
>>> + *  This file contains the TTY driver for the serial ports on the LEON.
>>> + *
>>> + *  This driver uses the termios pseudo driver.
>>> + *
>>> + *  COPYRIGHT (c) 1989-1999.
>>> + *  On-Line Applications Research Corporation (OAR).
>>> + *
>>> + *  Modified for LEON3 BSP.
>>> + *  COPYRIGHT (c) 2011.
>>> + *  Aeroflex Gaisler.
>>> + *
>>> + *  The license and distribution terms for this file may be
>>> + *  found in the file LICENSE in this distribution or at
>>> + *  http://www.rtems.com/license/LICENSE.
>>> + */
>>> +
>>> +#include<bsp.h>
>>> +#include<rtems/libio.h>
>>> +#include<stdlib.h>
>>> +#include<assert.h>
>>> +#include<stdio.h>
>>> +
>>> +/* Let user override which on-chip APBUART will be debug UART
>>> + * 0 = Default APBUART. On MP system CPU0=APBUART0, CPU1=APBUART1...
>>> + * 1 = APBUART[0]
>>> + * 2 = APBUART[1]
>>> + * 3 = APBUART[2]
>>> + * ...
>>> + */
>>> +int debug_uart_index __attribute__((weak)) = 0;
>>> +struct apbuart_regs *dbg_uart = NULL;
>>> +
>>> +/* Before UART driver has registered (or when no UART is available),
>>> calls to
>>> + * printk that gets to bsp_out_char() will be filling data into the
>>> + * pre_printk_dbgbuf[] buffer, hopefully the buffer can help debugging
>>> the
>>> + * early BSP boot.. At least the last printk() will be caught.
>>> + */
>>> +char pre_printk_dbgbuf[32] = {0};
>>> +int pre_printk_pos = 0;
>>> +
>>> +/* Initialize the BSP system debug console layer. It will scan AMBA
>>> Plu&Play
>>> + * for a debug APBUART and enable RX/TX for that UART.
>>> + */
>>> +int bsp_debug_uart_init(void)
>>> +{
>>> +  int i;
>>> +  struct ambapp_dev *adev;
>>> +  struct ambapp_apb_info *apb;
>>> +
>>> +  /* Update debug_uart_index to index used as debug console.
>>> +   * Let user select Debug console by setting debug_uart_index. If the
>>> +   * BSP is to provide the default UART (debug_uart_index==0):
>>> +   *   non-MP: APBUART[0] is debug console
>>> +   *   MP: LEON CPU index select UART
>>> +   */
>>> +  if (debug_uart_index == 0) {
>>> +#if defined(RTEMS_MULTIPROCESSING)
>>> +    debug_uart_index = LEON3_Cpu_Index;
>>> +#else
>>> +    debug_uart_index = 0;
>>> +#endif
>>> +  } else {
>>> +    debug_uart_index = debug_uart_index - 1; /* User selected
>>> dbg-console */
>>> +  }
>>> +
>>> +  /* Find APBUART core for System Debug Console */
>>> +  i = debug_uart_index;
>>> +  adev = (void *)ambapp_for_each(&ambapp_plb,
>>> (OPTIONS_ALL|OPTIONS_APB_SLVS),
>>> +                                 VENDOR_GAISLER, GAISLER_APBUART,
>>> +                                 ambapp_find_by_idx, (void *)&i);
>>> +  if (adev) {
>>> +    /* Found a matching debug console, initialize debug uart if present
>>> +     * for printk
>>> +     */
>>> +    apb = (struct ambapp_apb_info *)adev->devinfo;
>>> +    dbg_uart = (struct apbuart_regs *)apb->start;
>>> +    dbg_uart->ctrl |= LEON_REG_UART_CTRL_RE | LEON_REG_UART_CTRL_TE;
>>> +    dbg_uart->status = 0;
>>> +    return 1;
>>> +  } else
>>> +    return 0;
>>> +}
>>> +
>>> +/*
>>> + *  apbuart_outbyte_polled
>>> + *
>>> + *  This routine transmits a character using polling.
>>> + */
>>> +void apbuart_outbyte_polled(
>>> +  struct apbuart_regs *regs,
>>> +  unsigned char ch,
>>> +  int do_cr_on_newline,
>>> +  int wait_sent
>>> +)
>>> +{
>>> +send:
>>> +  while ( (regs->status&  LEON_REG_UART_STATUS_THE) == 0 ) {
>>>
>>> +    /* Lower bus utilization while waiting for UART */
>>> +    asm volatile ("nop"::); asm volatile ("nop"::);
>>> +    asm volatile ("nop"::); asm volatile ("nop"::);
>>> +    asm volatile ("nop"::); asm volatile ("nop"::);
>>> +    asm volatile ("nop"::); asm volatile ("nop"::);
>>> +  }
>>> +  regs->data = (unsigned int) ch;
>>> +
>>> +  if ((ch == '\n')&&  do_cr_on_newline) {
>>>
>>> +    ch = '\r';
>>> +    goto send;
>>> +  }
>>> +
>>> +  /* Wait until the character has been sent? */
>>> +  if (wait_sent) {
>>> +    while ((regs->status&  LEON_REG_UART_STATUS_THE) == 0)
>>>
>>> +      ;
>>> +  }
>>> +}
>>> +
>>> +/*
>>> + *  apbuart_inbyte_nonblocking
>>> + *
>>> + *  This routine polls for a character.
>>> + */
>>> +int apbuart_inbyte_nonblocking(struct apbuart_regs *regs)
>>> +{
>>> +  /* Clear errors */
>>> +  if (regs->status&  LEON_REG_UART_STATUS_ERR)
>>>
>>> +    regs->status = ~LEON_REG_UART_STATUS_ERR;
>>> +
>>> +  if ((regs->status&  LEON_REG_UART_STATUS_DR) == 0)
>>>
>>> +    return EOF;
>>> +  else
>>> +    return (int) regs->data;
>>> +}
>>> +
>>> +/* putchar/getchar for printk */
>>> +static void bsp_out_char(char c)
>>> +{
>>> +  if (dbg_uart == NULL) {
>>> +    /* Local debug buffer when UART driver has not registered */
>>> +    pre_printk_dbgbuf[pre_printk_pos++] = c;
>>> +    pre_printk_pos = pre_printk_pos&  (sizeof(pre_printk_dbgbuf)-1);
>>>
>>> +    return;
>>> +  }
>>> +
>>> +  apbuart_outbyte_polled(dbg_uart, c, 1, 1);
>>> +}
>>> +
>>> +/*
>>> + *  To support printk
>>> + */
>>> +
>>> +#include<rtems/bspIo.h>
>>> +
>>> +BSP_output_char_function_type BSP_output_char = bsp_out_char;
>>> +
>>> +static int bsp_in_char(void)
>>> +{
>>> +  int tmp;
>>> +
>>> +  if (dbg_uart == NULL)
>>> +    return EOF;
>>> +
>>> +  while ((tmp = apbuart_inbyte_nonblocking(dbg_uart))<  0)
>>> +    ;
>>> +  return tmp;
>>> +}
>>> +
>>> +BSP_polling_getchar_function_type BSP_poll_char = bsp_in_char;
>>> --
>>> 1.7.0.4
>>>
>
>
> --
> Joel Sherrill, Ph.D.             Director of Research&   Development
> joel.sherrill at OARcorp.com        On-Line Applications Research
> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>    Support Available             (256) 722-9985
>
>




More information about the devel mailing list