2012/10/2 Stefan Kristiansson <[email protected]>:
> This way users can override them in their applications
> if desired.
>
> * libgloss/ChangeLog.or1k
>
> 2012-10-02  Stefan Kristiansson  <[email protected]>
>
>         * or1k/ml501.S: make board globals weak
>         * or1k/or1ksim-uart.S: ditto
>         * or1k/or1ksim.S: ditto
>         * or1k/ordb1a3pe1500.S: ditto
>         * or1k/ordb2a.S: ditto
>         * or1k/orpsocrefdesign.S: ditto
> ---
>  libgloss/ChangeLog.or1k         |    9 +++++++++
>  libgloss/or1k/ml501.S           |   14 +++++++-------
>  libgloss/or1k/or1ksim-uart.S    |   14 +++++++-------
>  libgloss/or1k/or1ksim.S         |   14 +++++++-------
>  libgloss/or1k/ordb1a3pe1500.S   |   14 +++++++-------
>  libgloss/or1k/ordb2a.S          |   14 +++++++-------
>  libgloss/or1k/orpsocrefdesign.S |   14 +++++++-------
>  7 files changed, 51 insertions(+), 42 deletions(-)
>
> diff --git a/libgloss/ChangeLog.or1k b/libgloss/ChangeLog.or1k
> index 83137c2..b8d07d4 100644
> --- a/libgloss/ChangeLog.or1k
> +++ b/libgloss/ChangeLog.or1k
> @@ -1,3 +1,12 @@
> +2012-10-02  Stefan Kristiansson  <[email protected]>
> +
> +       * or1k/ml501.S: make board globals weak
> +       * or1k/or1ksim-uart.S: ditto
> +       * or1k/or1ksim.S: ditto
> +       * or1k/ordb1a3pe1500.S: ditto
> +       * or1k/ordb2a.S: ditto
> +       * or1k/orpsocrefdesign.S: ditto
> +
>  2012-06-22  Peter Gavin  <[email protected]>
>
>         make each board use its own exit routine
> diff --git a/libgloss/or1k/ml501.S b/libgloss/or1k/ml501.S
> index 24b1fbe..edce0bc 100644
> --- a/libgloss/or1k/ml501.S
> +++ b/libgloss/or1k/ml501.S
> @@ -4,9 +4,9 @@
>   * Define symbols to be used during startup - file is linked at compile time
>   *
>   */
> -.global _board_mem_base
> -.global _board_mem_size
> -.global _board_clk_freq
> +.weak _board_mem_base
> +.weak _board_mem_size
> +.weak _board_clk_freq
>
>  _board_mem_base:       .long   0x0
>  _board_mem_size:       .long   0x800000
> @@ -14,14 +14,14 @@ _board_mem_size:    .long   0x800000
>  _board_clk_freq:       .long   66666666
>
>  /* Peripheral information - Set base to 0 if not present*/
> -.global _board_uart_base
> -.global _board_uart_baud
> -.global _board_uart_IRQ
> +.weak _board_uart_base
> +.weak _board_uart_baud
> +.weak _board_uart_IRQ
>
>  _board_uart_base:      .long   0x90000000
>  _board_uart_baud:      .long   115200
>  _board_uart_IRQ:       .long   2
>
> -.global _board_exit
> +.weak _board_exit
>  _board_exit:
>          OR1K_DELAYED_NOP(l.j _board_exit)
> diff --git a/libgloss/or1k/or1ksim-uart.S b/libgloss/or1k/or1ksim-uart.S
> index 9f4ae22..ecbf0f8 100644
> --- a/libgloss/or1k/or1ksim-uart.S
> +++ b/libgloss/or1k/or1ksim-uart.S
> @@ -6,9 +6,9 @@
>   *
>   */
>
> -.global _board_mem_base
> -.global _board_mem_size
> -.global _board_clk_freq
> +.weak _board_mem_base
> +.weak _board_mem_size
> +.weak _board_clk_freq
>
>
>  _board_mem_base:       .long   0x0
> @@ -17,15 +17,15 @@ _board_clk_freq:    .long   100000000
>
>
>  /* Peripheral information - Set base to 0 if not present*/
> -.global _board_uart_base
> -.global _board_uart_baud
> -.global _board_uart_IRQ
> +.weak _board_uart_base
> +.weak _board_uart_baud
> +.weak _board_uart_IRQ
>
>  _board_uart_base:      .long   0x90000000
>  _board_uart_baud:      .long   115200
>  _board_uart_IRQ:       .long   13
>
> -.global _board_exit
> +.weak _board_exit
>  _board_exit:
>          l.nop NOP_EXIT_SILENT
>          OR1K_DELAYED_NOP(l.j _board_exit)
> diff --git a/libgloss/or1k/or1ksim.S b/libgloss/or1k/or1ksim.S
> index 9c96d10..2c8e804 100644
> --- a/libgloss/or1k/or1ksim.S
> +++ b/libgloss/or1k/or1ksim.S
> @@ -5,9 +5,9 @@
>   * Define symbols to be used during startup - file is linked at compile time
>   *
>   */
> -.global _board_mem_base
> -.global _board_mem_size
> -.global _board_clk_freq
> +.weak _board_mem_base
> +.weak _board_mem_size
> +.weak _board_clk_freq
>
>  _board_mem_base:       .long   0x0
>  _board_mem_size:       .long   0x800000
> @@ -15,15 +15,15 @@ _board_mem_size:    .long   0x800000
>  _board_clk_freq:       .long   100000000
>
>  /* Peripheral information - Set base to 0 if not present*/
> -.global _board_uart_base
> -.global _board_uart_baud
> -.global _board_uart_IRQ
> +.weak _board_uart_base
> +.weak _board_uart_baud
> +.weak _board_uart_IRQ
>
>  _board_uart_base:      .long   0x0
>  _board_uart_baud:      .long   115200
>  _board_uart_IRQ:       .long   13
>
> -.global _board_exit
> +.weak _board_exit
>  _board_exit:
>          l.nop NOP_EXIT_SILENT
>          OR1K_DELAYED_NOP(l.j _board_exit)
> diff --git a/libgloss/or1k/ordb1a3pe1500.S b/libgloss/or1k/ordb1a3pe1500.S
> index 8f01c83..f15c632 100644
> --- a/libgloss/or1k/ordb1a3pe1500.S
> +++ b/libgloss/or1k/ordb1a3pe1500.S
> @@ -4,9 +4,9 @@
>   * Define symbols to be used during startup - file is linked at compile time
>   *
>   */
> -.global _board_mem_base
> -.global _board_mem_size
> -.global _board_clk_freq
> +.weak _board_mem_base
> +.weak _board_mem_size
> +.weak _board_clk_freq
>
>  _board_mem_base:       .long   0x0
>  _board_mem_size:       .long   0x02000000
> @@ -14,14 +14,14 @@ _board_mem_size:    .long   0x02000000
>  _board_clk_freq:       .long   20000000
>
>  /* Peripheral information - Set base to 0 if not present*/
> -.global _board_uart_base
> -.global _board_uart_baud
> -.global _board_uart_IRQ
> +.weak _board_uart_base
> +.weak _board_uart_baud
> +.weak _board_uart_IRQ
>
>  _board_uart_base:      .long   0x90000000
>  _board_uart_baud:      .long   115200
>  _board_uart_IRQ:       .long   2
>
> -.global _board_exit
> +.weak _board_exit
>  _board_exit:
>          OR1K_DELAYED_NOP(l.j _board_exit)
> diff --git a/libgloss/or1k/ordb2a.S b/libgloss/or1k/ordb2a.S
> index 38d993f..454e5b4 100644
> --- a/libgloss/or1k/ordb2a.S
> +++ b/libgloss/or1k/ordb2a.S
> @@ -4,9 +4,9 @@
>   * Define symbols to be used during startup - file is linked at compile time
>   * Olof Kindgren olof at opencores.org
>   */
> -.global _board_mem_base
> -.global _board_mem_size
> -.global _board_clk_freq
> +.weak _board_mem_base
> +.weak _board_mem_size
> +.weak _board_clk_freq
>
>  _board_mem_base:       .long   0x0
>  _board_mem_size:       .long   0x02000000
> @@ -14,14 +14,14 @@ _board_mem_size:    .long   0x02000000
>  _board_clk_freq:       .long   50000000
>
>  /* Peripheral information - Set base to 0 if not present*/
> -.global _board_uart_base
> -.global _board_uart_baud
> -.global _board_uart_IRQ
> +.weak _board_uart_base
> +.weak _board_uart_baud
> +.weak _board_uart_IRQ
>
>  _board_uart_base:      .long   0x90000000
>  _board_uart_baud:      .long   115200
>  _board_uart_IRQ:       .long   2
>
> -.global _board_exit
> +.weak _board_exit
>  _board_exit:
>          OR1K_DELAYED_NOP(l.j _board_exit)
> diff --git a/libgloss/or1k/orpsocrefdesign.S b/libgloss/or1k/orpsocrefdesign.S
> index 2491857..c102d02 100644
> --- a/libgloss/or1k/orpsocrefdesign.S
> +++ b/libgloss/or1k/orpsocrefdesign.S
> @@ -4,9 +4,9 @@
>   * Define symbols to be used during startup - file is linked at compile time
>   *
>   */
> -.global _board_mem_base
> -.global _board_mem_size
> -.global _board_clk_freq
> +.weak _board_mem_base
> +.weak _board_mem_size
> +.weak _board_clk_freq
>
>  _board_mem_base:       .long   0x0
>  _board_mem_size:       .long   0x800000
> @@ -14,14 +14,14 @@ _board_mem_size:    .long   0x800000
>  _board_clk_freq:       .long   50000000
>
>  /* Peripheral information - Set base to 0 if not present*/
> -.global _board_uart_base
> -.global _board_uart_baud
> -.global _board_uart_IRQ
> +.weak _board_uart_base
> +.weak _board_uart_baud
> +.weak _board_uart_IRQ
>
>  _board_uart_base:      .long   0
>  _board_uart_baud:      .long   115200
>  _board_uart_IRQ:       .long   2
>
> -.global _board_exit
> +.weak _board_exit
>  _board_exit:
>          OR1K_DELAYED_NOP(l.j _board_exit)
> --
> 1.7.9.5
>
> _______________________________________________
> Openrisc mailing list
> [email protected]
> http://lists.opencores.org/listinfo/openrisc

This looks good to me. I've been thinking about the same thing.

In the long run though, I would like to see a small API around the
UART stuff, so that we can override the send and receive functions
directly instead of overriding the base address and IRQ.

This would make it easier to support new I/O devices. Today we only
have uart16550 and or1ksim's nop functions, but it would be nice to
make it easier to support other ways of communication.

-- 
Olof Kindgren
______________________________________________
ORSoC
Website: www.orsoc.se
Email: [email protected]
______________________________________________
FPGA, ASIC, DSP - embedded SoC design
_______________________________________________
OpenRISC mailing list
[email protected]
http://lists.openrisc.net/listinfo/openrisc

Reply via email to