[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