4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-01-19 12:59:21 +08:00

arc: libgloss: Add support of EM Starter Kit board

These specs files are introduced for EMSK board:

    * emsk1_em4.specs - EMSKv1 with EM4 core, everything in
      ICCM/DCCM memory
    * emsk1_em6.specs - EMSKv1 with EM6 core, everything in
      ICCM/DCCM memory
    * emsk1_em6_ram.specs - EMSKv1 with EM6 core, startup code
      in ICCM and everything else in RAM
    * emsk2.1_em5d.specs - EMSKv2.1 with EM5D core, everything
      in ICCM/DCCM memory
    * emsk2.1_em7d.specs - EMSKv2.1 with EM7D core, everything
      in ICCM/DCCM memory
    * emsk2.1_em7d_ram.specs - EMSKv2.1 with EM7D core, startup
      code in ICCM and everything else in RAM
    * emsk2.2_em7d.specs - EMSKv2.2+ with EM7D core, everything
      in ICCM/DCCM memory
    * emsk2.2_em7d_ram.specs - EMSKv2.2+ with EM7D core, startup
      code in ICCM and everything else in RAM
    * emsk2.2_em9d.specs - EMSKv2.2+ with EM9D core, everything
      in ICCM/DCCM memory
    * emsk2.2_em9d_ram.specs - EMSKv2.2+ with EM9D core, startup
      code in ICCM and everything else in RAM
    * emsk2.2_em11d.specs - EMSKv2.2+ with EM11D core, everything
      in ICCM/DCCM memory
    * emsk2.2_em11d_ram.specs - EMSKv2.2+ with EM11D core, startup
      code in ICCM and everything else in RAM

An example of building an application:

    $ arc-elf32-gcc -mcpu=em -specs=emsk2.2_em11d_ram.specs main.c -o main

Signed-off-by: Vladimir Isaev <vvisaev@gmail.com>
Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
This commit is contained in:
Yuriy Kolerov 2024-05-21 10:56:57 +01:00 committed by Jeff Johnston
parent 6f8ee57d09
commit 2935b9e718
25 changed files with 425 additions and 0 deletions

View File

@ -0,0 +1,33 @@
/*
* emsk-uart-setup.c -- provide _setup_low_level() to initialize UART.
*
* Copyright (c) 2024 Synopsys Inc.
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this
* notice is included verbatim in any distributions. No written agreement,
* license, or royalty fee is required for any of the authorized uses.
* Modifications to this software may be copyrighted by their authors
* and need not follow the licensing terms described here, provided that
* the new terms are clearly indicated on the first page of each file where
* they apply.
*
*/
#include "uart-8250.h"
/* Setup UART parameters. */
int
_setup_low_level (void)
{
const uint32_t aux_dmp_per = 0x20a;
void * const uart_base = (char *)__builtin_arc_lr(aux_dmp_per) + 0x00009000;
const int uart_aux_mapped = 0;
const uint32_t uart_clock = 50000000;
const uint32_t uart_baud = 115200;
_uart_8250_setup (uart_base, uart_aux_mapped, uart_clock, uart_baud);
return 0;
}

14
libgloss/arc/emsk1_em4.ld Normal file
View File

