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

Gedare Bloom gedare at rtems.org
Fri Apr 20 10:39:09 CDT 2012


On Fri, Apr 20, 2012 at 2:29 AM, Daniel Hellstrom <daniel at gaisler.com> wrote:
> On 04/19/2012 07:45 PM, Gedare Bloom wrote:
>>
>> 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.
>
> That is probably because the patch depends on PATCH 35, which should have
> been applied before. I will regenerate PATCH 35 and resubmit it to the list.
>
I did apply that.

>>> 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?
>
> I used git mv, on my side 'gitk' even said:
>  similarity index 100%
>  rename from c/src/lib/libbsp/sparc/leon3/console/debugputs.c
>  rename to c/src/lib/libbsp/sparc/leon3/console/printk_support.c
>
> It might be that it doesn't look like that because git must make sure to get
> a conflict if someone else makes a patch on the content of debugputs.c, that
> patch may be a reason not to rename it. And that was what happens, if git
> just stores a rename and no contents, it is rather dangerous.
>
I'm pretty sure the SHA-1 prevents such a case.

> Thanks for applying,
> Daniel
>
>
>>>> -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 rtems-devel mailing list