[PATCH 37] LEON3: renamed console/debugputs.c to printk_support.c
Gedare Bloom
gedare at rtems.org
Fri Apr 20 15:39:09 UTC 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 devel
mailing list