@ -0,0 +1,14 @@
/* Memory map fo ARC EM Starter Kit v1 - EM4 */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 128K
DCCM : ORIGIN = 0x80000000, LENGTH = 64K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", ICCM)
REGION_ALIAS("data", DCCM)
REGION_ALIAS("sdata", DCCM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk1_em4.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

14
libgloss/arc/emsk1_em6.ld Normal file
View File

@ -0,0 +1,14 @@
/* Memory map for ARC EM Starter Kit v1 - EM6GP */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 32K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", ICCM)
REGION_ALIAS("data", DRAM)
REGION_ALIAS("sdata", DRAM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk1_em6.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,14 @@
/* Memory map for ARC EM Starter Kit v1 - EM6GP */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 32K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", DRAM)
REGION_ALIAS("data", DRAM)
REGION_ALIAS("sdata", DRAM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk1_em6_ram.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,14 @@
/* ARC EM Starter Kit v2.1 - EM5D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 128K
DCCM : ORIGIN = 0x80000000, LENGTH = 256K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", ICCM)
REGION_ALIAS("data", DCCM)
REGION_ALIAS("sdata", DCCM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.1_em5d.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,15 @@
/* Memory map for ARC EM Starter Kit v2.1 - EM7D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 32K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
DCCM : ORIGIN = 0x80000000, LENGTH = 32K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", ICCM)
REGION_ALIAS("data", DRAM)
REGION_ALIAS("sdata", DRAM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.1_em7d.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,15 @@
/* Memory map for ARC EM Starter Kit v2.1 - EM7D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 32K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
DCCM : ORIGIN = 0x80000000, LENGTH = 32K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", DRAM)
REGION_ALIAS("data", DRAM)
REGION_ALIAS("sdata", DRAM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.1_em7d_ram.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,15 @@
/* Memory map for ARC EM Starter Kit v2.2 and 2.3 - EM11D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 64K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
DCCM : ORIGIN = 0x80000000, LENGTH = 64K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", ICCM)
REGION_ALIAS("data", DCCM)
REGION_ALIAS("sdata", DCCM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.2_em11d.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,15 @@
/* Memory map for ARC EM Starter Kit v2.2 and 2.3 - EM11D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 64K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
DCCM : ORIGIN = 0x80000000, LENGTH = 64K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", DRAM)
REGION_ALIAS("data", DRAM)
REGION_ALIAS("sdata", DRAM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.2_em11d_ram.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,15 @@
/* Memory map for ARC EM Starter Kit v2.2 and 2.3 - EM7D and EM9D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 256K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
DCCM : ORIGIN = 0x80000000, LENGTH = 128K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", ICCM)
REGION_ALIAS("data", DCCM)
REGION_ALIAS("sdata", DCCM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.2_em7d.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,15 @@
/* Memory map for ARC EM Starter Kit v2.2 and 2.3 - EM7D and EM9D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 256K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
DCCM : ORIGIN = 0x80000000, LENGTH = 128K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", DRAM)
REGION_ALIAS("data", DRAM)
REGION_ALIAS("sdata", DRAM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.2_em7d_ram.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,15 @@
/* Memory map for ARC EM Starter Kit v2.2 and 2.3 - EM7D and EM9D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 256K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
DCCM : ORIGIN = 0x80000000, LENGTH = 128K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", ICCM)
REGION_ALIAS("data", DCCM)
REGION_ALIAS("sdata", DCCM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.2_em9d.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s

View File

@ -0,0 +1,15 @@
/* Memory map for ARC EM Starter Kit v2.2 and 2.3 - EM7D and EM9D */
MEMORY
{
ICCM : ORIGIN = 0x00000000, LENGTH = 256K
DRAM : ORIGIN = 0x10000000, LENGTH = 128M
DCCM : ORIGIN = 0x80000000, LENGTH = 128K
}
REGION_ALIAS("startup", ICCM)
REGION_ALIAS("text", DRAM)
REGION_ALIAS("data", DRAM)
REGION_ALIAS("sdata", DRAM)
INCLUDE arcv2elf-common.ld

View File

@ -0,0 +1,18 @@
%rename link emsk_link
%rename link_gcc_c_sequence emsk_link_gcc_c_sequence
%rename startfile emsk_startfile
*link:
%(emsk_link) -T emsk2.2_em9d_ram.ld%s
*emsk_libgloss:
-luart_8250 -lemsk_uart
*emsk_libc:
%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
*link_gcc_c_sequence:
%(emsk_link_gcc_c_sequence) --start-group %G %(emsk_libc) %(emsk_libgloss) --end-group
*startfile:
%(emsk_startfile) arc-main-helper%O%s