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

Daniel Hellstrom daniel at gaisler.com
Fri Apr 20 06:29:24 UTC 2012


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.
>> 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.

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 devel mailing list