public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 00/15] A series of fixes for ARC and libgloss update
@ 2024-05-21  9:56 kolerov93
  2024-05-21  9:56 ` [PATCH 01/15] arc: libgloss: Use long calls attribute for exit_halt kolerov93
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov

From: Yuriy Kolerov <kolerov93@gmail.com>

This a series of patches for Synopsys ARC port that
have accumulated over the past years. It contains
several small fixes and a significant update of
libgloss for all supported boards for ARC targets:
IoT Development Kit, HS Development Kit, EM SDP
and EM Starter Kit.

Claudiu Zissulescu (3):
  arc: libgloss: Use long calls attribute for exit_halt
  arc: libc: Add support of 16-entry register file
  arc: libgloss: Use atexit to setup fini routines

Luis Silva (1):
  arc: libgloss: Use fstat call instead of stat for nSIM

Shahab Vahedi (1):
  arc: libc: Record r58/r59 in long-jump's buffer

Vladimir Isaev (1):
  arc: libgloss: Introduce hostlink interface

Yuriy Kolerov (9):
  arc: libc,libgloss: Remove .file directive from .S files
  arc: libgloss: Clean registers before any use
  arc: libgloss: Add UART 8250 library
  arc: libgloss: Add a linker script common for all boards
  arc: libgloss: Add support of IoT Development Kit board
  arc: libgloss: Add support of HS Development Kit board
  arc: libgloss: Add support of EM SDP board
  arc: libgloss: Add support of EM Starter Kit board
  arc: libgloss: Add build rules for new boards

 libgloss/Makefile.in                       | 1216 +++++++++++++++-----
 libgloss/arc/Makefile.inc                  |   92 +-
 libgloss/arc/arc-main-helper.c             |   73 ++
 libgloss/arc/arc-timer.c                   |  129 +++
 libgloss/arc/arc-timer.h                   |   25 +
 libgloss/arc/arcv2elf-common.ld            |  233 ++++
 libgloss/arc/crt0.S                        |   93 +-
 libgloss/arc/emsdp-uart-setup.c            |   32 +
 libgloss/arc/emsdp1.1.ld                   |   15 +
 libgloss/arc/emsdp1.1.specs                |   18 +
 libgloss/arc/emsdp1.1_ram.ld               |   15 +
 libgloss/arc/emsdp1.1_ram.specs            |   18 +
 libgloss/arc/emsdp1.2.ld                   |   15 +
 libgloss/arc/emsdp1.2.specs                |   18 +
 libgloss/arc/emsdp1.2_ram.ld               |   15 +
 libgloss/arc/emsdp1.2_ram.specs            |   18 +
 libgloss/arc/emsk-uart-setup.c             |   33 +
 libgloss/arc/emsk1_em4.ld                  |   14 +
 libgloss/arc/emsk1_em4.specs               |   18 +
 libgloss/arc/emsk1_em6.ld                  |   14 +
 libgloss/arc/emsk1_em6.specs               |   18 +
 libgloss/arc/emsk1_em6_ram.ld              |   14 +
 libgloss/arc/emsk1_em6_ram.specs           |   18 +
 libgloss/arc/emsk2.1_em5d.ld               |   14 +
 libgloss/arc/emsk2.1_em5d.specs            |   18 +
 libgloss/arc/emsk2.1_em7d.ld               |   15 +
 libgloss/arc/emsk2.1_em7d.specs            |   18 +
 libgloss/arc/emsk2.1_em7d_ram.ld           |   15 +
 libgloss/arc/emsk2.1_em7d_ram.specs        |   18 +
 libgloss/arc/emsk2.2_em11d.ld              |   15 +
 libgloss/arc/emsk2.2_em11d.specs           |   18 +
 libgloss/arc/emsk2.2_em11d_ram.ld          |   15 +
 libgloss/arc/emsk2.2_em11d_ram.specs       |   18 +
 libgloss/arc/emsk2.2_em7d.ld               |   15 +
 libgloss/arc/emsk2.2_em7d.specs            |   18 +
 libgloss/arc/emsk2.2_em7d_ram.ld           |   15 +
 libgloss/arc/emsk2.2_em7d_ram.specs        |   18 +
 libgloss/arc/emsk2.2_em9d.ld               |   15 +
 libgloss/arc/emsk2.2_em9d.specs            |   18 +
 libgloss/arc/emsk2.2_em9d_ram.ld           |   15 +
 libgloss/arc/emsk2.2_em9d_ram.specs        |   18 +
 libgloss/arc/hl-setup.c                    |   27 +
 libgloss/arc/hl-stub.c                     |   81 ++
 libgloss/arc/hl.specs                      |   14 +
 libgloss/arc/hl/hl_api.c                   |  350 ++++++
 libgloss/arc/hl/hl_api.h                   |   77 ++
 libgloss/arc/hl/hl_argc.c                  |   45 +
 libgloss/arc/hl/hl_argv.c                  |   67 ++
 libgloss/arc/hl/hl_clock.c                 |   87 ++
 libgloss/arc/hl/hl_close.c                 |   58 +
 libgloss/arc/hl/hl_exit.c                  |   42 +
 libgloss/arc/hl/hl_fstat.c                 |   95 ++
 libgloss/arc/hl/hl_gettimeofday.c          |   69 ++
 libgloss/arc/hl/hl_gw.c                    |  180 +++
 libgloss/arc/hl/hl_gw.h                    |   46 +
 libgloss/arc/hl/hl_isatty.c                |   64 ++
 libgloss/arc/hl/hl_lseek.c                 |   68 ++
 libgloss/arc/hl/hl_open.c                  |   89 ++
 libgloss/arc/hl/hl_read.c                  |  105 ++
 libgloss/arc/hl/hl_toolchain.h             |   53 +
 libgloss/arc/hl/hl_unlink.c                |   59 +
 libgloss/arc/hl/hl_write.c                 |   97 ++
 libgloss/arc/hsdk-uart-setup.c             |   32 +
 libgloss/arc/hsdk.ld                       |   13 +
 libgloss/arc/hsdk.specs                    |   18 +
 libgloss/arc/iotdk-uart-setup.c            |   36 +
 libgloss/arc/iotdk.ld                      |   14 +
 libgloss/arc/iotdk.specs                   |   18 +
 libgloss/arc/libcfunc.c                    |    6 +-
 libgloss/arc/nsim-syscalls.c               |    6 +-
 libgloss/arc/readme-hostlink.md            |   90 ++
 libgloss/arc/uart-8250-stub.c              |  116 ++
 libgloss/arc/uart-8250.c                   |  316 +++++
 libgloss/arc/uart-8250.h                   |   25 +
 newlib/libc/include/machine/setjmp.h       |    2 +-
 newlib/libc/machine/arc/memcmp-bs-norm.S   |    5 +-
 newlib/libc/machine/arc/memcmp-stub.c      |    5 +-
 newlib/libc/machine/arc/memcmp.S           |    5 +-
 newlib/libc/machine/arc/memcpy-archs.S     |    5 +-
 newlib/libc/machine/arc/memcpy-bs.S        |    5 +-
 newlib/libc/machine/arc/memcpy-stub.c      |    5 +-
 newlib/libc/machine/arc/memcpy.S           |    5 +-
 newlib/libc/machine/arc/memset-archs.S     |    5 +-
 newlib/libc/machine/arc/memset-bs.S        |    5 +-
 newlib/libc/machine/arc/memset-stub.c      |    5 +-
 newlib/libc/machine/arc/memset.S           |    5 +-
 newlib/libc/machine/arc/setjmp.S           |   28 +-
 newlib/libc/machine/arc/strchr-bs-norm.S   |    5 +-
 newlib/libc/machine/arc/strchr-bs.S        |    5 +-
 newlib/libc/machine/arc/strchr-stub.c      |    5 +-
 newlib/libc/machine/arc/strcmp-archs.S     |    5 +-
 newlib/libc/machine/arc/strcmp-stub.c      |    5 +-
 newlib/libc/machine/arc/strcmp.S           |    5 +-
 newlib/libc/machine/arc/strcpy-bs-arc600.S |    5 +-
 newlib/libc/machine/arc/strcpy-bs.S        |    5 +-
 newlib/libc/machine/arc/strcpy-stub.c      |    5 +-
 newlib/libc/machine/arc/strcpy.S           |    5 +-
 newlib/libc/machine/arc/strlen-bs-norm.S   |    5 +-
 newlib/libc/machine/arc/strlen-bs.S        |    5 +-
 newlib/libc/machine/arc/strlen-stub.c      |    5 +-
 newlib/libc/machine/arc/strlen.S           |    5 +-
 newlib/libc/machine/arc/strncpy-bs.S       |    5 +-
 newlib/libc/machine/arc/strncpy-stub.c     |    5 +-
 newlib/libc/machine/arc/strncpy.S          |    5 +-
 104 files changed, 4712 insertions(+), 371 deletions(-)
 create mode 100644 libgloss/arc/arc-main-helper.c
 create mode 100644 libgloss/arc/arc-timer.c
 create mode 100644 libgloss/arc/arc-timer.h
 create mode 100644 libgloss/arc/arcv2elf-common.ld
 create mode 100644 libgloss/arc/emsdp-uart-setup.c
 create mode 100644 libgloss/arc/emsdp1.1.ld
 create mode 100644 libgloss/arc/emsdp1.1.specs
 create mode 100644 libgloss/arc/emsdp1.1_ram.ld
 create mode 100644 libgloss/arc/emsdp1.1_ram.specs
 create mode 100644 libgloss/arc/emsdp1.2.ld
 create mode 100644 libgloss/arc/emsdp1.2.specs
 create mode 100644 libgloss/arc/emsdp1.2_ram.ld
 create mode 100644 libgloss/arc/emsdp1.2_ram.specs
 create mode 100644 libgloss/arc/emsk-uart-setup.c
 create mode 100644 libgloss/arc/emsk1_em4.ld
 create mode 100644 libgloss/arc/emsk1_em4.specs
 create mode 100644 libgloss/arc/emsk1_em6.ld
 create mode 100644 libgloss/arc/emsk1_em6.specs
 create mode 100644 libgloss/arc/emsk1_em6_ram.ld
 create mode 100644 libgloss/arc/emsk1_em6_ram.specs
 create mode 100644 libgloss/arc/emsk2.1_em5d.ld
 create mode 100644 libgloss/arc/emsk2.1_em5d.specs
 create mode 100644 libgloss/arc/emsk2.1_em7d.ld
 create mode 100644 libgloss/arc/emsk2.1_em7d.specs
 create mode 100644 libgloss/arc/emsk2.1_em7d_ram.ld
 create mode 100644 libgloss/arc/emsk2.1_em7d_ram.specs
 create mode 100644 libgloss/arc/emsk2.2_em11d.ld
 create mode 100644 libgloss/arc/emsk2.2_em11d.specs
 create mode 100644 libgloss/arc/emsk2.2_em11d_ram.ld
 create mode 100644 libgloss/arc/emsk2.2_em11d_ram.specs
 create mode 100644 libgloss/arc/emsk2.2_em7d.ld
 create mode 100644 libgloss/arc/emsk2.2_em7d.specs
 create mode 100644 libgloss/arc/emsk2.2_em7d_ram.ld
 create mode 100644 libgloss/arc/emsk2.2_em7d_ram.specs
 create mode 100644 libgloss/arc/emsk2.2_em9d.ld
 create mode 100644 libgloss/arc/emsk2.2_em9d.specs
 create mode 100644 libgloss/arc/emsk2.2_em9d_ram.ld
 create mode 100644 libgloss/arc/emsk2.2_em9d_ram.specs
 create mode 100644 libgloss/arc/hl-setup.c
 create mode 100644 libgloss/arc/hl-stub.c
 create mode 100644 libgloss/arc/hl.specs
 create mode 100644 libgloss/arc/hl/hl_api.c
 create mode 100644 libgloss/arc/hl/hl_api.h
 create mode 100644 libgloss/arc/hl/hl_argc.c
 create mode 100644 libgloss/arc/hl/hl_argv.c
 create mode 100644 libgloss/arc/hl/hl_clock.c
 create mode 100644 libgloss/arc/hl/hl_close.c
 create mode 100644 libgloss/arc/hl/hl_exit.c
 create mode 100644 libgloss/arc/hl/hl_fstat.c
 create mode 100644 libgloss/arc/hl/hl_gettimeofday.c
 create mode 100644 libgloss/arc/hl/hl_gw.c
 create mode 100644 libgloss/arc/hl/hl_gw.h
 create mode 100644 libgloss/arc/hl/hl_isatty.c
 create mode 100644 libgloss/arc/hl/hl_lseek.c
 create mode 100644 libgloss/arc/hl/hl_open.c
 create mode 100644 libgloss/arc/hl/hl_read.c
 create mode 100644 libgloss/arc/hl/hl_toolchain.h
 create mode 100644 libgloss/arc/hl/hl_unlink.c
 create mode 100644 libgloss/arc/hl/hl_write.c
 create mode 100644 libgloss/arc/hsdk-uart-setup.c
 create mode 100644 libgloss/arc/hsdk.ld
 create mode 100644 libgloss/arc/hsdk.specs
 create mode 100644 libgloss/arc/iotdk-uart-setup.c
 create mode 100644 libgloss/arc/iotdk.ld
 create mode 100644 libgloss/arc/iotdk.specs
 create mode 100644 libgloss/arc/readme-hostlink.md
 create mode 100644 libgloss/arc/uart-8250-stub.c
 create mode 100644 libgloss/arc/uart-8250.c
 create mode 100644 libgloss/arc/uart-8250.h

-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 01/15] arc: libgloss: Use long calls attribute for exit_halt
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 02/15] arc: libc: Add support of 16-entry register file kolerov93
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss

From: Claudiu Zissulescu <claziss@gmail.com>

According to GCC documentation for ARC, a function marked with
the long_call attribute is always called using register-indirect
jump-and-link instructions, thereby enabling the called function
to be placed anywhere within the 32-bit address space.

exit_halt function is provided by crt0.S and it's used
in nsim-syscalls.c. Thus, we want to ensure that a linkage
issue will not arise.

Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
---
 libgloss/arc/nsim-syscalls.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libgloss/arc/nsim-syscalls.c b/libgloss/arc/nsim-syscalls.c
index 7dd0af10f..d299f8cdc 100644
--- a/libgloss/arc/nsim-syscalls.c
+++ b/libgloss/arc/nsim-syscalls.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -100,7 +100,7 @@ _open (const char * pathname, int flags, int mode)
 }
 
 /* Should be provided by crt0.S.  */
-extern void __attribute__((noreturn)) _exit_halt ();
+extern void __attribute__((noreturn, long_call)) _exit_halt ();
 
 void
 __attribute__((noreturn))
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 02/15] arc: libc: Add support of 16-entry register file
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
  2024-05-21  9:56 ` [PATCH 01/15] arc: libgloss: Use long calls attribute for exit_halt kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 03/15] arc: libc,libgloss: Remove .file directive from .S files kolerov93
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss

From: Claudiu Zissulescu <claziss@gmail.com>

ARC supports a restricted register file with 16 registers.
However, optimized routines support only a full register
file. Thus, fallback on default implementation in case
of 16-entry register file.

Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
---
 newlib/libc/machine/arc/memcmp-bs-norm.S   | 5 +++--
 newlib/libc/machine/arc/memcmp-stub.c      | 5 +++--
 newlib/libc/machine/arc/memcmp.S           | 5 +++--
 newlib/libc/machine/arc/memcpy-archs.S     | 5 +++--
 newlib/libc/machine/arc/memcpy-bs.S        | 5 +++--
 newlib/libc/machine/arc/memcpy-stub.c      | 5 +++--
 newlib/libc/machine/arc/memcpy.S           | 5 +++--
 newlib/libc/machine/arc/memset-archs.S     | 5 +++--
 newlib/libc/machine/arc/memset-bs.S        | 5 +++--
 newlib/libc/machine/arc/memset-stub.c      | 5 +++--
 newlib/libc/machine/arc/memset.S           | 5 +++--
 newlib/libc/machine/arc/strchr-bs-norm.S   | 5 +++--
 newlib/libc/machine/arc/strchr-bs.S        | 5 +++--
 newlib/libc/machine/arc/strchr-stub.c      | 5 +++--
 newlib/libc/machine/arc/strcmp-archs.S     | 5 +++--
 newlib/libc/machine/arc/strcmp-stub.c      | 5 +++--
 newlib/libc/machine/arc/strcmp.S           | 5 +++--
 newlib/libc/machine/arc/strcpy-bs-arc600.S | 5 +++--
 newlib/libc/machine/arc/strcpy-bs.S        | 5 +++--
 newlib/libc/machine/arc/strcpy-stub.c      | 5 +++--
 newlib/libc/machine/arc/strcpy.S           | 5 +++--
 newlib/libc/machine/arc/strlen-bs-norm.S   | 5 +++--
 newlib/libc/machine/arc/strlen-bs.S        | 5 +++--
 newlib/libc/machine/arc/strlen-stub.c      | 5 +++--
 newlib/libc/machine/arc/strlen.S           | 5 +++--
 newlib/libc/machine/arc/strncpy-bs.S       | 5 +++--
 newlib/libc/machine/arc/strncpy-stub.c     | 5 +++--
 newlib/libc/machine/arc/strncpy.S          | 5 +++--
 28 files changed, 84 insertions(+), 56 deletions(-)

diff --git a/newlib/libc/machine/arc/memcmp-bs-norm.S b/newlib/libc/machine/arc/memcmp-bs-norm.S
index be2464ac0..b136fdc33 100644
--- a/newlib/libc/machine/arc/memcmp-bs-norm.S
+++ b/newlib/libc/machine/arc/memcmp-bs-norm.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/memcmp.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/memcmp-stub.c b/newlib/libc/machine/arc/memcmp-stub.c
index 30c7884d2..872f57b01 100644
--- a/newlib/libc/machine/arc/memcmp-stub.c
+++ b/newlib/libc/machine/arc/memcmp-stub.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,8 @@
 */
 
 
-#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
+#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)	\
+  || defined (__ARC_RF16__)
 # include "../../string/memcmp.c"
 #else
 /* See memcmp-*.S.  */
diff --git a/newlib/libc/machine/arc/memcmp.S b/newlib/libc/machine/arc/memcmp.S
index 7c5a05882..30b7a7450 100644
--- a/newlib/libc/machine/arc/memcmp.S
+++ b/newlib/libc/machine/arc/memcmp.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/memcmp.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/memcpy-archs.S b/newlib/libc/machine/arc/memcpy-archs.S
index 84e766ad8..f30dafd4f 100644
--- a/newlib/libc/machine/arc/memcpy-archs.S
+++ b/newlib/libc/machine/arc/memcpy-archs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/memcpy.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/memcpy-bs.S b/newlib/libc/machine/arc/memcpy-bs.S
index 5a224eb8b..6c86adf1d 100644
--- a/newlib/libc/machine/arc/memcpy-bs.S
+++ b/newlib/libc/machine/arc/memcpy-bs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/memcpy.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/memcpy-stub.c b/newlib/libc/machine/arc/memcpy-stub.c
index cc46c2d08..207fe8dbc 100644
--- a/newlib/libc/machine/arc/memcpy-stub.c
+++ b/newlib/libc/machine/arc/memcpy-stub.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,8 @@
 */
 
 
-#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
+#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)	\
+  || defined (__ARC_RF16__)
 # include "../../string/memcpy.c"
 #else
 /* See memcpy-*.S.  */
diff --git a/newlib/libc/machine/arc/memcpy.S b/newlib/libc/machine/arc/memcpy.S
index 6452f975e..d31bb2c12 100644
--- a/newlib/libc/machine/arc/memcpy.S
+++ b/newlib/libc/machine/arc/memcpy.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/memcpy.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/memset-archs.S b/newlib/libc/machine/arc/memset-archs.S
index dc912aa77..1204cc0d7 100644
--- a/newlib/libc/machine/arc/memset-archs.S
+++ b/newlib/libc/machine/arc/memset-archs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/memset.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/memset-bs.S b/newlib/libc/machine/arc/memset-bs.S
index 0206668ac..0b5e43651 100644
--- a/newlib/libc/machine/arc/memset-bs.S
+++ b/newlib/libc/machine/arc/memset-bs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/memset.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/memset-stub.c b/newlib/libc/machine/arc/memset-stub.c
index 981ca1f30..d285eb463 100644
--- a/newlib/libc/machine/arc/memset-stub.c
+++ b/newlib/libc/machine/arc/memset-stub.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,8 @@
 */
 
 
-#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
+#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)	\
+  || defined (__ARC_RF16__)
 # include "../../string/memset.c"
 #else
 /* See memset-*.S.  */
diff --git a/newlib/libc/machine/arc/memset.S b/newlib/libc/machine/arc/memset.S
index 126d9ff7c..229205da1 100644
--- a/newlib/libc/machine/arc/memset.S
+++ b/newlib/libc/machine/arc/memset.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/memset.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strchr-bs-norm.S b/newlib/libc/machine/arc/strchr-bs-norm.S
index e69ac6c82..2cd7e7fdb 100644
--- a/newlib/libc/machine/arc/strchr-bs-norm.S
+++ b/newlib/libc/machine/arc/strchr-bs-norm.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strchr.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 /* ARC700 has a relatively long pipeline and branch prediction, so we want
    to avoid branches that are hard to predict.  On the other hand, the
diff --git a/newlib/libc/machine/arc/strchr-bs.S b/newlib/libc/machine/arc/strchr-bs.S
index eb61a3a32..125d1f771 100644
--- a/newlib/libc/machine/arc/strchr-bs.S
+++ b/newlib/libc/machine/arc/strchr-bs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strchr.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strchr-stub.c b/newlib/libc/machine/arc/strchr-stub.c
index 8d84a8255..ea7a3b4a5 100644
--- a/newlib/libc/machine/arc/strchr-stub.c
+++ b/newlib/libc/machine/arc/strchr-stub.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,8 @@
 */
 
 
-#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
+#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)	\
+  || defined (__ARC_RF16__)
 # include "../../string/strchr.c"
 #else
 /* See strchr-*.S.  */
diff --git a/newlib/libc/machine/arc/strcmp-archs.S b/newlib/libc/machine/arc/strcmp-archs.S
index 6cccf2773..543cebc4e 100644
--- a/newlib/libc/machine/arc/strcmp-archs.S
+++ b/newlib/libc/machine/arc/strcmp-archs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strcmp.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strcmp-stub.c b/newlib/libc/machine/arc/strcmp-stub.c
index 19528e333..ab85b792f 100644
--- a/newlib/libc/machine/arc/strcmp-stub.c
+++ b/newlib/libc/machine/arc/strcmp-stub.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,8 @@
 */
 
 
-#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
+#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)	\
+  || defined (__ARC_RF16__)
 # include "../../string/strcmp.c"
 #else
 /* See strcmp-*.S.  */
diff --git a/newlib/libc/machine/arc/strcmp.S b/newlib/libc/machine/arc/strcmp.S
index 40a9e943f..32a651ed8 100644
--- a/newlib/libc/machine/arc/strcmp.S
+++ b/newlib/libc/machine/arc/strcmp.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strcmp.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strcpy-bs-arc600.S b/newlib/libc/machine/arc/strcpy-bs-arc600.S
index e80ffe535..2979702de 100644
--- a/newlib/libc/machine/arc/strcpy-bs-arc600.S
+++ b/newlib/libc/machine/arc/strcpy-bs-arc600.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strcpy.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strcpy-bs.S b/newlib/libc/machine/arc/strcpy-bs.S
index 26ac6c78d..d8c36abb6 100644
--- a/newlib/libc/machine/arc/strcpy-bs.S
+++ b/newlib/libc/machine/arc/strcpy-bs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strcpy.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strcpy-stub.c b/newlib/libc/machine/arc/strcpy-stub.c
index 80ea0e81d..d3b182f85 100644
--- a/newlib/libc/machine/arc/strcpy-stub.c
+++ b/newlib/libc/machine/arc/strcpy-stub.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,8 @@
 */
 
 
-#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
+#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)	\
+  || defined (__ARC_RF16__)
 # include "../../string/strcpy.c"
 #else
 /* See strcpy-*.S.  */
diff --git a/newlib/libc/machine/arc/strcpy.S b/newlib/libc/machine/arc/strcpy.S
index e379b7930..132bd168c 100644
--- a/newlib/libc/machine/arc/strcpy.S
+++ b/newlib/libc/machine/arc/strcpy.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strcpy.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strlen-bs-norm.S b/newlib/libc/machine/arc/strlen-bs-norm.S
index 5f8db32cc..89c6fcd68 100644
--- a/newlib/libc/machine/arc/strlen-bs-norm.S
+++ b/newlib/libc/machine/arc/strlen-bs-norm.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strlen.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 #if (defined (__ARC700__) || defined (__ARCEM__) || defined (__ARCHS__)) \
diff --git a/newlib/libc/machine/arc/strlen-bs.S b/newlib/libc/machine/arc/strlen-bs.S
index 59c350482..15caa830c 100644
--- a/newlib/libc/machine/arc/strlen-bs.S
+++ b/newlib/libc/machine/arc/strlen-bs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strlen.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strlen-stub.c b/newlib/libc/machine/arc/strlen-stub.c
index 942e9be68..c52eecaa6 100644
--- a/newlib/libc/machine/arc/strlen-stub.c
+++ b/newlib/libc/machine/arc/strlen-stub.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,8 @@
 */
 
 
-#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
+#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)	\
+  || defined (__ARC_RF16__)
 # include "../../string/strlen.c"
 #else
 /* See strlen-*.S.  */
diff --git a/newlib/libc/machine/arc/strlen.S b/newlib/libc/machine/arc/strlen.S
index 67f820fe9..2072f3d15 100644
--- a/newlib/libc/machine/arc/strlen.S
+++ b/newlib/libc/machine/arc/strlen.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strlen.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strncpy-bs.S b/newlib/libc/machine/arc/strncpy-bs.S
index ec991524e..30770483c 100644
--- a/newlib/libc/machine/arc/strncpy-bs.S
+++ b/newlib/libc/machine/arc/strncpy-bs.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strncpy.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
diff --git a/newlib/libc/machine/arc/strncpy-stub.c b/newlib/libc/machine/arc/strncpy-stub.c
index 3f8f9db37..4a3a6073f 100644
--- a/newlib/libc/machine/arc/strncpy-stub.c
+++ b/newlib/libc/machine/arc/strncpy-stub.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -29,7 +29,8 @@
 */
 
 
-#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)
+#if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED)	\
+  || defined (__ARC_RF16__)
 # include "../../string/strncpy.c"
 #else
 /* See strncpy-*.S.  */
diff --git a/newlib/libc/machine/arc/strncpy.S b/newlib/libc/machine/arc/strncpy.S
index b04f5895d..959f2a4d3 100644
--- a/newlib/libc/machine/arc/strncpy.S
+++ b/newlib/libc/machine/arc/strncpy.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -31,7 +31,8 @@
 /* This implementation is optimized for performance.  For code size a generic
    implementation of this function from newlib/libc/string/strncpy.c will be
    used.  */
-#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED)
+#if !defined (__OPTIMIZE_SIZE__) && !defined (PREFER_SIZE_OVER_SPEED) \
+    && !defined (__ARC_RF16__)
 
 #include "asm.h"
 
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 03/15] arc: libc,libgloss: Remove .file directive from .S files
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
  2024-05-21  9:56 ` [PATCH 01/15] arc: libgloss: Use long calls attribute for exit_halt kolerov93
  2024-05-21  9:56 ` [PATCH 02/15] arc: libc: Add support of 16-entry register file kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 04/15] arc: libc: Record r58/r59 in long-jump's buffer kolerov93
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov

From: Yuriy Kolerov <kolerov93@gmail.com>

Assembler for ARCv2 always extends the name provided by
.file directive to an absolute form.

On ARCv3 targets .file directive forces assembler to put
a provided string to DW_AT_name field as is without
extending to an absolute path. Then GDB cannot find
source files because of it.

The best way to fix this issue is just delete lines
with .file directive in .S files and let the compiler
to decide what DW_AT_name must contain. Particularly,
the compiler fills this filed by an absolute path to
a .S file because only absolute paths are used in
toolchain's build process.

Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/arc/crt0.S              | 3 +--
 newlib/libc/machine/arc/setjmp.S | 4 +---
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/libgloss/arc/crt0.S b/libgloss/arc/crt0.S
index 8d9adaa52..6c24e8dcb 100644
--- a/libgloss/arc/crt0.S
+++ b/libgloss/arc/crt0.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015-2016, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -55,7 +55,6 @@
 #define __ARCHS__ 1
 #endif
 
-	.file	"crt0.S"
 	.extern main
 
 #if defined (__ARCEM__) || defined (__ARCHS__)
diff --git a/newlib/libc/machine/arc/setjmp.S b/newlib/libc/machine/arc/setjmp.S
index 8e824f5cc..bd6acdcc4 100644
--- a/newlib/libc/machine/arc/setjmp.S
+++ b/newlib/libc/machine/arc/setjmp.S
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2024, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -32,8 +32,6 @@
    these are the stack mappings for the registers
    as stored in the ABI for ARC */
 
-       .file "setjmp.S"
-
 ABIr13	= 0
 ABIr14	= ABIr13 + 4
 ABIr15	= ABIr14 + 4
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 04/15] arc: libc: Record r58/r59 in long-jump's buffer
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (2 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 03/15] arc: libc,libgloss: Remove .file directive from .S files kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 05/15] arc: libgloss: Use fstat call instead of stat for nSIM kolerov93
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss

From: Shahab Vahedi <shahab@synopsys.com>

The "longjmp" expects the "setjmp" to save the r58/r59 registers,
if there is any. With this change they are saved accordingly.

Checked for regression with running GCC's DejaGnu tests:

    $ runtest execute.exp=pr56982.c dg-torture.exp=pr48542.c

Signed-off-by: Shahab Vahedi <shahab@synopsys.com>
---
 newlib/libc/include/machine/setjmp.h |  2 +-
 newlib/libc/machine/arc/setjmp.S     | 24 ++++++++++++++++++------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
index e3534e18d..515e84c6d 100644
--- a/newlib/libc/include/machine/setjmp.h
+++ b/newlib/libc/include/machine/setjmp.h
@@ -281,7 +281,7 @@ _BEGIN_STD_C
 #endif
 
 #ifdef __arc__
-#define _JBLEN 25 /* r13-r30,blink,lp_count,lp_start,lp_end,mlo,mhi,status32 */
+#define _JBLEN 25 /* r13-r30,blink,lp_count,lp_start,lp_end,status32,r58,r59 */
 #endif
 
 #ifdef __MMIX__
diff --git a/newlib/libc/machine/arc/setjmp.S b/newlib/libc/machine/arc/setjmp.S
index bd6acdcc4..c00dbe92c 100644
--- a/newlib/libc/machine/arc/setjmp.S
+++ b/newlib/libc/machine/arc/setjmp.S
@@ -56,8 +56,8 @@ ABIlps	= ABIlpc + 4
 ABIlpe	= ABIlps + 4
 
 ABIflg	= ABIlpe + 4
-ABImlo	= ABIflg + 4
-ABImhi	= ABImlo + 4
+ABIr58	= ABIflg + 4
+ABIr59	= ABIr58 + 4
 
 	.text
 	.align 4
@@ -93,12 +93,19 @@ setjmp:
 #if (!defined (__ARC700__) && !defined (__ARCEM__) && !defined (__ARCHS__))
 ; Till the configure changes are decided, and implemented, the code working on
 ; mlo/mhi and using mul64 should be disabled.
-; 	st	mlo, [r0, ABImlo]
-; 	st	mhi, [r0, ABImhi]
+; 	st	mlo, [r0, ABIr58]
+; 	st	mhi, [r0, ABIr59]
 	lr	r2, [status32]
 	st	r2, [r0, ABIflg]
 #endif
 
+; If "MPY_OPTION > 6 or FPU_FMA_OPTION" in an ARCHS target, then there
+; is accumulator support in the processor.
+#if (defined (__ARCHS__) && (defined (__ARC_FPU_DP_FMA__) || defined (__ARC_FPU_SP_FMA__) ||  defined (__ARC_MPY_DMPY__) ||  defined (__ARC_DSP__)))
+	st	r58, [r0, ABIr58]
+	st	r59, [r0, ABIr59]
+#endif
+
 	j.d	[blink]
 	mov	r0,0
 .Lfe1:
@@ -144,8 +151,8 @@ longjmp:
 	sr	r3, [lp_end]
 
 #if (!defined (__ARC700__) && !defined (__ARCEM__) && !defined (__ARCHS__))
-	ld	r2, [r0, ABImlo]
-	ld	r3, [r0, ABImhi]
+	ld	r2, [r0, ABIr58]
+	ld	r3, [r0, ABIr59]
 ; We do not support restoring of mulhi and mlo registers, yet.
 
 ;	mulu64	0,r2,1			; restores mlo
@@ -155,6 +162,11 @@ longjmp:
 	flag	r2			; restore "status32" register
 #endif
 
+#if (defined (__ARCHS__) && (defined (__ARC_FPU_DP_FMA__) || defined (__ARC_FPU_SP_FMA__) ||  defined (__ARC_MPY_DMPY__) ||  defined (__ARC_DSP__)))
+	ld	r58, [r0, ABIr58]
+	ld	r59, [r0, ABIr59]
+#endif
+
 	mov.f	r1, r1			; to avoid return 0 from longjmp
 	mov.eq	r1, 1
 	j.d	[blink]
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 05/15] arc: libgloss: Use fstat call instead of stat for nSIM
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (3 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 04/15] arc: libc: Record r58/r59 in long-jump's buffer kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 06/15] arc: libgloss: Introduce hostlink interface kolerov93
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Luis Silva

From: Luis Silva <luis.m.silva99@hotmail.com>

This change is needed to meet semi-hosting requirements
for nSIM GNU I/O interface.

Signed-off-by: Luis Silva <luis.m.silva99@hotmail.com>
---
 libgloss/arc/nsim-syscalls.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libgloss/arc/nsim-syscalls.c b/libgloss/arc/nsim-syscalls.c
index d299f8cdc..80747e95d 100644
--- a/libgloss/arc/nsim-syscalls.c
+++ b/libgloss/arc/nsim-syscalls.c
@@ -206,7 +206,7 @@ _fstat (int fd, struct stat *buf)
 {
   struct nsim_stat nsim_stat;
   long __res;
-  _naked_syscall2 (__res, stat, fd, &nsim_stat)
+  _naked_syscall2 (__res, fstat, fd, &nsim_stat)
   translate_stat (&nsim_stat, buf);
   return __res;
 }
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 06/15] arc: libgloss: Introduce hostlink interface
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (4 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 05/15] arc: libgloss: Use fstat call instead of stat for nSIM kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 07/15] arc: libgloss: Use atexit to setup fini routines kolerov93
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Vladimir Isaev

From: Vladimir Isaev <vvisaev@gmail.com>

There is a special interface built in ARC simulators (such as
nSIM) called MetaWare hostlink IO which can be used to implement
system calls. This commit adds support for this interface to the
ARC port of libgloss.

Here is an example of using this interface:

    $ arc-elf32-gcc -mcpu=hs -specs=hl.specs main.c -o main
    $ nsimdrv -tcf $NSIM_HOME/etc/tcf/templates/hs48_full.tcf main
    Hello, World!

Signed-off-by: Vladimir Isaev <vvisaev@gmail.com>
---
 libgloss/arc/arc-main-helper.c    |  73 +++++++
 libgloss/arc/arc-timer.c          | 129 +++++++++++
 libgloss/arc/arc-timer.h          |  25 +++
 libgloss/arc/crt0.S               |  26 ++-
 libgloss/arc/hl-setup.c           |  27 +++
 libgloss/arc/hl-stub.c            |  81 +++++++
 libgloss/arc/hl.specs             |  14 ++
 libgloss/arc/hl/hl_api.c          | 350 ++++++++++++++++++++++++++++++
 libgloss/arc/hl/hl_api.h          |  77 +++++++
 libgloss/arc/hl/hl_argc.c         |  45 ++++
 libgloss/arc/hl/hl_argv.c         |  67 ++++++
 libgloss/arc/hl/hl_clock.c        |  87 ++++++++
 libgloss/arc/hl/hl_close.c        |  58 +++++
 libgloss/arc/hl/hl_exit.c         |  42 ++++
 libgloss/arc/hl/hl_fstat.c        |  95 ++++++++
 libgloss/arc/hl/hl_gettimeofday.c |  69 ++++++
 libgloss/arc/hl/hl_gw.c           | 180 +++++++++++++++
 libgloss/arc/hl/hl_gw.h           |  46 ++++
 libgloss/arc/hl/hl_isatty.c       |  64 ++++++
 libgloss/arc/hl/hl_lseek.c        |  68 ++++++
 libgloss/arc/hl/hl_open.c         |  89 ++++++++
 libgloss/arc/hl/hl_read.c         | 105 +++++++++
 libgloss/arc/hl/hl_toolchain.h    |  53 +++++
 libgloss/arc/hl/hl_unlink.c       |  59 +++++
 libgloss/arc/hl/hl_write.c        |  97 +++++++++
 libgloss/arc/libcfunc.c           |   6 +-
 libgloss/arc/readme-hostlink.md   |  90 ++++++++
 27 files changed, 2111 insertions(+), 11 deletions(-)
 create mode 100644 libgloss/arc/arc-main-helper.c
 create mode 100644 libgloss/arc/arc-timer.c
 create mode 100644 libgloss/arc/arc-timer.h
 create mode 100644 libgloss/arc/hl-setup.c
 create mode 100644 libgloss/arc/hl-stub.c
 create mode 100644 libgloss/arc/hl.specs
 create mode 100644 libgloss/arc/hl/hl_api.c
 create mode 100644 libgloss/arc/hl/hl_api.h
 create mode 100644 libgloss/arc/hl/hl_argc.c
 create mode 100644 libgloss/arc/hl/hl_argv.c
 create mode 100644 libgloss/arc/hl/hl_clock.c
 create mode 100644 libgloss/arc/hl/hl_close.c
 create mode 100644 libgloss/arc/hl/hl_exit.c
 create mode 100644 libgloss/arc/hl/hl_fstat.c
 create mode 100644 libgloss/arc/hl/hl_gettimeofday.c
 create mode 100644 libgloss/arc/hl/hl_gw.c
 create mode 100644 libgloss/arc/hl/hl_gw.h
 create mode 100644 libgloss/arc/hl/hl_isatty.c
 create mode 100644 libgloss/arc/hl/hl_lseek.c
 create mode 100644 libgloss/arc/hl/hl_open.c
 create mode 100644 libgloss/arc/hl/hl_read.c
 create mode 100644 libgloss/arc/hl/hl_toolchain.h
 create mode 100644 libgloss/arc/hl/hl_unlink.c
 create mode 100644 libgloss/arc/hl/hl_write.c
 create mode 100644 libgloss/arc/readme-hostlink.md

diff --git a/libgloss/arc/arc-main-helper.c b/libgloss/arc/arc-main-helper.c
new file mode 100644
index 000000000..e27e15b34
--- /dev/null
+++ b/libgloss/arc/arc-main-helper.c
@@ -0,0 +1,73 @@
+/*
+ * arc-main-helper.c -- provide custom __setup_argv_and_call_main();
+ * This function uses _argc(), _argvlen(), _argv() and _setup_low_level().
+ * Description for these functions can be found below in this file.
+ *
+ * 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 <stddef.h>
+#include <stdint.h>
+#include <alloca.h>
+
+/* Return number of arguments passed to host executable.  */
+extern int _argc (void);
+/*
+ * Return buffer length to be used for a given argument number.
+ * Buffer length includes '\0' character.
+ */
+extern uint32_t _argvlen (int a);
+/*
+ * Copy argument into buffer arg.
+ * arg must be no less than argvlen(a) length.
+ */
+extern int _argv (int a, char *arg);
+/* Custom setup.  Can be used to setup some port-specific stuff.  */
+extern int _setup_low_level (void);
+/* main function to call.  */
+extern int main (int argc, char **argv);
+
+/* Copy arguments from host to local stack and call main.  */
+int
+__setup_argv_and_call_main (void)
+{
+  int i;
+  int argc;
+  char **argv = NULL;
+
+  argc = _argc ();
+  if (argc > 0)
+    argv = alloca ((argc + 1) * sizeof (char *));
+
+  for (i = 0; i < argc; i++)
+    {
+      uint32_t arg_len;
+
+      arg_len = _argvlen (i);
+      if (arg_len == 0)
+	break;
+
+      argv[i] = alloca (arg_len);
+
+      if (_argv (i, argv[i]) < 0)
+	break;
+    }
+
+  if (argv)
+    argv[i] = NULL;
+
+  _setup_low_level ();
+
+  return main (i, argv);
+}
diff --git a/libgloss/arc/arc-timer.c b/libgloss/arc/arc-timer.c
new file mode 100644
index 000000000..2437407e7
--- /dev/null
+++ b/libgloss/arc/arc-timer.c
@@ -0,0 +1,129 @@
+/*
+ * arc-timer.c -- provide API for ARC timers.
+ *
+ * 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.
+ *
+ */
+
+#define ARC_TIM_BUILD		0x75
+#define ARC_TIM_BUILD_VER_MASK	0x00FF
+#define ARC_TIM_BUILD_TIM0_FL	0x0100
+#define ARC_TIM_BUILD_TIM1_FL	0x0200
+
+#define ARC_TIM_COUNT0		0x21
+#define ARC_TIM_CONTROL0	0x22
+#define ARC_TIM_LIMIT0		0x23
+
+#define ARC_TIM_COUNT1		0x100
+#define ARC_TIM_CONTROL1	0x101
+#define ARC_TIM_LIMIT1		0x102
+
+#define ARC_TIM_CONTROL_NH_FL	0x0002
+
+/* Timer used by '_default' functions.  */
+const unsigned int arc_timer_default = 0;
+
+/* Check if given timer exists.  */
+static int
+_arc_timer_present (unsigned int tim)
+{
+  unsigned int bcr = __builtin_arc_lr (ARC_TIM_BUILD);
+  unsigned int ver = bcr & ARC_TIM_BUILD_VER_MASK;
+
+  if (ver == 0)
+    return 0;
+  else if (ver == 1)
+    return 1;
+  else if (tim == 0)
+    return ((bcr & ARC_TIM_BUILD_TIM0_FL) != 0);
+  else if (tim == 1)
+    return ((bcr & ARC_TIM_BUILD_TIM1_FL) != 0);
+  else
+    return 0;
+}
+
+/* Get raw value of a given timer.  */
+static unsigned int
+_arc_timer_read (unsigned int tim)
+{
+  if (_arc_timer_present (tim))
+    {
+      if (tim == 0)
+	return __builtin_arc_lr (ARC_TIM_COUNT0);
+      else if (tim == 1)
+	return __builtin_arc_lr (ARC_TIM_COUNT1);
+    }
+
+  return 0;
+}
+
+/*
+ * Set default values to a given timer.
+ * Defaults: Not Halted bit is set, limit is 0xFFFFFFFF, count set to 0.
+ */
+static void
+_arc_timer_reset (unsigned int tim)
+{
+  unsigned int ctrl, tim_control, tim_count, tim_limit;
+
+  if (_arc_timer_present (tim))
+    {
+      if (tim == 0)
+	{
+	  tim_control = ARC_TIM_CONTROL0;
+	  tim_count = ARC_TIM_COUNT0;
+	  tim_limit = ARC_TIM_LIMIT0;
+	}
+      else if (tim == 1)
+	{
+	  tim_control = ARC_TIM_CONTROL1;
+	  tim_count = ARC_TIM_COUNT1;
+	  tim_limit = ARC_TIM_LIMIT1;
+	}
+      else
+	{
+	  return;
+	}
+
+      ctrl = __builtin_arc_lr (tim_control);
+      /* Disable timer interrupt when programming.  */
+      __builtin_arc_sr (0, tim_control);
+      /* Default limit is 24-bit, increase it to 32-bit.  */
+      __builtin_arc_sr (0xFFFFFFFF, tim_limit);
+      /* Set NH bit to count only when processor is running.  */
+      __builtin_arc_sr (ctrl | ARC_TIM_CONTROL_NH_FL, tim_control);
+      __builtin_arc_sr (0, tim_count);
+    }
+}
+
+
+/* Check if arc_timer_default exists.  */
+int
+_arc_timer_default_present (void)
+{
+  return _arc_timer_present (arc_timer_default);
+}
+
+/* Read arc_timer_default value.  */
+unsigned int
+_arc_timer_default_read (void)
+{
+  return _arc_timer_read (arc_timer_default);
+}
+
+/* Reset arc_timer_default.  */
+void
+_arc_timer_default_reset (void)
+{
+  _arc_timer_reset (arc_timer_default);
+}
diff --git a/libgloss/arc/arc-timer.h b/libgloss/arc/arc-timer.h
new file mode 100644
index 000000000..cb573408b
--- /dev/null
+++ b/libgloss/arc/arc-timer.h
@@ -0,0 +1,25 @@
+/*
+ * arc-timer.h -- provide API for the default (number 0) ARC timer.
+ *
+ * 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.
+ *
+ */
+
+#ifndef _ARC_TIMER_H
+#define _ARC_TIMER_H
+
+void _arc_timer_default_reset (void);
+int _arc_timer_default_present (void);
+unsigned int _arc_timer_default_read (void);
+
+#endif /* !_ARC_TIMER_H  */
diff --git a/libgloss/arc/crt0.S b/libgloss/arc/crt0.S
index 6c24e8dcb..235f81028 100644
--- a/libgloss/arc/crt0.S
+++ b/libgloss/arc/crt0.S
@@ -206,16 +206,9 @@ __start:
 	jl	@_monstartup
 #endif /* PROFILE_SUPPORT */
 
-	mov_s	r0, r13
-	mov_s	r1, r14
 ; branch to main
-#if defined (__ARCEM__) || defined (__ARCHS__)
 	mov	fp,0			; initialize frame pointer
-	jl	@main
-#else
-	bl.d	@main
-	mov	fp, 0			; initialize frame pointer
-#endif /* __ARCEM__ || __ARCHS__ */
+	jl	@__setup_argv_and_call_main
 
 #ifdef PROFILE_SUPPORT
 	mov	r13, r0		; Save return code
@@ -225,6 +218,23 @@ __start:
 
 	; r0 contains exit code
 	j	@exit
+	.size	__start, .-__start
+
+;;; arc-main-helper.o object can be used to replace this function and
+;;; properly set up arguments and/or other low-level stuff.
+	.section .text.__setup_argv_and_call_main,"ax",@progbits
+	.weak	__setup_argv_and_call_main
+	.type	__setup_argv_and_call_main, @function
+	.align 4
+
+__setup_argv_and_call_main:
+	push_s	blink
+; Call main with argc = 0 and *argv[] = 0
+	mov	r0, 0
+	mov	r1, 0
+	jl	@main
+	pop_s	blink
+	j_s	[blink]
 
 .section .text._exit_halt,"ax",@progbits
 .global	 _exit_halt
diff --git a/libgloss/arc/hl-setup.c b/libgloss/arc/hl-setup.c
new file mode 100644
index 000000000..a8affbc8d
--- /dev/null
+++ b/libgloss/arc/hl-setup.c
@@ -0,0 +1,27 @@
+/*
+ * hl-setup.c -- provide _setup_low_level() to initialize timer.
+ *
+ * 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 "arc-timer.h"
+
+/* Configure and reset the default timer.  */
+int
+_setup_low_level (void)
+{
+  _arc_timer_default_reset ();
+
+  return 0;
+}
diff --git a/libgloss/arc/hl-stub.c b/libgloss/arc/hl-stub.c
new file mode 100644
index 000000000..7f5b9facc
--- /dev/null
+++ b/libgloss/arc/hl-stub.c
@@ -0,0 +1,81 @@
+/*
+ * hl-stub.c -- provide _kill() and _getpid().
+ *
+ * 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 <errno.h>
+#include <unistd.h>
+#include <sys/times.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include "glue.h"
+
+
+/* If PID is equal to __MYPID, exit with sig as retcode.  */
+int
+_kill (int pid, int sig)
+{
+  if (pid == __MYPID)
+    _exit (sig);
+
+  errno = ENOSYS;
+  return -1;
+}
+
+
+/* Return __MYPID.  */
+int
+_getpid (void)
+{
+  return __MYPID;
+}
+
+
+/* hostlink backend has only fstat(), so use fstat() in stat().  */
+int
+_stat (const char *pathname, struct stat *buf)
+{
+  int fd;
+  int ret;
+  int saved_errno;
+
+  fd = open (pathname, O_RDONLY);
+  if (fd < 0)
+    {
+      /* errno is set by open().  */
+      return -1;
+    }
+
+  ret = fstat (fd, buf);
+  saved_errno = errno;
+
+  close (fd);
+
+  errno = saved_errno;
+
+  return ret;
+}
+
+
+/* No Metaware hostlink backend for this call.  */
+int
+_link (const char *oldpath __attribute__ ((unused)),
+       const char *newpath __attribute__ ((unused)))
+{
+  errno = ENOSYS;
+  return -1;
+}
diff --git a/libgloss/arc/hl.specs b/libgloss/arc/hl.specs
new file mode 100644
index 000000000..9bb5b7995
--- /dev/null
+++ b/libgloss/arc/hl.specs
@@ -0,0 +1,14 @@
+%rename link_gcc_c_sequence hl_link_gcc_c_sequence
+%rename startfile hl_startfile
+
+*hl_libgloss:
+-lhl
+
+*hl_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*link_gcc_c_sequence:
+%(hl_link_gcc_c_sequence) --start-group %G %(hl_libc) %(hl_libgloss) --end-group
+
+*startfile:
+%(hl_startfile) arc-main-helper%O%s
diff --git a/libgloss/arc/hl/hl_api.c b/libgloss/arc/hl/hl_api.c
new file mode 100644
index 000000000..cb24fb997
--- /dev/null
+++ b/libgloss/arc/hl/hl_api.c
@@ -0,0 +1,350 @@
+/*
+ * hl_api.c -- high-level Hostlink IO API.
+ *
+ * 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 <string.h>
+#include <stdarg.h>
+
+#include "hl_gw.h"
+#include "hl_api.h"
+
+/* Parameter types.  */
+#define PAT_CHAR	1
+#define PAT_SHORT	2
+#define PAT_INT		3
+#define PAT_STRING	4
+/* For future use.  */
+#define PAT_INT64	5
+
+/* Used internally to pass user hostlink parameters to _hl_message().  */
+struct _hl_user_info {
+  uint32_t vendor_id;
+  uint32_t opcode;
+  uint32_t result;
+};
+
+/*
+ * Main function to send a message using hostlink.
+ *
+ * syscall - one of HL_SYSCALL_* defines from hl_api.h.
+ *
+ * user - parameters and return value for _user_hostlink implementation.
+ *	Packing structure:
+ *	 uint32 vendor_id - user-defined vendor ID.  ID 1025 is reserved for
+ *			    GNU IO extensions.
+ *	 uint32 opcode - operation code for user-defined hostlink.
+ *	 char format[] - argument string in the same format as for
+ *			 _hl_message() function, see below.
+ *
+ * format - argument and return values format string [(i4sp)*:?(i4sp)*], where
+ *	  characters before ':' is arguments and after is return values.
+ *	  Supported format characters:
+ *	   i or 4 - uint32 value, pack_int will be used;
+ *	   s      - char * data, pack_str will be used;
+ *	   p      - void * data, pack_ptr will be used.
+ *
+ * ap - argument values and pointers to the output values.  Must be in sync
+ *      with format string.
+ *      For hostlink message argument:
+ *	   i or 4 - uint32 value;
+ *	   s      - char * pointer to the NUL-teminated string;
+ *	   p      - void * pointer to the buffer and uint32 buffer length.
+ *      For output values:
+ *	   i or 4 - uint32 * pointer to uint32 to return;
+ *	   s      - char * pointer to buffer to return, it must have enough
+ *		    space to store returned data.
+ *		    You can get packed buffer length with _hl_get_ptr_len();
+ *	   p      - void * pointer and uint32 * length pointer to store
+ *		    returned data along with length.  Buffer must be enough
+ *		    to store returned data.
+ *		    You can get packed buffer length with _hl_get_ptr_len();
+ *
+ * return - pointer to the hostlink buffer after output values.
+ */
+static volatile __uncached char *
+_hl_message_va (uint32_t syscall, struct _hl_user_info *user,
+		const char *format, va_list ap)
+{
+  const char *f = format;
+  volatile __uncached char *p = _hl_payload ();
+  int get_answer = 0;
+
+  p = _hl_pack_int (p, syscall);
+
+  if (syscall == HL_SYSCALL_USER)
+    {
+      p = _hl_pack_int (p, user->vendor_id);
+      p = _hl_pack_int (p, user->opcode);
+      p = _hl_pack_str (p, format);
+    }
+
+  for (; *f; f++)
+    {
+      void *ptr;
+      uint32_t len;
+
+      if (*f == ':')
+	{
+	  f++;
+	  get_answer = 1;
+	  break;
+	}
+
+      switch (*f)
+	{
+	case 'i':
+	case '4':
+	  p = _hl_pack_int (p, va_arg (ap, uint32_t));
+	  break;
+	case 's':
+	  p = _hl_pack_str (p, va_arg (ap, char *));
+	  break;
+	case 'p':
+	  ptr = va_arg (ap, void *);
+	  len = va_arg (ap, uint32_t);
+	  p = _hl_pack_ptr (p, ptr, len);
+	  break;
+	default:
+	  return NULL;
+	}
+
+      if (p == NULL)
+	return NULL;
+    }
+
+  _hl_send (p);
+
+  p = _hl_recv ();
+
+  if (syscall == HL_SYSCALL_USER && p)
+    p = _hl_unpack_int (p, &user->result);
+
+  if (p && get_answer)
+    {
+      for (; *f; f++)
+	{
+	  void *ptr;
+	  uint32_t *plen;
+
+	  switch (*f)
+	    {
+	    case 'i':
+	    case '4':
+	      p = _hl_unpack_int (p, va_arg (ap, uint32_t *));
+	      break;
+	    case 's':
+	      p = _hl_unpack_str (p, va_arg (ap, char *));
+	      break;
+	    case 'p':
+	      ptr = va_arg (ap, void *);
+	      plen = va_arg (ap, uint32_t *);
+	      p = _hl_unpack_ptr (p, ptr, plen);
+	      break;
+	    default:
+	      return NULL;
+	    }
+
+	  if (p == NULL)
+	    return NULL;
+	}
+    }
+
+  return p;
+}
+
+/*
+ * Pack integer value (uint32) to provided buffer.
+ * Packing structure:
+ *     uint16 type  (PAT_INT = 3)
+ *     uint16 size  (4)
+ *     uint32 value
+ */
+volatile __uncached char *
+_hl_pack_int (volatile __uncached char *p, uint32_t x)
+{
+  volatile __uncached uint16_t *type = (volatile __uncached uint16_t *) p;
+  volatile __uncached uint16_t *size = (volatile __uncached uint16_t *)
+				       (p + 2);
+  volatile __uncached uint32_t *val = (volatile __uncached uint32_t *)
+				      (p + 4);
+  const uint32_t payload_used = 8;
+
+  if (_hl_payload_left (p) < payload_used)
+    return NULL;
+
+  *type = PAT_INT;
+  *size = 4;
+  *val = x;
+
+  return p + payload_used;
+}
+
+/*
+ * Pack data (pointer and legth) to provided buffer.
+ * Packing structure:
+ *     uint16 type  (PAT_STRING = 4)
+ *     uint16 size  (length)
+ *     char   buf[length]
+ */
+volatile __uncached char *
+_hl_pack_ptr (volatile __uncached char *p, const void *s, uint16_t len)
+{
+  volatile __uncached uint16_t *type = (volatile __uncached uint16_t *) p;
+  volatile __uncached uint16_t *size = (volatile __uncached uint16_t *)
+				       (p + 2);
+  volatile __uncached char *buf = p + 4;
+  const uint32_t payload_used = 4 + ALIGN (len, 4);
+
+  if (_hl_payload_left (p) < payload_used)
+    return NULL;
+
+  *type = PAT_STRING;
+  *size = len;
+
+  /* _vdmemcpy(buf, s, len); */
+  for (uint16_t i = 0; i < len; i++)
+    buf[i] = ((const char *) s)[i];
+
+  return p + payload_used;
+}
+
+/*
+ * Pack NUL-terminated string to provided buffer.
+ * Packing structure:
+ *     uint16 type  (PAT_STRING = 4)
+ *     uint16 size  (length)
+ *     char   buf[length]
+ */
+volatile __uncached char *
+_hl_pack_str (volatile __uncached char *p, const char *s)
+{
+  return _hl_pack_ptr (p, s, strlen (s) + 1);
+}
+
+/* Unpack integer value (uint32_t) from a buffer.  */
+volatile __uncached char *
+_hl_unpack_int (volatile __uncached char *p, uint32_t *x)
+{
+  volatile __uncached uint16_t *type = (volatile __uncached uint16_t *) p;
+  volatile __uncached uint16_t *size = (volatile __uncached uint16_t *)
+		(p + 2);
+  volatile __uncached uint32_t *val = (volatile __uncached uint32_t *)
+		(p + 4);
+  const uint32_t payload_used = 8;
+
+  if (_hl_payload_left (p) < payload_used || *type != PAT_INT || *size != 4)
+    return NULL;
+
+  if (x)
+    *x = *val;
+
+  return p + payload_used;
+}
+
+/* Unpack data from a buffer.  */
+volatile __uncached char *
+_hl_unpack_ptr (volatile __uncached char *p, void *s, uint32_t *plen)
+{
+  volatile __uncached uint16_t *type = (volatile __uncached uint16_t *) p;
+  volatile __uncached uint16_t *size = (volatile __uncached uint16_t *)
+				       (p + 2);
+  volatile __uncached char *buf = p + 4;
+  uint32_t payload_used;
+  uint32_t len;
+
+  if (_hl_payload_left (p) < 4 || *type != PAT_STRING)
+    return NULL;
+
+  len = *size;
+  payload_used = 4 + ALIGN (len, 4);
+
+  if (_hl_payload_left (p) < payload_used)
+    return NULL;
+
+  if (plen)
+    *plen = len;
+
+  /* _vsmemcpy(s, buf, len); */
+  if (s)
+    {
+      for (uint32_t i = 0; i < len; i++)
+	((char *) s)[i] = buf[i];
+    }
+
+  return p + payload_used;
+}
+
+/*
+ * Unpack data from a buffer.
+ *
+ * No difference compared to _hl_unpack_ptr, except that this function
+ * does not return a length.
+ */
+volatile __uncached char *
+_hl_unpack_str (volatile __uncached char *p, char *s)
+{
+  return _hl_unpack_ptr (p, s, NULL);
+}
+
+/* Return length of packed data (PAT_STRING) if it is on top of the buffer.  */
+uint32_t
+_hl_get_ptr_len (volatile __uncached char *p)
+{
+  volatile __uncached uint16_t *type = (volatile __uncached uint16_t *) p;
+  volatile __uncached uint16_t *size = (volatile __uncached uint16_t *)
+				       (p + 2);
+
+  if (_hl_payload_left (p) < 4 || *type != PAT_STRING)
+    return 0;
+
+  return *size;
+}
+
+/* Public version of _hl_message_va().  */
+volatile __uncached char *
+_hl_message (uint32_t syscall, const char *format, ...)
+{
+  va_list ap;
+  volatile __uncached char *p;
+
+  va_start (ap, format);
+
+  p = _hl_message_va (syscall, 0, format, ap);
+
+  va_end (ap);
+
+  return p;
+}
+
+/*
+ * API to call user-defined hostlink.  See description of user argument in
+ * _hl_message_va().
+ */
+uint32_t
+_user_hostlink (uint32_t vendor, uint32_t opcode, const char *format, ...)
+{
+  va_list ap;
+  struct _hl_user_info ui = { .vendor_id = vendor,
+			      .opcode = opcode };
+
+  va_start (ap, format);
+
+  _hl_message_va (HL_SYSCALL_USER, &ui, format, ap);
+
+  va_end (ap);
+
+  return ui.result;
+}
diff --git a/libgloss/arc/hl/hl_api.h b/libgloss/arc/hl/hl_api.h
new file mode 100644
index 000000000..2f8846dc6
--- /dev/null
+++ b/libgloss/arc/hl/hl_api.h
@@ -0,0 +1,77 @@
+/*
+ * hl_api.h -- provide high-level API for Hostlink IO.
+ *
+ * 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 <stdint.h>
+#include "hl_toolchain.h"
+
+#ifndef _HL_API_H
+#define _HL_API_H
+
+#define HL_SYSCALL_OPEN		0
+#define HL_SYSCALL_CLOSE	1
+#define HL_SYSCALL_READ		2
+#define HL_SYSCALL_WRITE	3
+#define HL_SYSCALL_LSEEK	4
+#define HL_SYSCALL_UNLINK	5
+#define HL_SYSCALL_ISATTY	6
+#define HL_SYSCALL_TMPNAM	7
+#define HL_SYSCALL_GETENV	8
+#define HL_SYSCALL_CLOCK	9
+#define HL_SYSCALL_TIME		10
+#define HL_SYSCALL_RENAME	11
+#define HL_SYSCALL_ARGC		12
+#define HL_SYSCALL_ARGV		13
+#define HL_SYSCALL_RETCODE	14
+#define HL_SYSCALL_ACCESS	15
+#define HL_SYSCALL_GETPID	16
+#define HL_SYSCALL_GETCWD	17
+#define HL_SYSCALL_USER		18
+
+#define HL_GNUIO_EXT_VENDOR_ID	1025
+
+#define HL_GNUIO_EXT_FSTAT	1
+
+/*
+ * Main functions to work with regular syscalls and user-defined hostlink
+ * messages.
+ */
+volatile __uncached char *_hl_message (uint32_t syscall,
+				       const char *format, ...);
+uint32_t _user_hostlink (uint32_t vendor, uint32_t opcode,
+			 const char *format, ...);
+
+
+/* Fuctions for direct work with the Hostlink buffer.  */
+volatile __uncached char *_hl_pack_int (volatile __uncached char *p,
+					uint32_t x);
+volatile __uncached char *_hl_pack_ptr (volatile __uncached char *p,
+					const void *s, uint16_t len);
+volatile __uncached char *_hl_pack_str (volatile __uncached char *p,
+					const char *s);
+volatile __uncached char *_hl_unpack_int (volatile __uncached char *p,
+					  uint32_t *x);
+volatile __uncached char *_hl_unpack_ptr (volatile __uncached char *p,
+					  void *s, uint32_t *plen);
+volatile __uncached char *_hl_unpack_str (volatile __uncached char *p,
+					  char *s);
+uint32_t _hl_get_ptr_len (volatile __uncached char *p);
+
+/* Low-level functions from hl_gw.  */
+extern uint32_t _hl_iochunk_size (void);
+extern void _hl_delete (void);
+
+#endif /* !_HL_API_H  */
diff --git a/libgloss/arc/hl/hl_argc.c b/libgloss/arc/hl/hl_argc.c
new file mode 100644
index 000000000..9d17095b5
--- /dev/null
+++ b/libgloss/arc/hl/hl_argc.c
@@ -0,0 +1,45 @@
+/*
+ * hl_argc.c -- provide _argc().
+ *
+ * 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 <stddef.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* Implements HL_SYSCALL_ARGC.  */
+static __always_inline int
+_hl_argc (void)
+{
+  uint32_t ret;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_ARGC, ":i", (uint32_t *) &ret);
+
+  if (p == NULL)
+    ret = 0;
+
+  _hl_delete ();
+
+  return ret;
+}
+
+/* See arc-main-helper.c.  */
+int
+_argc (void)
+{
+  return _hl_argc ();
+}
diff --git a/libgloss/arc/hl/hl_argv.c b/libgloss/arc/hl/hl_argv.c
new file mode 100644
index 000000000..1c1439cf9
--- /dev/null
+++ b/libgloss/arc/hl/hl_argv.c
@@ -0,0 +1,67 @@
+/*
+ * hl_argv.c -- provide _argv().
+ *
+ * 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 <stddef.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* Get buffer length for argv[a] using HL_SYSCALL_ARGV.  */
+static __always_inline uint32_t
+_hl_argvlen (int a)
+{
+  uint32_t ret = 0;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_ARGV, "i", (uint32_t) a);
+  if (p != NULL)
+    ret = _hl_get_ptr_len (p);
+
+  _hl_delete ();
+
+  return ret;
+}
+
+/* Implements HL_SYSCALL_ARGV.  */
+static __always_inline int
+_hl_argv (int a, char *arg)
+{
+  int ret = 0;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_ARGV, "i:s", (uint32_t) a, (char *) arg);
+  if (p == NULL)
+    ret = -1;
+
+  _hl_delete ();
+
+  return ret;
+}
+
+/* See arc-main-helper.c.  */
+uint32_t
+_argvlen (int a)
+{
+  return _hl_argvlen (a);
+}
+
+/* See arc-main-helper.c.  */
+int
+_argv (int a, char *arg)
+{
+  return _hl_argv (a, arg);
+}
diff --git a/libgloss/arc/hl/hl_clock.c b/libgloss/arc/hl/hl_clock.c
new file mode 100644
index 000000000..b71267296
--- /dev/null
+++ b/libgloss/arc/hl/hl_clock.c
@@ -0,0 +1,87 @@
+/*
+ * hl_clock.c -- provide _clock() and _times().
+ *
+ * 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 <errno.h>
+#include <stdint.h>
+#include <time.h>
+#include <sys/times.h>
+
+#include "../arc-timer.h"
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* Implements HL_SYSCALL_CLOCK.  */
+static __always_inline clock_t
+_hl_clock (void)
+{
+  uint32_t ret;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_CLOCK, ":i", (uint32_t *) &ret);
+
+  _hl_delete ();
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      return -1;
+    }
+
+  return ret;
+}
+
+/*
+ * This implementation returns timer 0 value if it exists or
+ * host clock() value converted to target clocks.
+ *
+ * Please note that this value cannot be converted to seconds
+ * using CLOCKS_PER_SEC.
+ */
+clock_t
+_clock (void)
+{
+  if (_arc_timer_default_present ())
+    return _arc_timer_default_read ();
+  else
+    return _hl_clock ();
+}
+
+/* All time is counted as user time.  */
+clock_t
+_times (struct tms *tp)
+{
+  clock_t ret;
+
+  if (tp == NULL)
+    {
+      errno = EFAULT;
+      return -1;
+    }
+
+  ret = _clock ();
+
+  if (ret == (clock_t) -1)
+    return ret;
+
+  tp->tms_utime = ret;
+  tp->tms_stime = 0;
+  tp->tms_cutime = 0;
+  tp->tms_cstime = 0;
+
+  return ret;
+}
diff --git a/libgloss/arc/hl/hl_close.c b/libgloss/arc/hl/hl_close.c
new file mode 100644
index 000000000..c547e2d03
--- /dev/null
+++ b/libgloss/arc/hl/hl_close.c
@@ -0,0 +1,58 @@
+/*
+ * hl_close.c -- provide _close().
+ *
+ * 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 <errno.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* Implements HL_SYSCALL_CLOSE.  */
+static __always_inline int
+_hl_close (int fd)
+{
+  int32_t ret;
+  uint32_t host_errno;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_CLOSE, "i:ii",
+		   (uint32_t) fd,		/* i */
+		   (uint32_t *) &ret,		/* :i */
+		   (uint32_t *) &host_errno	/* :i */);
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      ret = -1;
+    }
+  else if (ret < 0)
+    {
+      errno = host_errno;
+      ret = -1;
+    }
+
+  _hl_delete ();
+
+  return ret;
+}
+
+int
+_close (int fd)
+{
+  return _hl_close (fd);
+}
diff --git a/libgloss/arc/hl/hl_exit.c b/libgloss/arc/hl/hl_exit.c
new file mode 100644
index 000000000..c42ada0fa
--- /dev/null
+++ b/libgloss/arc/hl/hl_exit.c
@@ -0,0 +1,42 @@
+/*
+ * hl_exit.c -- provide _exit().
+ *
+ * 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 <stdint.h>
+#include <unistd.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* From crt0.  */
+extern void __noreturn __longcall _exit_halt (void);
+
+/* Push retcode to host.  Implements HL_SYSCALL_RETCODE.  */
+static __always_inline void
+_hl_retcode (int32_t ret)
+{
+  (void) _hl_message (HL_SYSCALL_RETCODE, "i", (uint32_t) ret);
+
+  _hl_delete ();
+}
+
+void __noreturn
+_exit (int ret)
+{
+  _hl_retcode (ret);
+
+  _exit_halt ();
+}
diff --git a/libgloss/arc/hl/hl_fstat.c b/libgloss/arc/hl/hl_fstat.c
new file mode 100644
index 000000000..0a49eece0
--- /dev/null
+++ b/libgloss/arc/hl/hl_fstat.c
@@ -0,0 +1,95 @@
+/*
+ * hl_fstat.c -- provide _fstat().
+ *
+ * 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 <errno.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* Hostlink IO version of struct stat.  */
+struct _hl_stat {
+  uint32_t  hl_dev;    /* ID of device containing file.  */
+  uint16_t  hl_ino;    /* inode number.  */
+  uint16_t  hl_mode;   /* File type and access mode.  */
+  int16_t   hl_nlink;  /* Number of hard links.  */
+  int16_t   hl_uid;    /* Owner's UID.  */
+  int16_t   hl_gid;    /* Owner's GID.  */
+  uint8_t   hl_pad[2]; /* Padding to match simulator struct.  */
+  uint32_t  hl_rdev;   /* Device ID (if special file).  */
+  int32_t   hl_size;   /* Size in bytes.  */
+  int32_t   hl_atime;  /* Access time.  */
+  int32_t   hl_mtime;  /* Modification time.  */
+  int32_t   hl_ctime;  /* Creation time.  */
+} __packed;
+
+/* Map Hostlink version of stat struct into newlib's one.  */
+static __always_inline void
+_hl_fstat_map (const struct _hl_stat *hl_stat, struct stat *stat)
+{
+  stat->st_dev = hl_stat->hl_dev;
+  stat->st_ino = hl_stat->hl_ino;
+  stat->st_mode = hl_stat->hl_mode;
+  stat->st_nlink = hl_stat->hl_nlink;
+  stat->st_uid = hl_stat->hl_uid;
+  stat->st_gid = hl_stat->hl_gid;
+  stat->st_rdev = hl_stat->hl_rdev;
+  stat->st_size = hl_stat->hl_size;
+  stat->st_atime = hl_stat->hl_atime;
+  stat->st_mtime = hl_stat->hl_mtime;
+  stat->st_ctime = hl_stat->hl_ctime;
+}
+
+/* Get host file info.  Implements HL_GNUIO_EXT_FSTAT.  */
+static __always_inline int
+_hl_fstat (int fd, struct stat *buf)
+{
+  struct _hl_stat hl_stat;
+  int32_t ret;
+  uint32_t host_errno;
+
+  /* Special version of hostlink - retuned values are passed
+   * through inargs.
+   */
+  host_errno = _user_hostlink (HL_GNUIO_EXT_VENDOR_ID, HL_GNUIO_EXT_FSTAT,
+			       "iii",
+			       (uint32_t) fd,
+			       (uint32_t) &hl_stat,
+			       (uint32_t) &ret);
+
+  if (ret < 0)
+    {
+      errno = host_errno;
+      return ret;
+    }
+
+  _hl_fstat_map (&hl_stat, buf);
+
+  _hl_delete ();
+
+  return ret;
+}
+
+int
+_fstat (int fd, struct stat *buf)
+{
+  return _hl_fstat (fd, buf);
+}
diff --git a/libgloss/arc/hl/hl_gettimeofday.c b/libgloss/arc/hl/hl_gettimeofday.c
new file mode 100644
index 000000000..40c4c2bb0
--- /dev/null
+++ b/libgloss/arc/hl/hl_gettimeofday.c
@@ -0,0 +1,69 @@
+/*
+ * hl_gettimeofday.c -- provide _gettimeofday().
+ *
+ * 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 <errno.h>
+#include <stdint.h>
+#include <string.h>
+#include <sys/time.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* Get host time().  Implements HL_SYSCALL_TIME.  */
+static __always_inline int
+_hl_time (uint32_t *host_timer)
+{
+  int ret;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_TIME, ":i", (uint32_t *) host_timer);
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      ret = -1;
+    }
+  else
+    {
+      ret = 0;
+    }
+
+  _hl_delete ();
+
+  return ret;
+}
+
+/* gettimeofday() implementation.  Clears *tz if specified.  */
+int
+_gettimeofday (struct timeval *tv, struct timezone *tz)
+{
+  int ret;
+  uint32_t host_timer;
+
+  if (tz)
+    memset (tz, 0, sizeof (*tz));
+
+  ret = _hl_time (&host_timer);
+
+  if (ret == 0)
+    {
+      tv->tv_sec = host_timer;
+      tv->tv_usec = 0;
+    }
+
+  return ret;
+}
diff --git a/libgloss/arc/hl/hl_gw.c b/libgloss/arc/hl/hl_gw.c
new file mode 100644
index 000000000..f576f097e
--- /dev/null
+++ b/libgloss/arc/hl/hl_gw.c
@@ -0,0 +1,180 @@
+/*
+ * hl_gw.c -- Hostlink gateway, low-level hostlink functions.
+ *
+ * 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 "hl_gw.h"
+
+#define HL_VERSION 1
+
+
+/*
+ * Maximum message size without service information,
+ * see also HL_PAYLOAD_RESERVED.
+ */
+#ifndef HL_IOCHUNK
+  #define HL_IOCHUNK 1024
+#endif
+
+/*
+ * Each syscall argument have 4 bytes of service information in hostlink
+ * protocol (2 bytes for type and 2 for size).  Here we reserve space for
+ * 32 arguments.
+ */
+#define HL_PAYLOAD_RESERVED (32 * 4)
+
+/* "No message here" mark.  */
+#define HL_NOADDRESS 0xFFFFFFFF
+
+/* Hostlink gateway structure.  */
+struct _hl_hdr {
+  uint32_t version;		/* Current version is 1.  */
+  uint32_t target2host_addr;	/* Packet address from target to host.  */
+  uint32_t host2target_addr;	/* Packet address from host to target.  */
+  uint32_t buf_addr;		/* Address for host to write answer.  */
+  uint32_t payload_size;	/* Buffer size without packet header.  */
+  uint32_t options;		/* For future use.  */
+  uint32_t break_to_mon_addr;	/* For future use.  */
+} __uncached __packed;
+
+/* Hostlink packet header.  */
+struct _hl_pkt_hdr {
+  uint32_t packet_id;   /* Packet id.  Always set to 1 here.  */
+  uint32_t total_size;  /* Size of packet including header.  */
+  uint32_t priority;    /* For future use.  */
+  uint32_t type;	/* For future use.  */
+  uint32_t checksum;    /* For future use.  */
+} __uncached __packed;
+
+/* Main hostlink structure.  */
+struct _hl {
+  volatile struct _hl_hdr hdr; /* General hostlink information.  */
+  /* Start of the hostlink buffer.  */
+  volatile struct _hl_pkt_hdr pkt_hdr;
+  volatile char payload[HL_IOCHUNK + HL_PAYLOAD_RESERVED];
+} __aligned (HL_MAX_DCACHE_LINE) __uncached __packed;
+
+
+/*
+ * Main structure.  Do not rename because simulator will look for the
+ * '__HOSTLINK__' symbol.
+ */
+volatile struct _hl __HOSTLINK__ = {
+  .hdr = {
+    .version = 1 ,
+    .target2host_addr = HL_NOADDRESS
+  }
+};
+
+/* Get hostlink payload pointer.  */
+volatile __uncached void *
+_hl_payload (void)
+{
+  return (volatile __uncached void *) &__HOSTLINK__.payload[0];
+}
+
+/* Get hostlink payload size (iochunk + reserved space).  */
+static uint32_t
+_hl_payload_size (void)
+{
+  return sizeof (__HOSTLINK__.payload);
+}
+
+/* Get used space size in the payload.  */
+static uint32_t
+_hl_payload_used (volatile __uncached void *p)
+{
+  return (volatile __uncached char *) p
+    - (volatile __uncached char *) _hl_payload ();
+}
+
+/* Fill hostlink packet header.  */
+static void
+_hl_pkt_init (volatile __uncached struct _hl_pkt_hdr *pkt, int size)
+{
+  pkt->packet_id = 1;
+  pkt->total_size = ALIGN (size, 4) + sizeof (*pkt);
+  pkt->priority = 0;
+  pkt->type = 0;
+  pkt->checksum = 0;
+}
+
+/* Get hostlink iochunk size.  */
+uint32_t
+_hl_iochunk_size (void)
+{
+  return HL_IOCHUNK;
+}
+
+/* Get free space size in the payload.  */
+uint32_t
+_hl_payload_left (volatile __uncached void *p)
+{
+  return _hl_payload_size () - _hl_payload_used (p);
+}
+
+/* Send hostlink packet to the host.  */
+void
+_hl_send (volatile __uncached void *p)
+{
+  volatile __uncached struct _hl_hdr *hdr = &__HOSTLINK__.hdr;
+  volatile __uncached struct _hl_pkt_hdr *pkt_hdr = &__HOSTLINK__.pkt_hdr;
+
+  _hl_pkt_init (pkt_hdr, _hl_payload_used (p));
+
+  hdr->buf_addr = (uint32_t) pkt_hdr;
+  hdr->payload_size = _hl_payload_size ();
+  hdr->host2target_addr = HL_NOADDRESS;
+  hdr->version = HL_VERSION;
+  hdr->options = 0;
+  hdr->break_to_mon_addr = 0;
+
+  /* This tells the debugger we have a command.
+   * It is responsibility of debugger to set this back to HL_NOADDRESS
+   * after receiving the packet.
+   * Please note that we don't wait here because some implementations
+   * use _hl_blockedPeek() function as a signal that we send a messege.
+   */
+  hdr->target2host_addr = hdr->buf_addr;
+}
+
+/*
+ * Wait for host response and return pointer to hostlink payload.
+ * Symbol _hl_blockedPeek() is used by the simulator as message signal.
+ */
+volatile __uncached char * __noinline
+_hl_blockedPeek (void)
+{
+  while (__HOSTLINK__.hdr.host2target_addr == HL_NOADDRESS)
+    {
+      /* TODO: Timeout.  */
+    }
+
+  return _hl_payload ();
+}
+
+/* Get message from host.  */
+volatile __uncached char *
+_hl_recv (void)
+{
+  return _hl_blockedPeek ();
+}
+
+/* Mark hostlink buffer as "No message here".  */
+void
+_hl_delete (void)
+{
+  __HOSTLINK__.hdr.target2host_addr = HL_NOADDRESS;
+}
diff --git a/libgloss/arc/hl/hl_gw.h b/libgloss/arc/hl/hl_gw.h
new file mode 100644
index 000000000..b019ee038
--- /dev/null
+++ b/libgloss/arc/hl/hl_gw.h
@@ -0,0 +1,46 @@
+/*
+ * hl_gw.h -- Hostlink gateway, low-level hostlink functions.
+ * This header should not be used directly, please use hl_api.h instead.
+ *
+ * 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.
+ *
+ */
+
+#ifndef _HL_GW_H
+#define _HL_GW_H
+
+#include <stdint.h>
+
+#include "hl_toolchain.h"
+
+/* Get hostlink payload pointer and size available for using.  */
+volatile __uncached void *_hl_payload (void);
+
+/* Maximum amount of data that can be sent via hostlink in one message.  */
+uint32_t _hl_iochunk_size (void);
+
+/*
+ * How many bytes are available in the hostlink payload buffer.
+ * This may be bigger than iochunk size because hostlink payload also contains
+ * reserved space for service information.
+ */
+uint32_t _hl_payload_left (volatile __uncached void *p);
+
+/* Send and receive hostlink packet.  */
+void _hl_send (volatile __uncached void *p);
+volatile __uncached char *_hl_recv (void);
+
+/* Mark target2host buffer as "No message here".  */
+void _hl_delete (void);
+
+#endif /* !_HL_GW_H  */
diff --git a/libgloss/arc/hl/hl_isatty.c b/libgloss/arc/hl/hl_isatty.c
new file mode 100644
index 000000000..ad4a42e5f
--- /dev/null
+++ b/libgloss/arc/hl/hl_isatty.c
@@ -0,0 +1,64 @@
+/*
+ * hl_isatty.c -- provide _isatty().
+ *
+ * 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 <errno.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* Check if fd is a tty on the host.  Implements HL_SYSCALL_ISATTY.  */
+static __always_inline int
+_hl_isatty (int fd)
+{
+  int32_t ret;
+  uint32_t host_errno;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_ISATTY, "i:ii",
+		   (uint32_t) fd,		/* i */
+		   (uint32_t *) &ret,		/* :i */
+		   (uint32_t *) &host_errno	/* :i */);
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      ret = 0;
+    }
+  /* isatty() returns 1 if fd is a terminal;
+   * otherwise it returns 0 and set errno.
+   */
+  else if (ret == 0)
+    {
+      errno = host_errno;
+    }
+  else
+    {
+      ret = 1;
+    }
+
+  _hl_delete ();
+
+  return ret;
+}
+
+int
+_isatty (int fd)
+{
+  return _hl_isatty (fd);
+}
diff --git a/libgloss/arc/hl/hl_lseek.c b/libgloss/arc/hl/hl_lseek.c
new file mode 100644
index 000000000..ef8df9382
--- /dev/null
+++ b/libgloss/arc/hl/hl_lseek.c
@@ -0,0 +1,68 @@
+/*
+ * hl_lseek.c -- provide _lseek().
+ *
+ * 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 <errno.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+
+/* Implements HL_SYSCALL_LSEEK.  */
+static __always_inline off_t
+_hl_lseek (int fd, off_t offset, int whence)
+{
+  ssize_t ret;
+  int32_t n;
+  uint32_t host_errno;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_LSEEK, "iii:ii",
+		   (uint32_t) fd,		/* i */
+		   (uint32_t) offset,		/* i */
+		   (int32_t) whence,		/* i */
+		   (uint32_t *) &n,		/* :i */
+		   (uint32_t *) &host_errno	/* :i */);
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      ret = -1;
+    }
+  else if (n < 0)
+    {
+      errno = host_errno;
+      ret = -1;
+    }
+  else
+    {
+      ret = n;
+    }
+
+  _hl_delete ();
+
+  return ret;
+}
+
+off_t
+_lseek (int fd, off_t offset, int whence)
+{
+  return _hl_lseek (fd, offset, whence);
+}
diff --git a/libgloss/arc/hl/hl_open.c b/libgloss/arc/hl/hl_open.c
new file mode 100644
index 000000000..62cbe9db4
--- /dev/null
+++ b/libgloss/arc/hl/hl_open.c
@@ -0,0 +1,89 @@
+/*
+ * hl_open.c -- provide _open().
+ *
+ * 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 <errno.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+/* Map newlib open flags into Hostlink IO ones.  */
+static __always_inline uint32_t
+_hl_open_flags_map (int flags)
+{
+  uint32_t hl_flags = 0;
+
+  hl_flags |= (flags & O_RDONLY) ? 0x0000 : 0;
+  hl_flags |= (flags & O_WRONLY) ? 0x0001 : 0;
+  hl_flags |= (flags & O_RDWR)   ? 0x0002 : 0;
+  hl_flags |= (flags & O_APPEND) ? 0x0008 : 0;
+  hl_flags |= (flags & O_CREAT)  ? 0x0100 : 0;
+  hl_flags |= (flags & O_TRUNC)  ? 0x0200 : 0;
+  hl_flags |= (flags & O_EXCL)   ? 0x0400 : 0;
+
+  return hl_flags;
+}
+
+/* Open file on host.  Implements HL_SYSCALL_OPEN.  */
+static __always_inline int
+_hl_open (const char *path, int flags, mode_t mode)
+{
+  int32_t fd;
+  uint32_t host_errno;
+  uint32_t hl_flags = _hl_open_flags_map (flags);
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_OPEN, "sii:ii",
+		   path,			/* s */
+		   (uint32_t) hl_flags,		/* i */
+		   (uint32_t) mode,		/* i */
+		   (uint32_t *) &fd,		/* :i */
+		   (uint32_t *) &host_errno	/* :i */);
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      fd = -1;
+    }
+  else if (fd < 0)
+    {
+      errno = host_errno;
+      fd = -1;
+    }
+
+  _hl_delete ();
+
+  return fd;
+}
+
+int
+_open (const char *path, int flags, ...)
+{
+  va_list ap;
+  mode_t mode = 0;
+
+  va_start (ap, flags);
+
+  if (flags & O_CREAT)
+    mode = va_arg (ap, mode_t);
+
+  return _hl_open (path, flags, mode);
+}
diff --git a/libgloss/arc/hl/hl_read.c b/libgloss/arc/hl/hl_read.c
new file mode 100644
index 000000000..584df1cce
--- /dev/null
+++ b/libgloss/arc/hl/hl_read.c
@@ -0,0 +1,105 @@
+/*
+ * hl_read.c -- provide _read().
+ *
+ * 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 <errno.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <unistd.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+
+/* Read one chunk.  Implements HL_SYSCALL_READ.  */
+static ssize_t
+_hl_read (int fd, void *buf, size_t count)
+{
+  ssize_t ret;
+  int32_t hl_n;
+  uint32_t host_errno;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_READ, "ii:i",
+		   (uint32_t) fd,      /* i */
+		   (uint32_t) count,   /* i */
+		   (uint32_t *) &hl_n  /* :i */);
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      ret = -1;
+    }
+  else if (hl_n < 0)
+    {
+      p = _hl_unpack_int (p, &host_errno);
+      errno = p == NULL ? EIO : host_errno;
+      ret = -1;
+    }
+  else
+    {
+      uint32_t n;
+
+      p = _hl_unpack_ptr (p, buf, &n);
+      ret = n;
+
+      if (p == NULL || n != (uint32_t) hl_n)
+	{
+	  errno = EIO;
+	  ret = -1;
+	}
+    }
+
+  _hl_delete ();
+
+  return ret;
+}
+
+ssize_t
+_read (int fd, void *buf, size_t count)
+{
+  const uint32_t hl_iochunk = _hl_iochunk_size ();
+  size_t to_read = count;
+  size_t offset = 0;
+  ssize_t ret = 0;
+
+  while (to_read > hl_iochunk)
+    {
+      ret = _hl_read (fd, (char *) buf + offset, hl_iochunk);
+
+      if (ret < 0)
+	return ret;
+
+      offset += ret;
+
+      if (ret != (ssize_t) hl_iochunk)
+	return offset;
+
+      to_read -= hl_iochunk;
+    }
+
+  if (to_read)
+    {
+      ret = _hl_read (fd, (char *) buf + offset, to_read);
+
+      if (ret < 0)
+	return ret;
+
+      ret += offset;
+    }
+
+  return ret;
+}
diff --git a/libgloss/arc/hl/hl_toolchain.h b/libgloss/arc/hl/hl_toolchain.h
new file mode 100644
index 000000000..bf884bf3f
--- /dev/null
+++ b/libgloss/arc/hl/hl_toolchain.h
@@ -0,0 +1,53 @@
+/*
+ * hl_toolchain.h -- provide toolchain-dependent defines.
+ *
+ * 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.
+ *
+ */
+
+#ifndef _HL_TOOLCHAIN_H
+#define _HL_TOOLCHAIN_H
+
+#ifndef __uncached
+  #define __uncached __attribute__((uncached))
+#endif /* __uncached */
+
+#ifndef __aligned
+  #define __aligned(x) __attribute__((aligned (x)))
+#endif /* __aligned */
+
+#ifndef __noinline
+  #define __noinline __attribute__((noinline))
+#endif /* __noinline */
+
+#ifndef __always_inline
+  #define __always_inline inline __attribute__((always_inline))
+#endif /* __always_inline */
+
+#ifndef __packed
+  #define __packed __attribute__((packed))
+#endif /* __packed */
+
+#ifndef __noreturn
+  #define __noreturn __attribute__((noreturn))
+#endif /* __noreturn */
+
+#ifndef __longcall
+  #define __longcall __attribute__((long_call))
+#endif /* __longcall */
+
+#define HL_MAX_DCACHE_LINE 256
+
+#define ALIGN(x, y) (((x) + ((y) - 1)) & ~((y) - 1))
+
+#endif /* !_HL_TOOLCHAIN_H  */
diff --git a/libgloss/arc/hl/hl_unlink.c b/libgloss/arc/hl/hl_unlink.c
new file mode 100644
index 000000000..43393c517
--- /dev/null
+++ b/libgloss/arc/hl/hl_unlink.c
@@ -0,0 +1,59 @@
+/*
+ * hl_unlink.c -- provide _unlink().
+ *
+ * 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 <errno.h>
+#include <stdint.h>
+#include <unistd.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+
+/* Unlink host file.  Implements HL_SYSCALL_UNLINK.  */
+static __always_inline int
+_hl_unlink (const char *path)
+{
+  int32_t ret;
+  uint32_t host_errno;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_UNLINK, "s:ii",
+		   path,			/* s */
+		   (uint32_t *) &ret,		/* :i */
+		   (uint32_t *) &host_errno	/* :i */);
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      ret = -1;
+    }
+  else if (ret < 0)
+    {
+      errno = host_errno;
+      ret = -1;
+    }
+
+  _hl_delete ();
+
+  return ret;
+}
+
+int
+_unlink (const char *path)
+{
+  return _hl_unlink (path);
+}
diff --git a/libgloss/arc/hl/hl_write.c b/libgloss/arc/hl/hl_write.c
new file mode 100644
index 000000000..b00fc13e7
--- /dev/null
+++ b/libgloss/arc/hl/hl_write.c
@@ -0,0 +1,97 @@
+/*
+ * hl_write.c -- provide _write().
+ *
+ * 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 <errno.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <unistd.h>
+
+#include "hl_toolchain.h"
+#include "hl_api.h"
+
+
+/* Write one chunk to the host file.  Implements HL_SYSCALL_WRITE.  */
+static ssize_t
+_hl_write (int fd, const char *buf, size_t nbyte)
+{
+  ssize_t ret;
+  int32_t n;
+  uint32_t host_errno;
+  volatile __uncached char *p;
+
+  p = _hl_message (HL_SYSCALL_WRITE, "ipi:ii",
+		   (uint32_t) fd,		/* i */
+		   buf, (uint32_t) nbyte,	/* p */
+		   (uint32_t) nbyte,		/* i */
+		   (uint32_t *) &n,		/* :i */
+		   (uint32_t *) &host_errno	/* :i */);
+
+  if (p == NULL)
+    {
+      errno = ETIMEDOUT;
+      ret = -1;
+    }
+  else if (n < 0)
+    {
+      errno = host_errno;
+      ret = -1;
+    }
+  else
+    {
+      ret = n;
+    }
+
+  _hl_delete ();
+
+  return ret;
+}
+
+ssize_t
+_write (int fd, const char *buf, size_t nbyte)
+{
+  const uint32_t hl_iochunk = _hl_iochunk_size ();
+  size_t to_write = nbyte;
+  size_t offset = 0;
+  ssize_t ret = 0;
+
+  while (to_write > hl_iochunk)
+    {
+      ret = _hl_write (fd, buf + offset, hl_iochunk);
+
+      if (ret < 0)
+	return ret;
+
+      offset += ret;
+
+      if (ret != (ssize_t) hl_iochunk)
+	return offset;
+
+      to_write -= hl_iochunk;
+    }
+
+  if (to_write)
+    {
+      ret = _hl_write (fd, buf + offset, to_write);
+
+      if (ret < 0)
+	return ret;
+
+      ret += offset;
+    }
+
+  return ret;
+}
diff --git a/libgloss/arc/libcfunc.c b/libgloss/arc/libcfunc.c
index c6e64f2b7..78bd76def 100644
--- a/libgloss/arc/libcfunc.c
+++ b/libgloss/arc/libcfunc.c
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2015, Synopsys, Inc. All rights reserved.
+   Copyright (c) 2015-2023, Synopsys, Inc. All rights reserved.
 
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
@@ -75,7 +75,7 @@ unsigned __attribute__((weak))
 sleep (unsigned seconds)
 {
 	clock_t t0 = _clock ();
-	clock_t dt = seconds * CLOCKS_PER_SEC;
+	clock_t dt = (clock_t) seconds * CLOCKS_PER_SEC;
 
 	while (_clock () - t0  < dt);
 	return 0;
@@ -85,7 +85,7 @@ int __attribute__((weak))
 usleep (useconds_t useconds)
 {
 	clock_t t0 = _clock ();
-	clock_t dt = useconds / (1000000/CLOCKS_PER_SEC);
+	clock_t dt = (clock_t) useconds / (1000000/CLOCKS_PER_SEC);
 
 	while (_clock () - t0  < dt);
 	return 0;
diff --git a/libgloss/arc/readme-hostlink.md b/libgloss/arc/readme-hostlink.md
new file mode 100644
index 000000000..0061be3df
--- /dev/null
+++ b/libgloss/arc/readme-hostlink.md
@@ -0,0 +1,90 @@
+Metaware hostlink IO
+====================
+
+This directory includes target-side implementation of Metaware hostlink
+interface see Contents section. Target program can use Metaware hostlink
+interface to send messages to nsim simulator or mdb debugger (it can be
+attached to HW or nsim).
+
+Quick start
+-----------
+To link with this version of libgloss please add `-specs=hl.specs` to baremetal
+version of ARC gcc (arc-elf32).
+
+Lets build and run simple program:
+
+    $ cat hello.c
+    #include <stdio.h>
+
+    int main()
+    {
+            printf("Hello World!\n");
+
+            return 0;
+    }
+    $ arc-elf32-gcc -mcpu=hs -specs=hl.specs ./hello.c -o hello
+    $ nsimdrv -prop=nsim_isa_family=av2hs -prop=nsim_hlink_gnu_io_ext=1 ./hello
+    Hello World!
+
+Where `-mcpu` and `-prop=nsim_isa_family` is specific to your version of ARC CPU.
+Option `-prop=nsim_hlink_gnu_io_ext=1` enables GNU IO extension for nSIM which
+is used for some system calls. The `nsimdrv` option `-prop=nsim_emt={0,1,2}`
+enables trap emulation and should be disabled (removed or set to `0`) to use
+Metaware hostlink.
+
+**NB:** Metaware hostlink requires symbols `__HOSTLINK__` and `_hl_blockedPeek`
+to be present. So stripped binary won't work properly with Metaware hostlink.
+
+Contents
+--------
+* `hl/hl_gw.*`        -- Hostlink gateway. This API is used in the `hl_api.*`.
+                         Please use `hl_message()` from `hl_api.*` for hostlink
+                         message exchange.
+* `hl/hl_api.*`       -- High-level API to send hostlink messages, as well as
+                         functions to work with messages.
+* `hl/hl_<syscall>.*` -- Syscall implementations through hostlink API;
+* `arc-timer.*`       -- Provides API to access ARC timers. Used by
+                         `hl/hl_clock.c` in `_clock()` implementation.
+* `arc-main-helper.c` -- Provides `__setup_argv_and_call_main()`. The function
+                         is called from `__start()` in `crt0.S`. It allows
+                         to setup `argc` and `arvg` as well as some custom
+                         things through `_setup_low_level()`.
+* `hl-setup.c`        -- Provides `_setup_low_level()` for hostlink case.
+                         It just configures default timer if it exists. Default
+                         timer is used in the hostlink `clock()`
+                         implementation.
+* `hl-stub.c`         -- Provides functions which are part of newlib but
+                         implemented without hostlink.
+                         e.g. `_kill()` and `_getpid()`.
+* `sbrk.c`            -- Provides `_sbrk()`. It uses `__start_heap` and
+                         `__end_heap` variables.
+* `libcfunc.c`        -- Additional C system calls.
+* `mcount.c`          -- Profiler support.
+
+How it works
+------------
+Simulator looks for `__HOSTLINK__` and `_hl_blockedPeek()` symbols.
+`__HOSTLINK__` is the start of shared structure for message exchange and
+`_hl_blockedPeek()` is a function to be called when program is waiting
+for simulator response.
+
+When program wants to send a message it should follow:
+ 1. Fill `__HOSTLINK__.payload` with packed data.
+    Packing format is following: `{u16 type, u16 size, char data[]}`.
+    Supported types are `char`, `short`, `int`, `string` and `int64`.
+    `hl_api` provides high-level API to this.
+ 2. Fill `__HOSTLINK__.pkt_hdr`. See `hl_pkt_init()` from `hl_gw.c`.
+ 3. Fill `__HOSTLINK__.hdr`. See `hl_send()` from `hl_gw.c`.
+ 4. Call `_hl_blockedPeek()` to get response.
+    At this point message should be delivered to debugger.
+    Some implementations uses change of `__HOSTLINK__.hdr.target2host_addr` as
+    a signal that packet is sent and can be processed. Other implementations
+    wait for `_hl_blockedPeek()` to be called.
+
+    It means that portable implementation must fill
+    `__HOSTLINK__.hdr.target2host_addr` at the last step and then call
+    `_hl_blockedPeek()`.
+ 5. `_hl_blockedPeek()` returns pointer to debugger response which can be
+    processed on target if needed. Because debugger and target share the same
+    buffer the function actually returns `__HOSTLINK__.payload` that was
+    filled with packed data (see step 1) by the debugger.
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 07/15] arc: libgloss: Use atexit to setup fini routines
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (5 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 06/15] arc: libgloss: Introduce hostlink interface kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 08/15] arc: libgloss: Clean registers before any use kolerov93
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss

From: Claudiu Zissulescu <claziss@gmail.com>

Use atexit funtion to setup fini routines to be called on exit
instead of filling in __atexit structures manually.

Signed-off-by: Claudiu Zissulescu <claziss@gmail.com>
---
 libgloss/arc/crt0.S | 25 +++++--------------------
 1 file changed, 5 insertions(+), 20 deletions(-)

diff --git a/libgloss/arc/crt0.S b/libgloss/arc/crt0.S
index 235f81028..1999e602b 100644
--- a/libgloss/arc/crt0.S
+++ b/libgloss/arc/crt0.S
@@ -178,27 +178,12 @@ __start:
 
 #endif /* !__ARC601__ */
 
-; Some  targets use the .init and .fini sections to create constructors and
-; destructors, and for these targets we need to call the _init function and
-; arrange for _fini to be called at program exit.
-	mov_s	r13, r0
-	mov_s	r14, r1
-	; calling atexit drags in malloc, so instead poke the function
-	; address directly into the reent structure
-	ld	r1, [gp, @_impure_ptr@sda]
-	mov_s	r1, @__atexit0
-	mov_s	r2, @__atexit
-	st_s	r1, [r2, 0]		; __atexit = &__atexit0
-	mov_s	r0, 1
-	st_s	r0, [r1, 4]		; __atexit0._ind = 1
-	mov_s	r0, @_fini
-	st_s	r0, [r1, 8]		; __atexit0._fns[0] = _fini
-; branch to _init
-#if defined (__ARCEM__) || defined (__ARCHS__)
+	;; Call constructors
 	jl	@_init
-#else
-	bl	@_init
-#endif /* __ARCEM__ || __ARCHS__ */
+
+;;; Setup fini routines to be called from exit
+	mov_s	r0, @_fini
+	jl	@atexit
 
 #ifdef PROFILE_SUPPORT /* Defined in gcrt0.S.  */
 	mov	r0,@__start
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 08/15] arc: libgloss: Clean registers before any use
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (6 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 07/15] arc: libgloss: Use atexit to setup fini routines kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 09/15] arc: libgloss: Add UART 8250 library kolerov93
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov

From: Yuriy Kolerov <kolerov93@gmail.com>

Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/arc/crt0.S | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/libgloss/arc/crt0.S b/libgloss/arc/crt0.S
index 1999e602b..0c2a2bd26 100644
--- a/libgloss/arc/crt0.S
+++ b/libgloss/arc/crt0.S
@@ -178,6 +178,47 @@ __start:
 
 #endif /* !__ARC601__ */
 
+;;; Clear the registers.
+	mov_s	r0,0
+	mov_s	r1,0
+	mov_s	r2,0
+	mov_s	r3,0
+#ifndef __ARC_RF16__
+	mov	r4,0
+	mov	r5,0
+	mov	r6,0
+	mov	r7,0
+	mov	r8,0
+	mov	r9,0
+#endif
+	mov	r10,0
+	mov	r11,0
+	mov_s	r12,0
+	mov_s	r13,0
+	mov_s	r14,0
+	mov_s	r15,0
+#ifndef __ARC_RF16__
+	mov	r16,0
+	mov	r17,0
+	mov	r18,0
+	mov	r19,0
+	mov	r20,0
+	mov	r21,0
+	mov	r22,0
+	mov	r23,0
+	mov	r24,0
+	mov	r25,0
+#endif
+	mov	r27,0
+	;; SP (r28) is initialized
+#if defined (__ARCEM__) || defined (__ARCHS__)
+	mov	ilink,0
+	mov	r30,0
+#else
+	mov	ilink1,0
+	mov	ilink2,0
+#endif /* ARCv2 */
+
 	;; Call constructors
 	jl	@_init
 
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 09/15] arc: libgloss: Add UART 8250 library
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (7 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 08/15] arc: libgloss: Clean registers before any use kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 10/15] arc: libgloss: Add a linker script common for all boards kolerov93
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov, Vladimir Isaev

From: Yuriy Kolerov <kolerov93@gmail.com>

This library implements libgloss input/output and setup
routines for UART 8250 devices of ARC development boards:

    * EM Starter Kit
    * HS Development Kit
    * EM Software Development Platform
    * IoT Development Kit

_uart_8250_setup function with proper parameteres must be called
to setup UART 8250 device for a particular board (refer to
a board's documentation).

Signed-off-by: Vladimir Isaev <vvisaev@gmail.com>
Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/arc/uart-8250-stub.c | 116 +++++++++++++
 libgloss/arc/uart-8250.c      | 316 ++++++++++++++++++++++++++++++++++
 libgloss/arc/uart-8250.h      |  25 +++
 3 files changed, 457 insertions(+)
 create mode 100644 libgloss/arc/uart-8250-stub.c
 create mode 100644 libgloss/arc/uart-8250.c
 create mode 100644 libgloss/arc/uart-8250.h

diff --git a/libgloss/arc/uart-8250-stub.c b/libgloss/arc/uart-8250-stub.c
new file mode 100644
index 000000000..ab69d6354
--- /dev/null
+++ b/libgloss/arc/uart-8250-stub.c
@@ -0,0 +1,116 @@
+/*
+ * uart-8250-stub.c -- various stubs for 8250 UART libgloss.
+ *
+ * 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 <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+#include "glue.h"
+
+
+/* Always return character device with 1024 bytes block.  */
+int
+_fstat (int fd __attribute__ ((unused)), struct stat *buf)
+{
+  memset (buf, 0, sizeof (*buf));
+  buf->st_mode = S_IFCHR;
+  buf->st_blksize = 1024;
+
+  return 0;
+}
+
+/* ARC UART is actually console so just return 1.  */
+int
+_isatty (int fildes __attribute__ ((unused)))
+{
+  return 1;
+}
+
+/* Should be provided by crt0.S.  */
+extern void __attribute__((noreturn)) _exit_halt (int ret);
+
+void
+__attribute__((noreturn))
+_exit (int ret)
+{
+  _exit_halt (ret);
+}
+
+/* Not implemented.  */
+off_t
+_lseek (int fd __attribute__ ((unused)),
+	off_t offset __attribute__ ((unused)),
+	int whence __attribute__ ((unused)))
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+/* Not implemented.  */
+int
+_close (int fd __attribute__ ((unused)))
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+/* Not implemented.  */
+int
+_open (const char *path __attribute__ ((unused)),
+       int flags __attribute__ ((unused)), ...)
+{
+  errno = ENOSYS;
+  return -1;
+}
+
+/* If PID is equal to __MYPID, exit with sig as retcode.  */
+int
+_kill (int pid, int sig)
+{
+  if (pid == __MYPID)
+    _exit (sig);
+
+  errno = ENOSYS;
+  return -1;
+}
+
+/* Return __MYPID.  */
+int
+_getpid (void)
+{
+  return __MYPID;
+}
+
+/* No arguments.  */
+int
+_argc (void)
+{
+  return 0;
+}
+
+/* No arguments.  */
+uint32_t
+_argvlen (int a __attribute__ ((unused)))
+{
+  return 0;
+}
+
+/* No arguments.  */
+int
+_argv (int a __attribute__ ((unused)), char *arg __attribute__ ((unused)))
+{
+  return -1;
+}
diff --git a/libgloss/arc/uart-8250.c b/libgloss/arc/uart-8250.c
new file mode 100644
index 000000000..6f4e9f3d6
--- /dev/null
+++ b/libgloss/arc/uart-8250.c
@@ -0,0 +1,316 @@
+/*
+ * uart-8250.c -- polling driver for 32-bit 8250 UART.
+ * Provides _uart_8250_setup(), _read() and _write(). Please note that
+ * _read() and _write() from this file can only be used for console access.
+ *
+ * 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 <unistd.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <errno.h>
+
+/*
+ * List of UART 8250 registers with offsets:
+ *
+ *     0x00 - Transmit Holding Register, WO, LCR_DLAB == 0
+ *     0x00 - Receive Buffer Register, RO, LCR_DLAB == 0
+ *     0x00 - Divisor Latch Low, RW, LCR_DLAB == 1
+ *     0x04 - Divisor Latch High, RW, LCR_DLAB == 1
+ *     0x04 - Interrupt Enable Register, RW, LCR_DLAB == 0
+ *     0x08 - FIFO Control Register, WO
+ *     0x08 - Interrupt Identification Register, RO
+ *     0x0C - Line Control Register, RW
+ *     0x10 - Modem Control Register, RW
+ *     0x14 - Line Status Register, RO
+ *     0x18 - Modem Status Register, RO
+ */
+
+#define THR_OFFSET 0x00
+#define RBR_OFFSET 0x00
+#define DLL_OFFSET 0x00
+#define DLH_OFFSET 0x04
+#define IER_OFFSET 0x04
+#define FCR_OFFSET 0x08
+#define IIR_OFFSET 0x08
+#define LCR_OFFSET 0x0C
+#define MCR_OFFSET 0x10
+#define LSR_OFFSET 0x14
+#define MSR_OFFSET 0x18
+
+/*
+ * LCR (Line Control Register) fields:
+ *
+ *       [7] - Divisor Latch Access Bit
+ *       [6] - Set Break
+ *       [5] - Stick Parity
+ *       [4] - Even Parity Select
+ *       [3] - Parity Enable
+ *       [2] - Number of Stop Bits
+ *     [1:0] - Data Length Select. Values:
+ *                 0b11 - 8 data bits per character (default)
+ *                 0b10 - 7 data bits per character
+ *                 0b01 - 6 data bits per character
+ *                 0b00 - 5 data bits per character
+ */
+
+#define LCR_DLAB_SHIFT	7
+#define LCR_SB_SHIFT	6
+#define LCR_SP_SHIFT	5
+#define LCR_EPS_SHIFT	4
+#define LCR_PEN_SHIFT	3
+#define LCR_STB_SHIFT	2
+#define LCR_DLS_SHIFT	0
+/*
+ * MCR (Modem Control Register) fields:
+ *
+ *     [4] - LoopBack Bit
+ *     [3] - Auxiliary Output 2
+ *     [2] - Auxiliary Output 1
+ *     [1] - Request To Send (ON by default)
+ *     [0] - Data Terminal Ready (ON by default)
+ */
+
+#define	MCR_LB_SHIFT	4
+#define	MCR_OUT2_SHIFT	3
+#define	MCR_OUT1_SHIFT	2
+#define	MCR_RTS_SHIFT	1
+#define	MCR_DTR_SHIFT	0
+
+/*
+ * LSR (Line Status Register) fields:
+ *
+ *     [7] - Receiver FIFO Error
+ *     [6] - Transmitter Empty
+ *     [5] - Transmit Holding Register Empty
+ *     [4] - Break Interrupt
+ *     [3] - Framing Error
+ *     [2] - Parity Error
+ *     [1] - Overrun Error
+ *     [0] - Data Ready
+ */
+
+#define LSR_RFE_SHIFT	7
+#define LSR_TEMT_SHIFT	6
+#define LSR_THRE_SHIFT	5
+#define LSR_BI_SHIFT	4
+#define LSR_FE_SHIFT	3
+#define LSR_PE_SHIFT	2
+#define LSR_OE_SHIFT	1
+#define LSR_DR_SHIFT	0
+
+/*
+ * Default initial values for configuration registers.
+ */
+
+#define FCR_DEFAULT	0x0
+#define IER_DEFAULT	0x0
+#define LCR_DLS_DEFAULT	0x3
+#define LCR_DEFAULT	(LCR_DLS_DEFAULT << LCR_DLS_SHIFT)
+#define MCR_RTS_DEFAULT	0x1
+#define MCR_DTR_DEFAULT	0x1
+#define MCR_DEFAULT	((MCR_RTS_DEFAULT << MCR_RTS_SHIFT) | \
+			 (MCR_DTR_DEFAULT << MCR_DTR_SHIFT))
+
+#define LCR_MODE_SETUP	(0x1 << LCR_DLAB_SHIFT)
+#define LSR_MODE_GETC	(0x1 << LSR_DR_SHIFT)
+#define LSR_MODE_PUTC	((0x1 << LSR_TEMT_SHIFT) | (0x1 << LSR_THRE_SHIFT))
+
+/* Main UART control structure.  */
+struct _uart_8250 {
+  volatile char *base;	/* Start of UART registers.  */
+  uint32_t clk;		/* UART clock.  */
+  uint32_t baud;	/* Baud rate.  */
+  int aux_mapped;	/* If UART registers are mapped to AUX or memory.  */
+  int ready;		/* If UART is ready to use or not.  */
+};
+
+static struct _uart_8250 _uart_8250;
+
+/* Write 32-bit value to the UART register.  */
+static inline void
+_uart_8250_write_reg (const struct _uart_8250 *uart, uint32_t reg,
+		      uint32_t value)
+{
+  if (uart->aux_mapped)
+    __builtin_arc_sr (value, (uint32_t) uart->base + reg);
+  else
+    *(volatile uint32_t *)(uart->base + reg) = value;
+}
+
+/* Read 32-bit value from the UART register.  */
+static inline uint32_t
+_uart_8250_read_reg (const struct _uart_8250 *uart, uint32_t reg)
+{
+  if (uart->aux_mapped)
+    return __builtin_arc_lr ((uint32_t) uart->base + reg);
+  else
+    return *(volatile uint32_t *)(uart->base + reg);
+}
+
+/* Wait until all flags are set.  */
+static inline void
+_uart_8250_wait (const struct _uart_8250 *uart, uint32_t reg, uint32_t flags)
+{
+  while (1)
+    {
+      if ((_uart_8250_read_reg (uart, reg) & flags) == flags)
+	break;
+    }
+}
+
+/* Get one character from UART.  CR is converted to NL.  */
+static int
+_uart_8250_getc (const struct _uart_8250 *uart)
+{
+  char c;
+
+  _uart_8250_wait (uart, LSR_OFFSET, LSR_MODE_GETC);
+
+  c = _uart_8250_read_reg (uart, RBR_OFFSET);
+
+  if (c == '\r')
+    c = '\n';
+
+  return c;
+}
+
+/* Put one character to UART. CR is placed before NL.  */
+static void
+_uart_8250_putc (const struct _uart_8250 *uart, char c)
+{
+  if (c == '\n')
+    _uart_8250_putc (uart, '\r');
+
+  _uart_8250_wait (uart, LSR_OFFSET, LSR_MODE_PUTC);
+
+  _uart_8250_write_reg (uart, THR_OFFSET, c);
+}
+
+/*
+ * Setup UART control structure and following parameters:
+ *
+ *     - baudrate if clock and baudrate are passed to function
+ *     - 8n1 (8 data bits, no parity bit, one stop bit)
+ *     - disable interrupts
+ *     - disable FIFO
+ *     - set Request To Send and Data Terminal Ready
+ *
+ * Arguments:
+ *
+ *     - base - start address of UART registers
+ *     - aux_mapped - set if UART registers are mapped to ARC AUX
+ *     - clk - UART clock frequency
+ *     - baud - UART baudrate to setup
+ *
+ * The function returns 0 on success.
+ */
+int
+_uart_8250_setup (void *base, int aux_mapped, uint32_t clk, uint32_t baud)
+{
+  struct _uart_8250 *uart = &_uart_8250;
+
+  uart->base = base;
+  uart->aux_mapped = aux_mapped;
+  uart->clk = clk;
+  uart->baud = baud;
+
+  if (clk && baud)
+    {
+      uint32_t div;
+
+      div = ((clk + 8 * baud) / baud) / 16;
+      _uart_8250_write_reg (uart, LCR_OFFSET, LCR_MODE_SETUP);
+      _uart_8250_write_reg (uart, DLL_OFFSET, div & 0xFF);
+      _uart_8250_write_reg (uart, DLH_OFFSET, div >> 8);
+    }
+
+  _uart_8250_write_reg (uart, FCR_OFFSET, FCR_DEFAULT);
+  _uart_8250_write_reg (uart, IER_OFFSET, IER_DEFAULT);
+  _uart_8250_write_reg (uart, LCR_OFFSET, LCR_DEFAULT);
+  _uart_8250_write_reg (uart, MCR_OFFSET, MCR_DEFAULT);
+
+  uart->ready = 1;
+
+  return 0;
+}
+
+/* _read() is implemented only for stdin. Each read character is echoed.  */
+ssize_t
+_read (int fd, void *buf, size_t count)
+{
+  struct _uart_8250 *uart = &_uart_8250;
+  size_t bytes_read;
+  char *buf_char = buf;
+  int c;
+
+  if (fd != STDIN_FILENO)
+    {
+      errno = ENOSYS;
+      return -1;
+    }
+
+  if (!uart->ready)
+    {
+      errno = EIO;
+      return -1;
+    }
+
+  bytes_read = 0;
+  c = EOF;
+  /* Break on '\n' to simulate readline behavior.  */
+  while (bytes_read != count && c != '\n')
+    {
+      c = _uart_8250_getc (uart);
+      if (c == EOF)
+	break;
+
+      /* Echo character to the console.  */
+      _uart_8250_putc (uart, c);
+
+      buf_char[bytes_read] = c;
+      bytes_read++;
+    }
+
+  return bytes_read;
+}
+
+/* _write() is implemented only for stdout and stderr.  */
+ssize_t
+_write (int fd, const char *buf, size_t nbyte)
+{
+  struct _uart_8250 *uart = &_uart_8250;
+  uint32_t bytes_written;
+
+  if (fd != STDOUT_FILENO && fd != STDERR_FILENO)
+    {
+      errno = ENOSYS;
+      return -1;
+    }
+
+  if (!uart->ready)
+    {
+      errno = EIO;
+      return -1;
+    }
+
+  bytes_written = 0;
+  while (bytes_written != nbyte)
+    {
+      _uart_8250_putc (uart, buf[bytes_written]);
+      bytes_written++;
+    }
+
+  return bytes_written;
+}
diff --git a/libgloss/arc/uart-8250.h b/libgloss/arc/uart-8250.h
new file mode 100644
index 000000000..dc6062334
--- /dev/null
+++ b/libgloss/arc/uart-8250.h
@@ -0,0 +1,25 @@
+/*
+ * uart-8250.h -- polling driver for 32-bit 8250 UART.
+ * Header defines _uart_8250_setup().
+ *
+ * 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.
+ */
+
+#ifndef _UART_8250_H
+#define _UART_8250_H
+
+#include <stdint.h>
+
+int _uart_8250_setup (void *base, int aux_mapped, uint32_t clk, uint32_t baud);
+
+#endif /* ! _UART_8250_H */
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 10/15] arc: libgloss: Add a linker script common for all boards
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (8 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 09/15] arc: libgloss: Add UART 8250 library kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 11/15] arc: libgloss: Add support of IoT Development Kit board kolerov93
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov

From: Yuriy Kolerov <kolerov93@gmail.com>

Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/arc/arcv2elf-common.ld | 233 ++++++++++++++++++++++++++++++++
 1 file changed, 233 insertions(+)
 create mode 100644 libgloss/arc/arcv2elf-common.ld

diff --git a/libgloss/arc/arcv2elf-common.ld b/libgloss/arc/arcv2elf-common.ld
new file mode 100644
index 000000000..80663821d
--- /dev/null
+++ b/libgloss/arc/arcv2elf-common.ld
@@ -0,0 +1,233 @@
+/* Common linker script for ARCv2 targets */
+
+OUTPUT_FORMAT("elf32-littlearc", "elf32-bigarc", "elf32-littlearc")
+OUTPUT_ARCH(arc)
+ENTRY(__start)
+SEARCH_DIR(.);
+
+SECTIONS
+{
+ /* If the 'ivtbase_addr' symbol is defined, it indicates  the base address of
+    the interrupt vectors.  See description of INT_VECTOR_BASE register.  */
+ .ivt ORIGIN(startup) :
+ {
+    PROVIDE (__ivtbase_addr = .);
+   KEEP (*(.ivt));
+ }  > startup
+  /* Read-only sections, merged into text segment: */
+  .hash          : { *(.hash)		}
+  .dynsym        : { *(.dynsym)		}
+  .dynstr        : { *(.dynstr)		}
+  .gnu.version   : { *(.gnu.version)	}
+  .gnu.version_d   : { *(.gnu.version_d)	}
+  .gnu.version_r   : { *(.gnu.version_r)	}
+  .rel.init       : { *(.rel.init) }
+  .rela.init      : { *(.rela.init) }
+  .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
+  .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
+  .rel.fini       : { *(.rel.fini) }
+  .rela.fini      : { *(.rela.fini) }
+  .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
+  .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
+  .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
+  .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
+  .rel.tdata	  : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
+  .rela.tdata	  : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
+  .rel.tbss	  : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
+  .rela.tbss	  : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
+  .rel.ctors      : { *(.rel.ctors) }
+  .rela.ctors     : { *(.rela.ctors) }
+  .rel.dtors      : { *(.rel.dtors) }
+  .rela.dtors     : { *(.rela.dtors) }
+  .rel.got        : { *(.rel.got) }
+  .rela.got       : { *(.rela.got) }
+  .rel.sdata      : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
+  .rela.sdata     : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
+  .rel.sbss       : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
+  .rela.sbss      : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
+  .rel.sdata2     : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
+  .rela.sdata2    : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
+  .rel.sbss2      : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
+  .rela.sbss2     : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
+  .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
+  .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
+  .text           :
+  {
+     . = ALIGN(4);
+    KEEP (*(SORT_NONE(.init)))
+    /* Start here after reset.  */
+     . = ALIGN(4);
+    KEEP (*crt0.o(.text.__startup))
+    /* Remaining code.  */
+     . = ALIGN(4);
+    *(.text .stub .text.* .gnu.linkonce.t.*)
+    /* .gnu.warning sections are handled specially by elf.em.  */
+    *(.gnu.warning)
+  }  > text =0
+  .fini           :
+  {
+    KEEP (*(SORT_NONE(.fini)))
+    PROVIDE (__etext = .);
+    PROVIDE (_etext = .);
+    PROVIDE (etext = .);
+  }  > text =0
+  .jcr   :
+  {
+    KEEP (*(.jcr))
+  } > text
+  .eh_frame   :
+  {
+    KEEP (*(.eh_frame))
+  } > text
+  .gcc_except_table   :
+  {
+    *(.gcc_except_table) *(.gcc_except_table.*)
+  } > text
+  .plt   :
+  {
+    *(.plt)
+  } > text
+  .jlitab   :
+  {
+    __JLI_TABLE__ = .;
+     jlitab*.o:(.jlitab*) *(.jlitab*)
+  } > text
+  .rodata   :
+  {
+    *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*)
+  } > text
+  .rodata1        : { *(.rodata1) } > text
+  /* Start of the data section image in ROM.  */
+  __data_image = .;
+  PROVIDE (__data_image = .);
+  .data	  :
+  {
+     PROVIDE (__data_start = .) ;
+    /* --gc-sections will delete empty .data. This leads to wrong start
+       addresses for subsequent sections because -Tdata= from the command
+       line will have no effect, see PR13697.  Thus, keep .data  */
+    KEEP (*(.data))
+    *(.data.* .gnu.linkonce.d.*)
+    SORT(CONSTRUCTORS)
+  }  > data
+  .got            : { *(.got.plt) *(.got) }  > data
+  .ctors          :
+  {
+    /* gcc uses crtbegin.o to find the start of
+       the constructors, so we make sure it is
+       first.  Because this is a wildcard, it
+       doesn't matter if the user does not
+       actually link against crtbegin.o; the
+       linker won't look for a file to match a
+       wildcard.  The wildcard also means that it
+       doesn't matter which directory crtbegin.o
+       is in.  */
+    KEEP (*crtbegin*.o(.ctors))
+    /* We don't want to include the .ctor section from
+       from the crtend.o file until after the sorted ctors.
+       The .ctor section from the crtend file contains the
+       end of ctors marker and it must be last */
+    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
+    KEEP (*(SORT(.ctors.*)))
+    KEEP (*(.ctors))
+  }  > data
+  .dtors          :
+  {
+    KEEP (*crtbegin*.o(.dtors))
+    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
+    KEEP (*(SORT(.dtors.*)))
+    KEEP (*(.dtors))
+  }  > data
+  /* We want the small data sections together, so single-instruction offsets
+     can access them all, and initialized data all before uninitialized, so
+     we can shorten the on-disk segment size.  */
+  .sdata          :
+  {
+    __SDATA_BEGIN__ = . + 0x100;
+    *(.sdata .sdata.* .gnu.linkonce.s.*)
+    _edata  =  .;
+    PROVIDE (edata = .);
+  }  > sdata
+  .sdata2         : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }  > sdata
+  .sbss           :
+  {
+    PROVIDE (__sbss_start = .);
+    PROVIDE (___sbss_start = .);
+    *(.dynsbss)
+    *(.sbss .sbss.* .gnu.linkonce.sb.*)
+    *(.scommon)
+    PROVIDE (__sbss_end = .);
+    PROVIDE (___sbss_end = .);
+  }  > sdata
+  .sbss2          : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }  > sdata
+  .bss            :
+  {
+    *(.dynbss)
+    *(.bss .bss.* .gnu.linkonce.b.*)
+    *(COMMON)
+    /* Align here to ensure that the .bss section occupies space up to
+       _end.  Align after .bss to ensure correct alignment even if the
+       .bss section disappears because there are no input sections.  */
+    . = ALIGN(32 / 8);
+   _end = .;
+   PROVIDE (end = .);
+  }  > data
+  /* Global data not cleared after reset.  */
+  .noinit  :
+  {
+    *(.noinit .noinit.* .gnu.linkonce.n.*)
+    . = ALIGN(32 / 8);
+     PROVIDE (__start_heap = .) ;
+  }  > data
+   PROVIDE (__stack_top = (ORIGIN (data) + LENGTH (data) - 1) & -4);
+   PROVIDE (__end_heap = ORIGIN (data) + LENGTH (data) - 1);
+  .note.gnu.build-id : { *(.note.gnu.build-id) }
+  /* Stabs debugging sections.  */
+  .stab          0 : { *(.stab) }
+  .stabstr       0 : { *(.stabstr) }
+  .stab.excl     0 : { *(.stab.excl) }
+  .stab.exclstr  0 : { *(.stab.exclstr) }
+  .stab.index    0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment 0 (INFO) : { *(.comment) }
+  .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section so we begin them at 0.  */
+  /* DWARF 1.  */
+  .debug          0 : { *(.debug) }
+  .line           0 : { *(.line) }
+  /* GNU DWARF 1 extensions.  */
+  .debug_srcinfo  0 : { *(.debug_srcinfo) }
+  .debug_sfnames  0 : { *(.debug_sfnames) }
+  /* DWARF 1.1 and DWARF 2.  */
+  .debug_aranges  0 : { *(.debug_aranges) }
+  .debug_pubnames 0 : { *(.debug_pubnames) }
+  /* DWARF 2.  */
+  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+  .debug_abbrev   0 : { *(.debug_abbrev) }
+  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end) }
+  .debug_frame    0 : { *(.debug_frame) }
+  .debug_str      0 : { *(.debug_str) }
+  .debug_loc      0 : { *(.debug_loc) }
+  .debug_macinfo  0 : { *(.debug_macinfo) }
+  /* SGI/MIPS DWARF 2 extensions.  */
+  .debug_weaknames 0 : { *(.debug_weaknames) }
+  .debug_funcnames 0 : { *(.debug_funcnames) }
+  .debug_typenames 0 : { *(.debug_typenames) }
+  .debug_varnames  0 : { *(.debug_varnames) }
+  /* DWARF 3.  */
+  .debug_pubtypes 0 : { *(.debug_pubtypes) }
+  .debug_ranges   0 : { *(.debug_ranges) }
+  /* DWARF 5.  */
+  .debug_addr     0 : { *(.debug_addr) }
+  .debug_line_str 0 : { *(.debug_line_str) }
+  .debug_loclists 0 : { *(.debug_loclists) }
+  .debug_macro    0 : { *(.debug_macro) }
+  .debug_names    0 : { *(.debug_names) }
+  .debug_rnglists 0 : { *(.debug_rnglists) }
+  .debug_str_offsets 0 : { *(.debug_str_offsets) }
+  .debug_sup      0 : { *(.debug_sup) }
+  /* ARC Extension Sections */
+  .arcextmap	  0 : { *(.arcextmap.*) }
+}
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 11/15] arc: libgloss: Add support of IoT Development Kit board
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (9 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 10/15] arc: libgloss: Add a linker script common for all boards kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 12/15] arc: libgloss: Add support of HS " kolerov93
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov, Vladimir Isaev

From: Yuriy Kolerov <kolerov93@gmail.com>

An example of building an application:

    $ arc-elf32-gcc -mcpu=em -specs=iotdk.specs main.c -o main

Signed-off-by: Vladimir Isaev <vvisaev@gmail.com>
Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/arc/iotdk-uart-setup.c | 36 +++++++++++++++++++++++++++++++++
 libgloss/arc/iotdk.ld           | 14 +++++++++++++
 libgloss/arc/iotdk.specs        | 18 +++++++++++++++++
 3 files changed, 68 insertions(+)
 create mode 100644 libgloss/arc/iotdk-uart-setup.c
 create mode 100644 libgloss/arc/iotdk.ld
 create mode 100644 libgloss/arc/iotdk.specs

diff --git a/libgloss/arc/iotdk-uart-setup.c b/libgloss/arc/iotdk-uart-setup.c
new file mode 100644
index 000000000..e6d2ac887
--- /dev/null
+++ b/libgloss/arc/iotdk-uart-setup.c
@@ -0,0 +1,36 @@
+/*
+ * iotdk-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)
+{
+  void * const uart_base = (void *) 0x80014000;
+  const uint32_t uart_clk_ena = 0xC0;
+  const int uart_aux_mapped = 1;
+  const uint32_t uart_clock = 16000000;
+  const uint32_t uart_baud = 115200;
+
+  /* For this platform we have to enable UART clock before configuring it.   */
+  __builtin_arc_sr (0x01, (uint32_t) uart_base + uart_clk_ena);
+
+  _uart_8250_setup (uart_base, uart_aux_mapped, uart_clock, uart_baud);
+
+  return 0;
+}
diff --git a/libgloss/arc/iotdk.ld b/libgloss/arc/iotdk.ld
new file mode 100644
index 000000000..18874e819
--- /dev/null
+++ b/libgloss/arc/iotdk.ld
@@ -0,0 +1,14 @@
+/* Memory map for ARC IoT DK - EM9D */
+
+MEMORY
+{
+    ICCM : ORIGIN = 0x20000000, LENGTH = 256K
+    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
diff --git a/libgloss/arc/iotdk.specs b/libgloss/arc/iotdk.specs
new file mode 100644
index 000000000..9f9ba433f
--- /dev/null
+++ b/libgloss/arc/iotdk.specs
@@ -0,0 +1,18 @@
+%rename link iotdk_link
+%rename link_gcc_c_sequence iotdk_link_gcc_c_sequence
+%rename startfile iotdk_startfile
+
+*link:
+%(iotdk_link) -T iotdk.ld%s
+
+*iotdk_libgloss:
+-luart_8250 -liotdk_uart
+
+*iotdk_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*link_gcc_c_sequence:
+%(iotdk_link_gcc_c_sequence) --start-group %G %(iotdk_libc) %(iotdk_libgloss) --end-group
+
+*startfile:
+%(iotdk_startfile) arc-main-helper%O%s
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 12/15] arc: libgloss: Add support of HS Development Kit board
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (10 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 11/15] arc: libgloss: Add support of IoT Development Kit board kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 13/15] arc: libgloss: Add support of EM SDP board kolerov93
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov, Vladimir Isaev

From: Yuriy Kolerov <kolerov93@gmail.com>

An example of building an application:

    $ arc-elf32-gcc -mcpu=hs -specs=hsdk.specs main.c -o main

Signed-off-by: Vladimir Isaev <vvisaev@gmail.com>
Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/arc/hsdk-uart-setup.c | 32 ++++++++++++++++++++++++++++++++
 libgloss/arc/hsdk.ld           | 13 +++++++++++++
 libgloss/arc/hsdk.specs        | 18 ++++++++++++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 libgloss/arc/hsdk-uart-setup.c
 create mode 100644 libgloss/arc/hsdk.ld
 create mode 100644 libgloss/arc/hsdk.specs

diff --git a/libgloss/arc/hsdk-uart-setup.c b/libgloss/arc/hsdk-uart-setup.c
new file mode 100644
index 000000000..f2c224274
--- /dev/null
+++ b/libgloss/arc/hsdk-uart-setup.c
@@ -0,0 +1,32 @@
+/*
+ * hsdk-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)
+{
+  void * const uart_base = (void *) 0xf0005000;
+  const int uart_aux_mapped = 0;
+  const uint32_t uart_clock = 33333333;
+  const uint32_t uart_baud = 115200;
+
+  _uart_8250_setup (uart_base, uart_aux_mapped, uart_clock, uart_baud);
+
+  return 0;
+}
diff --git a/libgloss/arc/hsdk.ld b/libgloss/arc/hsdk.ld
new file mode 100644
index 000000000..ddf024f1b
--- /dev/null
+++ b/libgloss/arc/hsdk.ld
@@ -0,0 +1,13 @@
+/* Memory map for ARC HS Development Kit and ARC HS Development Kit 4xD */
+
+MEMORY
+{
+    DRAM : ORIGIN = 0x90000000, LENGTH = 0x50000000
+}
+
+REGION_ALIAS("startup", DRAM)
+REGION_ALIAS("text", DRAM)
+REGION_ALIAS("data", DRAM)
+REGION_ALIAS("sdata", DRAM)
+
+INCLUDE arcv2elf-common.ld
diff --git a/libgloss/arc/hsdk.specs b/libgloss/arc/hsdk.specs
new file mode 100644
index 000000000..fda702f4f
--- /dev/null
+++ b/libgloss/arc/hsdk.specs
@@ -0,0 +1,18 @@
+%rename link hsdk_link
+%rename link_gcc_c_sequence hsdk_link_gcc_c_sequence
+%rename startfile hsdk_startfile
+
+*link:
+%(hsdk_link) -T hsdk.ld%s
+
+*hsdk_libgloss:
+-luart_8250 -lhsdk_uart
+
+*hsdk_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*link_gcc_c_sequence:
+%(hsdk_link_gcc_c_sequence) --start-group %G %(hsdk_libc) %(hsdk_libgloss) --end-group
+
+*startfile:
+%(hsdk_startfile) arc-main-helper%O%s
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 13/15] arc: libgloss: Add support of EM SDP board
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (11 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 12/15] arc: libgloss: Add support of HS " kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 14/15] arc: libgloss: Add support of EM Starter Kit board kolerov93
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov, Vladimir Isaev

From: Yuriy Kolerov <kolerov93@gmail.com>

These specs files are introduced for EM SDP board:

    * emsdp1.1.specs - EM SDP 1.1, everything in ICCM/DCCM memory
    * emsdp1.1_ram.specs - EM SDP 1.1, startup code in ICCM
      memory and everything else in RAM
    * emsdp1.2.specs - EM SDP 1.2, everything in ICCM/DCCM memory
    * emsdp1.2_ram.specs - EM SDP 1.2, startup code in ICCM
      memory and everything else in RAM

An example of building an application:

    $ arc-elf32-gcc -mcpu=em -specs=emsdp1.1_ram.specs main.c -o main

Signed-off-by: Vladimir Isaev <vvisaev@gmail.com>
Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/arc/emsdp-uart-setup.c | 32 ++++++++++++++++++++++++++++++++
 libgloss/arc/emsdp1.1.ld        | 15 +++++++++++++++
 libgloss/arc/emsdp1.1.specs     | 18 ++++++++++++++++++
 libgloss/arc/emsdp1.1_ram.ld    | 15 +++++++++++++++
 libgloss/arc/emsdp1.1_ram.specs | 18 ++++++++++++++++++
 libgloss/arc/emsdp1.2.ld        | 15 +++++++++++++++
 libgloss/arc/emsdp1.2.specs     | 18 ++++++++++++++++++
 libgloss/arc/emsdp1.2_ram.ld    | 15 +++++++++++++++
 libgloss/arc/emsdp1.2_ram.specs | 18 ++++++++++++++++++
 9 files changed, 164 insertions(+)
 create mode 100644 libgloss/arc/emsdp-uart-setup.c
 create mode 100644 libgloss/arc/emsdp1.1.ld
 create mode 100644 libgloss/arc/emsdp1.1.specs
 create mode 100644 libgloss/arc/emsdp1.1_ram.ld
 create mode 100644 libgloss/arc/emsdp1.1_ram.specs
 create mode 100644 libgloss/arc/emsdp1.2.ld
 create mode 100644 libgloss/arc/emsdp1.2.specs
 create mode 100644 libgloss/arc/emsdp1.2_ram.ld
 create mode 100644 libgloss/arc/emsdp1.2_ram.specs

diff --git a/libgloss/arc/emsdp-uart-setup.c b/libgloss/arc/emsdp-uart-setup.c
new file mode 100644
index 000000000..eacf98057
--- /dev/null
+++ b/libgloss/arc/emsdp-uart-setup.c
@@ -0,0 +1,32 @@
+/*
+ * emsdp-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)
+{
+  void * const uart_base = (void *) 0xf0004000;
+  const int uart_aux_mapped = 0;
+  const uint32_t uart_clock = 100000000;
+  const uint32_t uart_baud = 115200;
+
+  _uart_8250_setup (uart_base, uart_aux_mapped, uart_clock, uart_baud);
+
+  return 0;
+}
diff --git a/libgloss/arc/emsdp1.1.ld b/libgloss/arc/emsdp1.1.ld
new file mode 100644
index 000000000..c50ba0684
--- /dev/null
+++ b/libgloss/arc/emsdp1.1.ld
@@ -0,0 +1,15 @@
+/* Memory map for ARC EM Software Development Platform 1.0 and 1.1 */
+
+MEMORY
+{
+    PSRAM : ORIGIN = 0x10000000, LENGTH =  16M
+    ICCM0 : ORIGIN = 0x60000000, LENGTH = 128K
+    DCCM  : ORIGIN = 0x80000000, LENGTH = 128K
+}
+
+REGION_ALIAS("startup", ICCM0)
+REGION_ALIAS("text", ICCM0)
+REGION_ALIAS("data", DCCM)
+REGION_ALIAS("sdata", DCCM)
+
+INCLUDE arcv2elf-common.ld
diff --git a/libgloss/arc/emsdp1.1.specs b/libgloss/arc/emsdp1.1.specs
new file mode 100644
index 000000000..965c8d532
--- /dev/null
+++ b/libgloss/arc/emsdp1.1.specs
@@ -0,0 +1,18 @@
+%rename link emsdp_link
+%rename link_gcc_c_sequence emsdp_link_gcc_c_sequence
+%rename startfile emsdp_startfile
+
+*link:
+%(emsdp_link) -T emsdp1.1.ld%s
+
+*emsdp_libgloss:
+-luart_8250 -lemsdp_uart
+
+*emsdp_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*link_gcc_c_sequence:
+%(emsdp_link_gcc_c_sequence) --start-group %G %(emsdp_libc) %(emsdp_libgloss) --end-group
+
+*startfile:
+%(emsdp_startfile) arc-main-helper%O%s
diff --git a/libgloss/arc/emsdp1.1_ram.ld b/libgloss/arc/emsdp1.1_ram.ld
new file mode 100644
index 000000000..743a4808d
--- /dev/null
+++ b/libgloss/arc/emsdp1.1_ram.ld
@@ -0,0 +1,15 @@
+/* Memory map for ARC EM Software Development Platform 1.0 and 1.1 */
+
+MEMORY
+{
+    PSRAM : ORIGIN = 0x10000000, LENGTH =  16M
+    ICCM0 : ORIGIN = 0x60000000, LENGTH = 128K
+    DCCM  : ORIGIN = 0x80000000, LENGTH = 128K
+}
+
+REGION_ALIAS("startup", ICCM0)
+REGION_ALIAS("text", PSRAM)
+REGION_ALIAS("data", PSRAM)
+REGION_ALIAS("sdata", PSRAM)
+
+INCLUDE arcv2elf-common.ld
diff --git a/libgloss/arc/emsdp1.1_ram.specs b/libgloss/arc/emsdp1.1_ram.specs
new file mode 100644
index 000000000..6fa74e869
--- /dev/null
+++ b/libgloss/arc/emsdp1.1_ram.specs
@@ -0,0 +1,18 @@
+%rename link emsdp_link
+%rename link_gcc_c_sequence emsdp_link_gcc_c_sequence
+%rename startfile emsdp_startfile
+
+*link:
+%(emsdp_link) -T emsdp1.1_ram.ld%s
+
+*emsdp_libgloss:
+-luart_8250 -lemsdp_uart
+
+*emsdp_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*link_gcc_c_sequence:
+%(emsdp_link_gcc_c_sequence) --start-group %G %(emsdp_libc) %(emsdp_libgloss) --end-group
+
+*startfile:
+%(emsdp_startfile) arc-main-helper%O%s
diff --git a/libgloss/arc/emsdp1.2.ld b/libgloss/arc/emsdp1.2.ld
new file mode 100644
index 000000000..7e536d07c
--- /dev/null
+++ b/libgloss/arc/emsdp1.2.ld
@@ -0,0 +1,15 @@
+/* Memory map for ARC EM Software Development Platform 1.2 */
+
+MEMORY
+{
+    ICCM0 : ORIGIN = 0x10000000, LENGTH = 128K
+    PSRAM : ORIGIN = 0x40000000, LENGTH =  16M
+    DCCM  : ORIGIN = 0x80000000, LENGTH = 128K
+}
+
+REGION_ALIAS("startup", ICCM0)
+REGION_ALIAS("text", ICCM0)
+REGION_ALIAS("data", DCCM)
+REGION_ALIAS("sdata", DCCM)
+
+INCLUDE arcv2elf-common.ld
diff --git a/libgloss/arc/emsdp1.2.specs b/libgloss/arc/emsdp1.2.specs
new file mode 100644
index 000000000..0366fe52c
--- /dev/null
+++ b/libgloss/arc/emsdp1.2.specs
@@ -0,0 +1,18 @@
+%rename link emsdp_link
+%rename link_gcc_c_sequence emsdp_link_gcc_c_sequence
+%rename startfile emsdp_startfile
+
+*link:
+%(emsdp_link) -T emsdp1.2.ld%s
+
+*emsdp_libgloss:
+-luart_8250 -lemsdp_uart
+
+*emsdp_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*link_gcc_c_sequence:
+%(emsdp_link_gcc_c_sequence) --start-group %G %(emsdp_libc) %(emsdp_libgloss) --end-group
+
+*startfile:
+%(emsdp_startfile) arc-main-helper%O%s
diff --git a/libgloss/arc/emsdp1.2_ram.ld b/libgloss/arc/emsdp1.2_ram.ld
new file mode 100644
index 000000000..3128c15c1
--- /dev/null
+++ b/libgloss/arc/emsdp1.2_ram.ld
@@ -0,0 +1,15 @@
+/* Memory map for ARC EM Software Development Platform 1.2 */
+
+MEMORY
+{
+    ICCM0 : ORIGIN = 0x10000000, LENGTH = 128K
+    PSRAM : ORIGIN = 0x40000000, LENGTH =  16M
+    DCCM  : ORIGIN = 0x80000000, LENGTH = 128K
+}
+
+REGION_ALIAS("startup", ICCM0)
+REGION_ALIAS("text", PSRAM)
+REGION_ALIAS("data", PSRAM)
+REGION_ALIAS("sdata", PSRAM)
+
+INCLUDE arcv2elf-common.ld
diff --git a/libgloss/arc/emsdp1.2_ram.specs b/libgloss/arc/emsdp1.2_ram.specs
new file mode 100644
index 000000000..97284fae2
--- /dev/null
+++ b/libgloss/arc/emsdp1.2_ram.specs
@@ -0,0 +1,18 @@
+%rename link emsdp_link
+%rename link_gcc_c_sequence emsdp_link_gcc_c_sequence
+%rename startfile emsdp_startfile
+
+*link:
+%(emsdp_link) -T emsdp1.2_ram.ld%s
+
+*emsdp_libgloss:
+-luart_8250 -lemsdp_uart
+
+*emsdp_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*link_gcc_c_sequence:
+%(emsdp_link_gcc_c_sequence) --start-group %G %(emsdp_libc) %(emsdp_libgloss) --end-group
+
+*startfile:
+%(emsdp_startfile) arc-main-helper%O%s
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 14/15] arc: libgloss: Add support of EM Starter Kit board
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (12 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 13/15] arc: libgloss: Add support of EM SDP board kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-21  9:56 ` [PATCH 15/15] arc: libgloss: Add build rules for new boards kolerov93
  2024-05-22 18:28 ` [PATCH 00/15] A series of fixes for ARC and libgloss update Jeff Johnston
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov, Vladimir Isaev

From: Yuriy Kolerov <kolerov93@gmail.com>

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>
---
 libgloss/arc/emsk-uart-setup.c       | 33 ++++++++++++++++++++++++++++
 libgloss/arc/emsk1_em4.ld            | 14 ++++++++++++
 libgloss/arc/emsk1_em4.specs         | 18 +++++++++++++++
 libgloss/arc/emsk1_em6.ld            | 14 ++++++++++++
 libgloss/arc/emsk1_em6.specs         | 18 +++++++++++++++
 libgloss/arc/emsk1_em6_ram.ld        | 14 ++++++++++++
 libgloss/arc/emsk1_em6_ram.specs     | 18 +++++++++++++++
 libgloss/arc/emsk2.1_em5d.ld         | 14 ++++++++++++
 libgloss/arc/emsk2.1_em5d.specs      | 18 +++++++++++++++
 libgloss/arc/emsk2.1_em7d.ld         | 15 +++++++++++++
 libgloss/arc/emsk2.1_em7d.specs      | 18 +++++++++++++++
 libgloss/arc/emsk2.1_em7d_ram.ld     | 15 +++++++++++++
 libgloss/arc/emsk2.1_em7d_ram.specs  | 18 +++++++++++++++
 libgloss/arc/emsk2.2_em11d.ld        | 15 +++++++++++++
 libgloss/arc/emsk2.2_em11d.specs     | 18 +++++++++++++++
 libgloss/arc/emsk2.2_em11d_ram.ld    | 15 +++++++++++++
 libgloss/arc/emsk2.2_em11d_ram.specs | 18 +++++++++++++++
 libgloss/arc/emsk2.2_em7d.ld         | 15 +++++++++++++
 libgloss/arc/emsk2.2_em7d.specs      | 18 +++++++++++++++
 libgloss/arc/emsk2.2_em7d_ram.ld     | 15 +++++++++++++
 libgloss/arc/emsk2.2_em7d_ram.specs  | 18 +++++++++++++++
 libgloss/arc/emsk2.2_em9d.ld         | 15 +++++++++++++
 libgloss/arc/emsk2.2_em9d.specs      | 18 +++++++++++++++
 libgloss/arc/emsk2.2_em9d_ram.ld     | 15 +++++++++++++
 libgloss/arc/emsk2.2_em9d_ram.specs  | 18 +++++++++++++++
 25 files changed, 425 insertions(+)
 create mode 100644 libgloss/arc/emsk-uart-setup.c
 create mode 100644 libgloss/arc/emsk1_em4.ld
 create mode 100644 libgloss/arc/emsk1_em4.specs
 create mode 100644 libgloss/arc/emsk1_em6.ld
 create mode 100644 libgloss/arc/emsk1_em6.specs
 create mode 100644 libgloss/arc/emsk1_em6_ram.ld
 create mode 100644 libgloss/arc/emsk1_em6_ram.specs
 create mode 100644 libgloss/arc/emsk2.1_em5d.ld
 create mode 100644 libgloss/arc/emsk2.1_em5d.specs
 create mode 100644 libgloss/arc/emsk2.1_em7d.ld
 create mode 100644 libgloss/arc/emsk2.1_em7d.specs
 create mode 100644 libgloss/arc/emsk2.1_em7d_ram.ld
 create mode 100644 libgloss/arc/emsk2.1_em7d_ram.specs
 create mode 100644 libgloss/arc/emsk2.2_em11d.ld
 create mode 100644 libgloss/arc/emsk2.2_em11d.specs
 create mode 100644 libgloss/arc/emsk2.2_em11d_ram.ld
 create mode 100644 libgloss/arc/emsk2.2_em11d_ram.specs
 create mode 100644 libgloss/arc/emsk2.2_em7d.ld
 create mode 100644 libgloss/arc/emsk2.2_em7d.specs
 create mode 100644 libgloss/arc/emsk2.2_em7d_ram.ld
 create mode 100644 libgloss/arc/emsk2.2_em7d_ram.specs
 create mode 100644 libgloss/arc/emsk2.2_em9d.ld
 create mode 100644 libgloss/arc/emsk2.2_em9d.specs
 create mode 100644 libgloss/arc/emsk2.2_em9d_ram.ld
 create mode 100644 libgloss/arc/emsk2.2_em9d_ram.specs

diff --git a/libgloss/arc/emsk-uart-setup.c b/libgloss/arc/emsk-uart-setup.c
new file mode 100644
index 000000000..b8e1ea859
--- /dev/null
+++ b/libgloss/arc/emsk-uart-setup.c
@@ -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;
+}
diff --git a/libgloss/arc/emsk1_em4.ld b/libgloss/arc/emsk1_em4.ld
new file mode 100644
index 000000000..416480587
--- /dev/null
+++ b/libgloss/arc/emsk1_em4.ld
@@ -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
diff --git a/libgloss/arc/emsk1_em4.specs b/libgloss/arc/emsk1_em4.specs
new file mode 100644
index 000000000..06b991ed9
--- /dev/null
+++ b/libgloss/arc/emsk1_em4.specs
@@ -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
diff --git a/libgloss/arc/emsk1_em6.ld b/libgloss/arc/emsk1_em6.ld
new file mode 100644
index 000000000..ab620c0c1
--- /dev/null
+++ b/libgloss/arc/emsk1_em6.ld
@@ -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
diff --git a/libgloss/arc/emsk1_em6.specs b/libgloss/arc/emsk1_em6.specs
new file mode 100644
index 000000000..51ce25e2b
--- /dev/null
+++ b/libgloss/arc/emsk1_em6.specs
@@ -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
diff --git a/libgloss/arc/emsk1_em6_ram.ld b/libgloss/arc/emsk1_em6_ram.ld
new file mode 100644
index 000000000..5bc702b48
--- /dev/null
+++ b/libgloss/arc/emsk1_em6_ram.ld
@@ -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
diff --git a/libgloss/arc/emsk1_em6_ram.specs b/libgloss/arc/emsk1_em6_ram.specs
new file mode 100644
index 000000000..b3543ce19
--- /dev/null
+++ b/libgloss/arc/emsk1_em6_ram.specs
@@ -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
diff --git a/libgloss/arc/emsk2.1_em5d.ld b/libgloss/arc/emsk2.1_em5d.ld
new file mode 100644
index 000000000..57a4c4042
--- /dev/null
+++ b/libgloss/arc/emsk2.1_em5d.ld
@@ -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
diff --git a/libgloss/arc/emsk2.1_em5d.specs b/libgloss/arc/emsk2.1_em5d.specs
new file mode 100644
index 000000000..e6f0f086b
--- /dev/null
+++ b/libgloss/arc/emsk2.1_em5d.specs
@@ -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
diff --git a/libgloss/arc/emsk2.1_em7d.ld b/libgloss/arc/emsk2.1_em7d.ld
new file mode 100644
index 000000000..0f4f3305d
--- /dev/null
+++ b/libgloss/arc/emsk2.1_em7d.ld
@@ -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
diff --git a/libgloss/arc/emsk2.1_em7d.specs b/libgloss/arc/emsk2.1_em7d.specs
new file mode 100644
index 000000000..1eeb8716d
--- /dev/null
+++ b/libgloss/arc/emsk2.1_em7d.specs
@@ -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
diff --git a/libgloss/arc/emsk2.1_em7d_ram.ld b/libgloss/arc/emsk2.1_em7d_ram.ld
new file mode 100644
index 000000000..931269cfc
--- /dev/null
+++ b/libgloss/arc/emsk2.1_em7d_ram.ld
@@ -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
diff --git a/libgloss/arc/emsk2.1_em7d_ram.specs b/libgloss/arc/emsk2.1_em7d_ram.specs
new file mode 100644
index 000000000..d4f1fd852
--- /dev/null
+++ b/libgloss/arc/emsk2.1_em7d_ram.specs
@@ -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
diff --git a/libgloss/arc/emsk2.2_em11d.ld b/libgloss/arc/emsk2.2_em11d.ld
new file mode 100644
index 000000000..551b0f443
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em11d.ld
@@ -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
diff --git a/libgloss/arc/emsk2.2_em11d.specs b/libgloss/arc/emsk2.2_em11d.specs
new file mode 100644
index 000000000..455e67434
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em11d.specs
@@ -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
diff --git a/libgloss/arc/emsk2.2_em11d_ram.ld b/libgloss/arc/emsk2.2_em11d_ram.ld
new file mode 100644
index 000000000..3e58e91f1
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em11d_ram.ld
@@ -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
diff --git a/libgloss/arc/emsk2.2_em11d_ram.specs b/libgloss/arc/emsk2.2_em11d_ram.specs
new file mode 100644
index 000000000..5a7c4aff2
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em11d_ram.specs
@@ -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
diff --git a/libgloss/arc/emsk2.2_em7d.ld b/libgloss/arc/emsk2.2_em7d.ld
new file mode 100644
index 000000000..f7e0cf662
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em7d.ld
@@ -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
diff --git a/libgloss/arc/emsk2.2_em7d.specs b/libgloss/arc/emsk2.2_em7d.specs
new file mode 100644
index 000000000..6b1217473
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em7d.specs
@@ -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
diff --git a/libgloss/arc/emsk2.2_em7d_ram.ld b/libgloss/arc/emsk2.2_em7d_ram.ld
new file mode 100644
index 000000000..3f6ec312a
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em7d_ram.ld
@@ -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
diff --git a/libgloss/arc/emsk2.2_em7d_ram.specs b/libgloss/arc/emsk2.2_em7d_ram.specs
new file mode 100644
index 000000000..66917d2fb
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em7d_ram.specs
@@ -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
diff --git a/libgloss/arc/emsk2.2_em9d.ld b/libgloss/arc/emsk2.2_em9d.ld
new file mode 100644
index 000000000..f7e0cf662
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em9d.ld
@@ -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
diff --git a/libgloss/arc/emsk2.2_em9d.specs b/libgloss/arc/emsk2.2_em9d.specs
new file mode 100644
index 000000000..db8a4bcde
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em9d.specs
@@ -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
diff --git a/libgloss/arc/emsk2.2_em9d_ram.ld b/libgloss/arc/emsk2.2_em9d_ram.ld
new file mode 100644
index 000000000..3f6ec312a
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em9d_ram.ld
@@ -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
diff --git a/libgloss/arc/emsk2.2_em9d_ram.specs b/libgloss/arc/emsk2.2_em9d_ram.specs
new file mode 100644
index 000000000..a524453d5
--- /dev/null
+++ b/libgloss/arc/emsk2.2_em9d_ram.specs
@@ -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
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 15/15] arc: libgloss: Add build rules for new boards
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (13 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 14/15] arc: libgloss: Add support of EM Starter Kit board kolerov93
@ 2024-05-21  9:56 ` kolerov93
  2024-05-22 18:28 ` [PATCH 00/15] A series of fixes for ARC and libgloss update Jeff Johnston
  15 siblings, 0 replies; 17+ messages in thread
From: kolerov93 @ 2024-05-21  9:56 UTC (permalink / raw)
  To: newlib; +Cc: shahab, claziss, Yuriy Kolerov

From: Yuriy Kolerov <kolerov93@gmail.com>

Add build rules to support packages for development boards and
nSIM hostlink.

Makefile.in is generated this way:

    $ autoconf --version
    autoconf (GNU Autoconf) 2.69
    $ automake --version
    automake (GNU automake) 1.15.1
    $ cd libgloss
    $ autoreconf -i

Signed-off-by: Yuriy Kolerov <kolerov93@gmail.com>
---
 libgloss/Makefile.in      | 1216 +++++++++++++++++++++++++++++--------
 libgloss/arc/Makefile.inc |   92 ++-
 2 files changed, 1038 insertions(+), 270 deletions(-)

diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in
index a3e5bc4bf..300dcf904 100644
--- a/libgloss/Makefile.in
+++ b/libgloss/Makefile.in
@@ -103,29 +103,72 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7)
 
 @CONFIG_AARCH64_TRUE@am__append_4 = $(aarch64_SPECS) \
 @CONFIG_AARCH64_TRUE@	$(aarch64_cpu_initcpuinit_DATA)
-@CONFIG_ARC_TRUE@am__append_5 = arc/libnsim.a
+@CONFIG_ARC_TRUE@am__append_5 = arc/libnsim.a arc/libhl.a \
+@CONFIG_ARC_TRUE@	arc/libuart_8250.a arc/libiotdk_uart.a \
+@CONFIG_ARC_TRUE@	arc/libhsdk_uart.a arc/libemsk_uart.a \
+@CONFIG_ARC_TRUE@	arc/libemsdp_uart.a
 @CONFIG_ARC_TRUE@am__append_6 = \
 @CONFIG_ARC_TRUE@	arc/crt0.o \
 @CONFIG_ARC_TRUE@	arc/gcrt0.o \
+@CONFIG_ARC_TRUE@	arc/arc-main-helper.o \
 @CONFIG_ARC_TRUE@	arc/nano.specs \
-@CONFIG_ARC_TRUE@	arc/nsim.specs
-
-@CONFIG_ARM_TRUE@@MAY_SUPPLY_SYSCALLS_FALSE@am__append_7 = arm/crt0.o
-@CONFIG_ARM_TRUE@am__append_8 = arm/linux-crt0.o arm/redboot-crt0.o \
+@CONFIG_ARC_TRUE@	arc/nsim.specs \
+@CONFIG_ARC_TRUE@	arc/hl.specs \
+@CONFIG_ARC_TRUE@	arc/arcv2elf-common.ld \
+@CONFIG_ARC_TRUE@	arc/emsdp1.1_ram.specs \
+@CONFIG_ARC_TRUE@	arc/emsdp1.1_ram.ld \
+@CONFIG_ARC_TRUE@	arc/emsdp1.1.specs \
+@CONFIG_ARC_TRUE@	arc/emsdp1.1.ld \
+@CONFIG_ARC_TRUE@	arc/emsdp1.2_ram.specs \
+@CONFIG_ARC_TRUE@	arc/emsdp1.2_ram.ld \
+@CONFIG_ARC_TRUE@	arc/emsdp1.2.specs \
+@CONFIG_ARC_TRUE@	arc/emsdp1.2.ld \
+@CONFIG_ARC_TRUE@	arc/emsk1_em4.specs \
+@CONFIG_ARC_TRUE@	arc/emsk1_em4.ld \
+@CONFIG_ARC_TRUE@	arc/emsk1_em6_ram.specs \
+@CONFIG_ARC_TRUE@	arc/emsk1_em6_ram.ld \
+@CONFIG_ARC_TRUE@	arc/emsk1_em6.specs \
+@CONFIG_ARC_TRUE@	arc/emsk1_em6.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.1_em5d.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.1_em5d.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.1_em7d_ram.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.1_em7d_ram.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.1_em7d.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.1_em7d.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em7d_ram.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em7d_ram.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em7d.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em7d.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em9d_ram.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em9d_ram.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em9d.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em9d.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em11d_ram.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em11d_ram.ld \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em11d.specs \
+@CONFIG_ARC_TRUE@	arc/emsk2.2_em11d.ld \
+@CONFIG_ARC_TRUE@	arc/hsdk.specs \
+@CONFIG_ARC_TRUE@	arc/hsdk.ld \
+@CONFIG_ARC_TRUE@	arc/iotdk.specs \
+@CONFIG_ARC_TRUE@	arc/iotdk.ld
+
+@CONFIG_ARC_TRUE@am__append_7 = arc/crt0.S arc/gcrt0.S arc/arc-main-helper.c
+@CONFIG_ARM_TRUE@@MAY_SUPPLY_SYSCALLS_FALSE@am__append_8 = arm/crt0.o
+@CONFIG_ARM_TRUE@am__append_9 = arm/linux-crt0.o arm/redboot-crt0.o \
 @CONFIG_ARM_TRUE@	arm/redboot-syscalls.o arm/rdpmon-crt0.o \
 @CONFIG_ARM_TRUE@	arm/rdimon-crt0.o arm/rdimon-crt0-v2m.o \
 @CONFIG_ARM_TRUE@	$(arm_SPECS)
-@CONFIG_ARM_TRUE@am__append_9 = arm/libgloss-linux.a arm/librdpmon.a \
+@CONFIG_ARM_TRUE@am__append_10 = arm/libgloss-linux.a arm/librdpmon.a \
 @CONFIG_ARM_TRUE@	arm/librdimon.a arm/librdimon-v2m.a
-@CONFIG_ARM_TRUE@am__append_10 = $(arm_SPECS) \
+@CONFIG_ARM_TRUE@am__append_11 = $(arm_SPECS) \
 @CONFIG_ARM_TRUE@	$(arm_cpu_initcpuinit_DATA)
 
 # Here is all of the simulator stuff.
-@CONFIG_BFIN_TRUE@am__append_11 = bfin/libsim.a bfin/libbfinbsp.a
-@CONFIG_BFIN_TRUE@am__append_12 = bfin/sim-test
+@CONFIG_BFIN_TRUE@am__append_12 = bfin/libsim.a bfin/libbfinbsp.a
+@CONFIG_BFIN_TRUE@am__append_13 = bfin/sim-test
 
 # Here is all of the development board stuff.
-@CONFIG_BFIN_TRUE@am__append_13 = \
+@CONFIG_BFIN_TRUE@am__append_14 = \
 @CONFIG_BFIN_TRUE@	bfin/crt0.o \
 @CONFIG_BFIN_TRUE@	bfin/basiccrt.o \
 @CONFIG_BFIN_TRUE@	bfin/basiccrts.o \
@@ -136,11 +179,11 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7)
 # 	bfin/basiccrt60x.o \
 #	bfin/basiccrt60xs.o \
 #	bfin/basiccrt60xc1.o
-@CONFIG_BFIN_TRUE@am__append_14 = \
+@CONFIG_BFIN_TRUE@am__append_15 = \
 @CONFIG_BFIN_TRUE@	bfin/crt0.S \
 @CONFIG_BFIN_TRUE@	bfin/basiccrt.S
 
-@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_15 = \
+@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_16 = \
 @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@	bfin/bfin-common-sc.ld bfin/bfin-common-mc.ld bfin/bfin-common-mc0.ld \
 @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@	bfin/bf504.ld bfin/bf506.ld \
 @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@	bfin/bf512.ld bfin/bf514.ld bfin/bf516.ld bfin/bf518.ld \
@@ -156,84 +199,84 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7)
 @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@	bfin/bf609.ld bfin/bf609c0.ld bfin/bf609c1.ld bfin/bf609m.ld \
 @CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@	bfin/bf592.ld
 
-@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_16 = $(wildcard $(srcdir)/bfin/include/*.h)
-@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_17 = $(wildcard $(srcdir)/bfin/include/sys/*.h)
-@CONFIG_CR16_TRUE@am__append_18 = cr16/crti.o cr16/crtn.o cr16/crt1.o \
+@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_17 = $(wildcard $(srcdir)/bfin/include/*.h)
+@CONFIG_BFIN_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_18 = $(wildcard $(srcdir)/bfin/include/sys/*.h)
+@CONFIG_CR16_TRUE@am__append_19 = cr16/crti.o cr16/crtn.o cr16/crt1.o \
 @CONFIG_CR16_TRUE@	cr16/sim.ld
-@CONFIG_CR16_TRUE@am__append_19 = \
+@CONFIG_CR16_TRUE@am__append_20 = \
 @CONFIG_CR16_TRUE@	cr16/crti.S \
 @CONFIG_CR16_TRUE@	cr16/crtn.S \
 @CONFIG_CR16_TRUE@	cr16/crt1.S
 
-@CONFIG_CR16_TRUE@am__append_20 = cr16/libh.a cr16/libsim.a
-@CONFIG_CSKY_TRUE@am__append_21 = \
+@CONFIG_CR16_TRUE@am__append_21 = cr16/libh.a cr16/libsim.a
+@CONFIG_CSKY_TRUE@am__append_22 = \
 @CONFIG_CSKY_TRUE@	csky/crt0.o
 
-@CONFIG_CSKY_TRUE@am__append_22 = \
+@CONFIG_CSKY_TRUE@am__append_23 = \
 @CONFIG_CSKY_TRUE@	csky/crt0.S
 
-@CONFIG_CSKY_TRUE@am__append_23 = csky/libsemi.a
-@CONFIG_D30V_TRUE@am__append_24 = d30v/libsim.a
-@CONFIG_D30V_TRUE@am__append_25 = \
+@CONFIG_CSKY_TRUE@am__append_24 = csky/libsemi.a
+@CONFIG_D30V_TRUE@am__append_25 = d30v/libsim.a
+@CONFIG_D30V_TRUE@am__append_26 = \
 @CONFIG_D30V_TRUE@	d30v/crt0.o
 
-@CONFIG_EPIPHANY_TRUE@am__append_26 = epiphany/crt0.o
-@CONFIG_EPIPHANY_TRUE@am__append_27 = epiphany/crt0.S
-@CONFIG_EPIPHANY_TRUE@am__append_28 = epiphany/libepiphany.a
-@CONFIG_FR30_TRUE@am__append_29 = fr30/crt0.o
-@CONFIG_FR30_TRUE@am__append_30 = fr30/crt0.s
-@CONFIG_FR30_TRUE@am__append_31 = fr30/libsim.a
-@CONFIG_FRV_TRUE@am__append_32 = frv/crt0.o
-@CONFIG_FRV_TRUE@am__append_33 = frv/crt0.S
-@CONFIG_FRV_TRUE@am__append_34 = frv/libsim.a
-@CONFIG_FT32_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_35 = \
+@CONFIG_EPIPHANY_TRUE@am__append_27 = epiphany/crt0.o
+@CONFIG_EPIPHANY_TRUE@am__append_28 = epiphany/crt0.S
+@CONFIG_EPIPHANY_TRUE@am__append_29 = epiphany/libepiphany.a
+@CONFIG_FR30_TRUE@am__append_30 = fr30/crt0.o
+@CONFIG_FR30_TRUE@am__append_31 = fr30/crt0.s
+@CONFIG_FR30_TRUE@am__append_32 = fr30/libsim.a
+@CONFIG_FRV_TRUE@am__append_33 = frv/crt0.o
+@CONFIG_FRV_TRUE@am__append_34 = frv/crt0.S
+@CONFIG_FRV_TRUE@am__append_35 = frv/libsim.a
+@CONFIG_FT32_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_36 = \
 @CONFIG_FT32_TRUE@@HAVE_MULTISUBDIR_FALSE@	ft32/sim.ld
 
-@CONFIG_FT32_TRUE@am__append_36 = ft32/crt0.o
-@CONFIG_FT32_TRUE@am__append_37 = ft32/crt0.S
-@CONFIG_FT32_TRUE@am__append_38 = ft32/libsim.a
-@CONFIG_I386_TRUE@am__append_39 = i386/cygmon.ld i386/cygmon-crt0.o
-@CONFIG_I386_TRUE@am__append_40 = i386/cygmon-crt0.S
-@CONFIG_I386_TRUE@am__append_41 = i386/libcygmon.a
-@CONFIG_I960_TRUE@am__append_42 = i960/crt0.o i960/mon960.ld
-@CONFIG_I960_TRUE@am__append_43 = \
+@CONFIG_FT32_TRUE@am__append_37 = ft32/crt0.o
+@CONFIG_FT32_TRUE@am__append_38 = ft32/crt0.S
+@CONFIG_FT32_TRUE@am__append_39 = ft32/libsim.a
+@CONFIG_I386_TRUE@am__append_40 = i386/cygmon.ld i386/cygmon-crt0.o
+@CONFIG_I386_TRUE@am__append_41 = i386/cygmon-crt0.S
+@CONFIG_I386_TRUE@am__append_42 = i386/libcygmon.a
+@CONFIG_I960_TRUE@am__append_43 = i960/crt0.o i960/mon960.ld
+@CONFIG_I960_TRUE@am__append_44 = \
 @CONFIG_I960_TRUE@	i960/crt0.c
 
-@CONFIG_I960_TRUE@am__append_44 = i960/libmon960.a
-@CONFIG_IQ2000_TRUE@am__append_45 = iq2000/crt0.o iq2000/sim.ld
-@CONFIG_IQ2000_TRUE@am__append_46 = iq2000/libeval.a
-@CONFIG_IQ2000_TRUE@am__append_47 = iq2000/crt0.S iq2000/test.o
-@CONFIG_IQ2000_TRUE@am__append_48 = iq2000/test
-@CONFIG_LIBNOSYS_TRUE@am__append_49 = libnosys/nosys.specs
-@CONFIG_LIBNOSYS_TRUE@am__append_50 = libnosys/libnosys.a
-@CONFIG_LM32_TRUE@am__append_51 = lm32/crt0.o lm32/sim.ld
-@CONFIG_LM32_TRUE@am__append_52 = lm32/libgloss.a
-@CONFIG_LM32_TRUE@am__append_53 = lm32/crt0.S
-@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_54 = \
+@CONFIG_I960_TRUE@am__append_45 = i960/libmon960.a
+@CONFIG_IQ2000_TRUE@am__append_46 = iq2000/crt0.o iq2000/sim.ld
+@CONFIG_IQ2000_TRUE@am__append_47 = iq2000/libeval.a
+@CONFIG_IQ2000_TRUE@am__append_48 = iq2000/crt0.S iq2000/test.o
+@CONFIG_IQ2000_TRUE@am__append_49 = iq2000/test
+@CONFIG_LIBNOSYS_TRUE@am__append_50 = libnosys/nosys.specs
+@CONFIG_LIBNOSYS_TRUE@am__append_51 = libnosys/libnosys.a
+@CONFIG_LM32_TRUE@am__append_52 = lm32/crt0.o lm32/sim.ld
+@CONFIG_LM32_TRUE@am__append_53 = lm32/libgloss.a
+@CONFIG_LM32_TRUE@am__append_54 = lm32/crt0.S
+@CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_55 = \
 @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@	m32r/eva.ld \
 @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@	m32r/eva-stub.ld \
 @CONFIG_M32R_TRUE@@HAVE_MULTISUBDIR_FALSE@	m32r/mon.specs
 
-@CONFIG_M32R_TRUE@am__append_55 = m32r/crt0.o m32r/m32r-lib.o \
+@CONFIG_M32R_TRUE@am__append_56 = m32r/crt0.o m32r/m32r-lib.o \
 @CONFIG_M32R_TRUE@	m32r/m32r-stub.o
-@CONFIG_M32R_TRUE@am__append_56 = m32r/crt0.S m32r/m32r-lib.c \
+@CONFIG_M32R_TRUE@am__append_57 = m32r/crt0.S m32r/m32r-lib.c \
 @CONFIG_M32R_TRUE@	m32r/m32r-stub.c
-@CONFIG_M32R_TRUE@am__append_57 = m32r/libgloss.a m32r/libmon.a
-@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_58 = \
+@CONFIG_M32R_TRUE@am__append_58 = m32r/libgloss.a m32r/libmon.a
+@CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@am__append_59 = \
 @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@	mcore/cmb.ld \
 @CONFIG_MCORE_TRUE@@MCORE_BUILD_ELF_TRUE@	mcore/cmb.specs
 
-@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_59 = \
+@CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@am__append_60 = \
 @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@	mcore/cmb.ld \
 @CONFIG_MCORE_TRUE@@MCORE_BUILD_PE_TRUE@	mcore/cmb.specs
 
-@CONFIG_MCORE_TRUE@am__append_60 = mcore/crt0.o
-@CONFIG_MCORE_TRUE@am__append_61 = mcore/crt0.S
-@CONFIG_MCORE_TRUE@am__append_62 = mcore/libsim.a mcore/libcmb.a
-@CONFIG_MICROBLAZE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_63 = \
+@CONFIG_MCORE_TRUE@am__append_61 = mcore/crt0.o
+@CONFIG_MCORE_TRUE@am__append_62 = mcore/crt0.S
+@CONFIG_MCORE_TRUE@am__append_63 = mcore/libsim.a mcore/libcmb.a
+@CONFIG_MICROBLAZE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_64 = \
 @CONFIG_MICROBLAZE_TRUE@@HAVE_MULTISUBDIR_FALSE@	microblaze/xilinx.ld
 
-@CONFIG_MICROBLAZE_TRUE@am__append_64 =  \
+@CONFIG_MICROBLAZE_TRUE@am__append_65 =  \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/elf-gloss-linux.specs \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/crt0.o microblaze/crt1.o \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/crt2.o microblaze/crt3.o \
@@ -242,7 +285,7 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7)
 @CONFIG_MICROBLAZE_TRUE@	microblaze/sim-crtinit.o \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/sim-pgcrtinit.o \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/linux-crt0.o
-@CONFIG_MICROBLAZE_TRUE@am__append_65 = \
+@CONFIG_MICROBLAZE_TRUE@am__append_66 = \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/crt0.S \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/crt1.S \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/crt2.S \
@@ -254,77 +297,77 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7)
 @CONFIG_MICROBLAZE_TRUE@	microblaze/sim-pgcrtinit.S \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/linux-crt0.S
 
-@CONFIG_MICROBLAZE_TRUE@am__append_66 = microblaze/libgloss.a \
+@CONFIG_MICROBLAZE_TRUE@am__append_67 = microblaze/libgloss.a \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/libgloss-linux.a
-@CONFIG_MN10200_TRUE@am__append_67 = mn10200/eval.ld mn10200/sim.ld \
+@CONFIG_MN10200_TRUE@am__append_68 = mn10200/eval.ld mn10200/sim.ld \
 @CONFIG_MN10200_TRUE@	mn10200/crt0.o
-@CONFIG_MN10200_TRUE@am__append_68 = mn10200/crt0.S
-@CONFIG_MN10200_TRUE@am__append_69 = mn10200/libeval.a
-@CONFIG_MN10200_TRUE@am__append_70 = mn10200/test
-@CONFIG_MN10300_TRUE@am__append_71 = \
+@CONFIG_MN10200_TRUE@am__append_69 = mn10200/crt0.S
+@CONFIG_MN10200_TRUE@am__append_70 = mn10200/libeval.a
+@CONFIG_MN10200_TRUE@am__append_71 = mn10200/test
+@CONFIG_MN10300_TRUE@am__append_72 = \
 @CONFIG_MN10300_TRUE@	mn10300/eval.ld \
 @CONFIG_MN10300_TRUE@	mn10300/sim.ld
 
-@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_72 = \
+@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_73 = \
 @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@	mn10300/asb2303.ld \
 @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@	mn10300/asb2305.ld
 
-@CONFIG_MN10300_TRUE@am__append_73 = \
+@CONFIG_MN10300_TRUE@am__append_74 = \
 @CONFIG_MN10300_TRUE@	mn10300/crt0.o \
 @CONFIG_MN10300_TRUE@	mn10300/crt0_cygmon.o \
 @CONFIG_MN10300_TRUE@	mn10300/crt0_redboot.o
 
-@CONFIG_MN10300_TRUE@am__append_74 = \
+@CONFIG_MN10300_TRUE@am__append_75 = \
 @CONFIG_MN10300_TRUE@	mn10300/crt0.S \
 @CONFIG_MN10300_TRUE@	mn10300/crt0_cygmon.S \
 @CONFIG_MN10300_TRUE@	mn10300/crt0_redboot.S
 
-@CONFIG_MN10300_TRUE@am__append_75 = mn10300/libeval.a
-@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_76 = mn10300/libcygmon.a
-@CONFIG_MN10300_TRUE@am__append_77 = mn10300/test
-@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_78 = \
+@CONFIG_MN10300_TRUE@am__append_76 = mn10300/libeval.a
+@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am__append_77 = mn10300/libcygmon.a
+@CONFIG_MN10300_TRUE@am__append_78 = mn10300/test
+@CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@am__append_79 = \
 @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@	moxie/moxie-elf-common.ld \
 @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@	moxie/qemu.ld \
 @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@	moxie/sim.ld \
 @CONFIG_MOXIE_TRUE@@HAVE_MULTISUBDIR_FALSE@	moxie/moxiebox.ld
 
-@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_79 = moxie/crt0.o
-@CONFIG_MOXIE_TRUE@am__append_80 = \
+@CONFIG_MOXIE_TRUE@@MOXIE_BUILD_CRT0_TRUE@am__append_80 = moxie/crt0.o
+@CONFIG_MOXIE_TRUE@am__append_81 = \
 @CONFIG_MOXIE_TRUE@	moxie/crt0.S
 
-@CONFIG_MOXIE_TRUE@am__append_81 = moxie/libsim.a moxie/libqemu.a
-@CONFIG_MSP430_TRUE@am__append_82 = msp430/msp430-sim.ld \
+@CONFIG_MOXIE_TRUE@am__append_82 = moxie/libsim.a moxie/libqemu.a
+@CONFIG_MSP430_TRUE@am__append_83 = msp430/msp430-sim.ld \
 @CONFIG_MSP430_TRUE@	msp430/msp430xl-sim.ld \
 @CONFIG_MSP430_TRUE@	msp430/intr_vectors.ld msp430/gcrt0.o \
 @CONFIG_MSP430_TRUE@	msp430/crt0.o
-@CONFIG_MSP430_TRUE@am__append_83 = \
+@CONFIG_MSP430_TRUE@am__append_84 = \
 @CONFIG_MSP430_TRUE@	msp430/gcrt0.S \
 @CONFIG_MSP430_TRUE@	msp430/crt0.S
 
-@CONFIG_MSP430_TRUE@am__append_84 = msp430/libsim.a msp430/libnosys.a \
+@CONFIG_MSP430_TRUE@am__append_85 = msp430/libsim.a msp430/libnosys.a \
 @CONFIG_MSP430_TRUE@	msp430/libcrt.a
-@CONFIG_NDS32_TRUE@am__append_85 = \
+@CONFIG_NDS32_TRUE@am__append_86 = \
 @CONFIG_NDS32_TRUE@	nds32/crt0.o \
 @CONFIG_NDS32_TRUE@	nds32/crt1.o
 
-@CONFIG_NDS32_TRUE@am__append_86 = \
+@CONFIG_NDS32_TRUE@am__append_87 = \
 @CONFIG_NDS32_TRUE@	nds32/crt0.S \
 @CONFIG_NDS32_TRUE@	nds32/crt1.S
 
-@CONFIG_NDS32_TRUE@am__append_87 = nds32/libgloss.a
-@CONFIG_NIOS2_TRUE@am__append_88 = \
+@CONFIG_NDS32_TRUE@am__append_88 = nds32/libgloss.a
+@CONFIG_NIOS2_TRUE@am__append_89 = \
 @CONFIG_NIOS2_TRUE@	nios2/qemu-hosted.ld
 
-@CONFIG_NIOS2_TRUE@am__append_89 = nios2/libnios2.a
-@CONFIG_OR1K_TRUE@am__append_90 = or1k/crt0.o
-@CONFIG_OR1K_TRUE@am__append_91 = or1k/crt0.S
-@CONFIG_OR1K_TRUE@am__append_92 = \
+@CONFIG_NIOS2_TRUE@am__append_90 = nios2/libnios2.a
+@CONFIG_OR1K_TRUE@am__append_91 = or1k/crt0.o
+@CONFIG_OR1K_TRUE@am__append_92 = or1k/crt0.S
+@CONFIG_OR1K_TRUE@am__append_93 = \
 @CONFIG_OR1K_TRUE@	or1k/include/or1k-asm.h \
 @CONFIG_OR1K_TRUE@	or1k/include/or1k-nop.h \
 @CONFIG_OR1K_TRUE@	or1k/include/or1k-sprs.h \
 @CONFIG_OR1K_TRUE@	or1k/include/or1k-support.h
 
-@CONFIG_OR1K_TRUE@am__append_93 = or1k/libor1k.a or1k/libboard-atlys.a \
+@CONFIG_OR1K_TRUE@am__append_94 = or1k/libor1k.a or1k/libboard-atlys.a \
 @CONFIG_OR1K_TRUE@	or1k/libboard-de0_nano.a \
 @CONFIG_OR1K_TRUE@	or1k/libboard-ml501.a \
 @CONFIG_OR1K_TRUE@	or1k/libboard-optimsoc.a \
@@ -333,49 +376,49 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7)
 @CONFIG_OR1K_TRUE@	or1k/libboard-ordb1a3pe1500.a \
 @CONFIG_OR1K_TRUE@	or1k/libboard-ordb2a.a \
 @CONFIG_OR1K_TRUE@	or1k/libboard-orpsocrefdesign.a
-@CONFIG_PRU_TRUE@am__append_94 = \
+@CONFIG_PRU_TRUE@am__append_95 = \
 @CONFIG_PRU_TRUE@	pru/crt0.o \
 @CONFIG_PRU_TRUE@	pru/crt0-minrt.o
 
-@CONFIG_PRU_TRUE@am__append_95 = \
+@CONFIG_PRU_TRUE@am__append_96 = \
 @CONFIG_PRU_TRUE@	pru/crt0.S \
 @CONFIG_PRU_TRUE@	pru/crt0-minrt.S
 
-@CONFIG_PRU_TRUE@am__append_96 = pru/libgloss.a
-@CONFIG_RISCV_TRUE@am__append_97 = \
+@CONFIG_PRU_TRUE@am__append_97 = pru/libgloss.a
+@CONFIG_RISCV_TRUE@am__append_98 = \
 @CONFIG_RISCV_TRUE@	riscv/nano.specs \
 @CONFIG_RISCV_TRUE@	riscv/sim.specs \
 @CONFIG_RISCV_TRUE@	riscv/semihost.specs \
 @CONFIG_RISCV_TRUE@	riscv/crt0.o
 
-@CONFIG_RISCV_TRUE@am__append_98 = riscv/libgloss.a riscv/libsim.a \
+@CONFIG_RISCV_TRUE@am__append_99 = riscv/libgloss.a riscv/libsim.a \
 @CONFIG_RISCV_TRUE@	riscv/libsemihost.a
-@CONFIG_RL78_TRUE@am__append_99 = rl78/rl78.ld rl78/rl78-sim.ld \
+@CONFIG_RL78_TRUE@am__append_100 = rl78/rl78.ld rl78/rl78-sim.ld \
 @CONFIG_RL78_TRUE@	rl78/gcrt0.o rl78/crt0.o rl78/crtn.o
-@CONFIG_RL78_TRUE@am__append_100 = \
+@CONFIG_RL78_TRUE@am__append_101 = \
 @CONFIG_RL78_TRUE@	rl78/gcrt0.S \
 @CONFIG_RL78_TRUE@	rl78/crt0.S \
 @CONFIG_RL78_TRUE@	rl78/crtn.S
 
-@CONFIG_RL78_TRUE@am__append_101 = rl78/libsim.a
-@CONFIG_RX_TRUE@am__append_102 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \
+@CONFIG_RL78_TRUE@am__append_102 = rl78/libsim.a
+@CONFIG_RX_TRUE@am__append_103 = rx/rx.ld rx/rx-sim.ld rx/gcrt0.o \
 @CONFIG_RX_TRUE@	rx/crt0.o rx/crtn.o
-@CONFIG_RX_TRUE@am__append_103 = \
+@CONFIG_RX_TRUE@am__append_104 = \
 @CONFIG_RX_TRUE@	rx/gcrt0.S \
 @CONFIG_RX_TRUE@	rx/crt0.S \
 @CONFIG_RX_TRUE@	rx/crtn.S
 
-@CONFIG_RX_TRUE@am__append_104 = rx/libsim.a
-@CONFIG_SPARC_TRUE@am__append_105 = sparc/crt0.o sparc/erc32-crt0.o
-@CONFIG_SPARC_TRUE@am__append_106 = sparc/crt0.S sparc/erc32-crt0.S
-@CONFIG_SPARC_TRUE@am__append_107 = sparc/liberc32.a
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_108 =  \
+@CONFIG_RX_TRUE@am__append_105 = rx/libsim.a
+@CONFIG_SPARC_TRUE@am__append_106 = sparc/crt0.o sparc/erc32-crt0.o
+@CONFIG_SPARC_TRUE@am__append_107 = sparc/crt0.S sparc/erc32-crt0.S
+@CONFIG_SPARC_TRUE@am__append_108 = sparc/liberc32.a
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_109 =  \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@	sparc/cygmon.ld \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@	sparc/cygmon-crt0.o \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@	sparc/cygmon-salib.o
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_109 = sparc/cygmon-crt0.S
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_110 = sparc/libcygmon.a
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_111 = \
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_110 = sparc/cygmon-crt0.S
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__append_111 = sparc/libcygmon.a
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_112 = \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/ex930.ld \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/ex931.ld \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/ex934.ld \
@@ -383,64 +426,64 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7)
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/elfsim.ld \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/traps.o
 
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_112 = \
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__append_113 = \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/libslite930.a \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/libslite931.a \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/libslite934.a \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/libslite86x.a
 
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_113 =  \
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_114 =  \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@	sparc/tsc701.ld \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@	sparc/crt0-701.S
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_114 = sparc/crt0-701.S
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_115 = sparc/libsplet701.a
-@CONFIG_SPARC_TRUE@am__append_116 = sparc/erc32-test sparc/ex930-test \
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_115 = sparc/crt0-701.S
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__append_116 = sparc/libsplet701.a
+@CONFIG_SPARC_TRUE@am__append_117 = sparc/erc32-test sparc/ex930-test \
 @CONFIG_SPARC_TRUE@	sparc/ex931-test sparc/ex934-test
-@CONFIG_SPARC_LEON_TRUE@am__append_117 = sparc_leon/libleonbare.a \
+@CONFIG_SPARC_LEON_TRUE@am__append_118 = sparc_leon/libleonbare.a \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/liblbthread.a \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/libsmall.a
-@CONFIG_SPARC_LEON_TRUE@am__append_118 = \
+@CONFIG_SPARC_LEON_TRUE@am__append_119 = \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/crt0.o \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/pnpinit.o \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/pnpinit_simple.o \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/locore_svt.o \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/locore_mvt.o
 
-@CONFIG_SPARC_LEON_TRUE@am__append_119 = \
+@CONFIG_SPARC_LEON_TRUE@am__append_120 = \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/crt0.S \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/pnpinit.c \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/pnpinit_simple.c \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/locore_svt.S \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/locore_mvt.S
 
-@CONFIG_TIC6X_TRUE@am__append_120 = tic6x/crt0.o
-@CONFIG_TIC6X_TRUE@am__append_121 = tic6x/crt0.S
-@CONFIG_TIC6X_TRUE@am__append_122 = tic6x/libsim.a
-@CONFIG_V850_TRUE@am__append_123 = v850/crt0.o
-@CONFIG_V850_TRUE@am__append_124 = v850/crt0.S
-@CONFIG_V850_TRUE@am__append_125 = v850/libsim.a
-@CONFIG_VISIUM_TRUE@am__append_126 = visium/crt0.o
-@CONFIG_VISIUM_TRUE@am__append_127 = visium/crt0.S
-@CONFIG_VISIUM_TRUE@am__append_128 = visium/libserial.a \
+@CONFIG_TIC6X_TRUE@am__append_121 = tic6x/crt0.o
+@CONFIG_TIC6X_TRUE@am__append_122 = tic6x/crt0.S
+@CONFIG_TIC6X_TRUE@am__append_123 = tic6x/libsim.a
+@CONFIG_V850_TRUE@am__append_124 = v850/crt0.o
+@CONFIG_V850_TRUE@am__append_125 = v850/crt0.S
+@CONFIG_V850_TRUE@am__append_126 = v850/libsim.a
+@CONFIG_VISIUM_TRUE@am__append_127 = visium/crt0.o
+@CONFIG_VISIUM_TRUE@am__append_128 = visium/crt0.S
+@CONFIG_VISIUM_TRUE@am__append_129 = visium/libserial.a \
 @CONFIG_VISIUM_TRUE@	visium/libsim.a visium/libdebug.a
-@CONFIG_WINCE_TRUE@am__append_129 = $(gdbdir)
-@CONFIG_WINCE_TRUE@am__append_130 = wince/stub.exe
-@CONFIG_XSTORMY16_TRUE@am__append_131 = xstormy16/crt0.o \
+@CONFIG_WINCE_TRUE@am__append_130 = $(gdbdir)
+@CONFIG_WINCE_TRUE@am__append_131 = wince/stub.exe
+@CONFIG_XSTORMY16_TRUE@am__append_132 = xstormy16/crt0.o \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/crti.o xstormy16/crtn.o \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/sim_high.ld \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/sim_rom.ld \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/eva_app.ld \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/eva_stub.hex
-@CONFIG_XSTORMY16_TRUE@am__append_132 = \
+@CONFIG_XSTORMY16_TRUE@am__append_133 = \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/crt0.s \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/crti.s \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/crtn.s
 
-@CONFIG_XSTORMY16_TRUE@am__append_133 = xstormy16/libsim.a \
+@CONFIG_XSTORMY16_TRUE@am__append_134 = xstormy16/libsim.a \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/libeva_app.a
-@CONFIG_XSTORMY16_TRUE@am__append_134 = xstormy16/eva_stub.elf
-@CONFIG_XSTORMY16_TRUE@am__append_135 = xstormy16/eva_stub.hex
-@CONFIG_XTENSA_TRUE@am__append_136 = \
+@CONFIG_XSTORMY16_TRUE@am__append_135 = xstormy16/eva_stub.elf
+@CONFIG_XSTORMY16_TRUE@am__append_136 = xstormy16/eva_stub.hex
+@CONFIG_XTENSA_TRUE@am__append_137 = \
 @CONFIG_XTENSA_TRUE@	xtensa/default.specs \
 @CONFIG_XTENSA_TRUE@	xtensa/nano.specs \
 @CONFIG_XTENSA_TRUE@	xtensa/sim.elf.specs \
@@ -449,29 +492,29 @@ multilibtool_PROGRAMS = $(am__EXEEXT_7)
 @CONFIG_XTENSA_TRUE@	xtensa/sys.openocd.specs \
 @CONFIG_XTENSA_TRUE@	xtensa/crt0.o
 
-@CONFIG_XTENSA_TRUE@am__append_137 = \
+@CONFIG_XTENSA_TRUE@am__append_138 = \
 @CONFIG_XTENSA_TRUE@	xtensa/crt0.S \
 @CONFIG_XTENSA_TRUE@	xtensa/crt1-sim.S \
 @CONFIG_XTENSA_TRUE@	xtensa/crt1-boards.S
 
-@CONFIG_XTENSA_TRUE@am__append_138 = xtensa/libgloss.a
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_139 = \
+@CONFIG_XTENSA_TRUE@am__append_139 = xtensa/libgloss.a
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/app.elf.ld \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/crt1-sim.o \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/crt1-boards.o
 
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_140 = xtensa/libsys_qemu.a \
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_141 = xtensa/libsys_qemu.a \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/libsys_openocd.a
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_141 = xtensa/boards/esp32/memory.elf.ld
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_142 = xtensa/boards/esp32/board.c
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_143 = -I$(srcdir)/xtensa/boards/esp32/include
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_142 = xtensa/boards/esp32/memory.elf.ld
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_143 = xtensa/boards/esp32/board.c
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_144 = -I$(srcdir)/xtensa/boards/esp32/include
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_145 = -I$(srcdir)/xtensa/boards/esp32/include
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_146 = xtensa/boards/esp32s3/memory.elf.ld
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_147 = xtensa/boards/esp32s3/board.c
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_148 = -I$(srcdir)/xtensa/boards/esp32s3/include
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_146 = -I$(srcdir)/xtensa/boards/esp32/include
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_147 = xtensa/boards/esp32s3/memory.elf.ld
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_148 = xtensa/boards/esp32s3/board.c
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_149 = -I$(srcdir)/xtensa/boards/esp32s3/include
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_150 = -I$(srcdir)/xtensa/boards/esp32s3/include
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__append_151 = -I$(srcdir)/xtensa/boards/esp32s3/include
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
@@ -553,6 +596,47 @@ am__dirstamp = $(am__leading_dot)dirstamp
 @CONFIG_AARCH64_TRUE@	aarch64/aarch64_librdimon_a-syscalls.$(OBJEXT) \
 @CONFIG_AARCH64_TRUE@	aarch64/aarch64_librdimon_a-truncate.$(OBJEXT)
 aarch64_librdimon_a_OBJECTS = $(am_aarch64_librdimon_a_OBJECTS)
+arc_libemsdp_uart_a_AR = $(AR) $(ARFLAGS)
+arc_libemsdp_uart_a_LIBADD =
+@CONFIG_ARC_TRUE@am_arc_libemsdp_uart_a_OBJECTS = arc/arc_libemsdp_uart_a-emsdp-uart-setup.$(OBJEXT)
+arc_libemsdp_uart_a_OBJECTS = $(am_arc_libemsdp_uart_a_OBJECTS)
+arc_libemsk_uart_a_AR = $(AR) $(ARFLAGS)
+arc_libemsk_uart_a_LIBADD =
+@CONFIG_ARC_TRUE@am_arc_libemsk_uart_a_OBJECTS = arc/arc_libemsk_uart_a-emsk-uart-setup.$(OBJEXT)
+arc_libemsk_uart_a_OBJECTS = $(am_arc_libemsk_uart_a_OBJECTS)
+arc_libhl_a_AR = $(AR) $(ARFLAGS)
+arc_libhl_a_LIBADD =
+@CONFIG_ARC_TRUE@am_arc_libhl_a_OBJECTS =  \
+@CONFIG_ARC_TRUE@	arc/arc_libhl_a-arc-timer.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc_libhl_a-hl-stub.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc_libhl_a-hl-setup.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc_libhl_a-libcfunc.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc_libhl_a-sbrk.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc_libhl_a-mcount.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_gw.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_api.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_open.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_close.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_read.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_write.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_lseek.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_unlink.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_isatty.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_fstat.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_clock.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_gettimeofday.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_argc.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_argv.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/hl/arc_libhl_a-hl_exit.$(OBJEXT)
+arc_libhl_a_OBJECTS = $(am_arc_libhl_a_OBJECTS)
+arc_libhsdk_uart_a_AR = $(AR) $(ARFLAGS)
+arc_libhsdk_uart_a_LIBADD =
+@CONFIG_ARC_TRUE@am_arc_libhsdk_uart_a_OBJECTS = arc/arc_libhsdk_uart_a-hsdk-uart-setup.$(OBJEXT)
+arc_libhsdk_uart_a_OBJECTS = $(am_arc_libhsdk_uart_a_OBJECTS)
+arc_libiotdk_uart_a_AR = $(AR) $(ARFLAGS)
+arc_libiotdk_uart_a_LIBADD =
+@CONFIG_ARC_TRUE@am_arc_libiotdk_uart_a_OBJECTS = arc/arc_libiotdk_uart_a-iotdk-uart-setup.$(OBJEXT)
+arc_libiotdk_uart_a_OBJECTS = $(am_arc_libiotdk_uart_a_OBJECTS)
 arc_libnsim_a_AR = $(AR) $(ARFLAGS)
 arc_libnsim_a_LIBADD =
 @CONFIG_ARC_TRUE@am_arc_libnsim_a_OBJECTS = arc/libcfunc.$(OBJEXT) \
@@ -560,6 +644,14 @@ arc_libnsim_a_LIBADD =
 @CONFIG_ARC_TRUE@	arc/nsim-syscalls.$(OBJEXT) \
 @CONFIG_ARC_TRUE@	arc/sbrk.$(OBJEXT)
 arc_libnsim_a_OBJECTS = $(am_arc_libnsim_a_OBJECTS)
+arc_libuart_8250_a_AR = $(AR) $(ARFLAGS)
+arc_libuart_8250_a_LIBADD =
+@CONFIG_ARC_TRUE@am_arc_libuart_8250_a_OBJECTS =  \
+@CONFIG_ARC_TRUE@	arc/arc_libuart_8250_a-uart-8250.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc_libuart_8250_a-uart-8250-stub.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc_libuart_8250_a-sbrk.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc_libuart_8250_a-mcount.$(OBJEXT)
+arc_libuart_8250_a_OBJECTS = $(am_arc_libuart_8250_a_OBJECTS)
 arm_libgloss_linux_a_AR = $(AR) $(ARFLAGS)
 arm_libgloss_linux_a_LIBADD =
 @CONFIG_ARM_TRUE@am_arm_libgloss_linux_a_OBJECTS =  \
@@ -789,24 +881,27 @@ libnosys_libnosys_a_LIBADD =
 libnosys_libnosys_a_OBJECTS = $(am_libnosys_libnosys_a_OBJECTS)
 libobjs_a_AR = $(AR) $(ARFLAGS)
 libobjs_a_LIBADD =
-@CONFIG_BFIN_TRUE@am__objects_3 = bfin/crt0.$(OBJEXT) \
+@CONFIG_ARC_TRUE@am__objects_3 = arc/crt0.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/gcrt0.$(OBJEXT) \
+@CONFIG_ARC_TRUE@	arc/arc-main-helper.$(OBJEXT)
+@CONFIG_BFIN_TRUE@am__objects_4 = bfin/crt0.$(OBJEXT) \
 @CONFIG_BFIN_TRUE@	bfin/basiccrt.$(OBJEXT)
-@CONFIG_CR16_TRUE@am__objects_4 = cr16/crti.$(OBJEXT) \
+@CONFIG_CR16_TRUE@am__objects_5 = cr16/crti.$(OBJEXT) \
 @CONFIG_CR16_TRUE@	cr16/crtn.$(OBJEXT) cr16/crt1.$(OBJEXT)
-@CONFIG_CSKY_TRUE@am__objects_5 = csky/crt0.$(OBJEXT)
-@CONFIG_EPIPHANY_TRUE@am__objects_6 = epiphany/crt0.$(OBJEXT)
-@CONFIG_FR30_TRUE@am__objects_7 = fr30/crt0.$(OBJEXT)
-@CONFIG_FRV_TRUE@am__objects_8 = frv/crt0.$(OBJEXT)
-@CONFIG_FT32_TRUE@am__objects_9 = ft32/crt0.$(OBJEXT)
-@CONFIG_I386_TRUE@am__objects_10 = i386/cygmon-crt0.$(OBJEXT)
-@CONFIG_I960_TRUE@am__objects_11 = i960/crt0.$(OBJEXT)
-@CONFIG_IQ2000_TRUE@am__objects_12 = iq2000/crt0.$(OBJEXT)
-@CONFIG_LM32_TRUE@am__objects_13 = lm32/crt0.$(OBJEXT)
-@CONFIG_M32R_TRUE@am__objects_14 = m32r/crt0.$(OBJEXT) \
+@CONFIG_CSKY_TRUE@am__objects_6 = csky/crt0.$(OBJEXT)
+@CONFIG_EPIPHANY_TRUE@am__objects_7 = epiphany/crt0.$(OBJEXT)
+@CONFIG_FR30_TRUE@am__objects_8 = fr30/crt0.$(OBJEXT)
+@CONFIG_FRV_TRUE@am__objects_9 = frv/crt0.$(OBJEXT)
+@CONFIG_FT32_TRUE@am__objects_10 = ft32/crt0.$(OBJEXT)
+@CONFIG_I386_TRUE@am__objects_11 = i386/cygmon-crt0.$(OBJEXT)
+@CONFIG_I960_TRUE@am__objects_12 = i960/crt0.$(OBJEXT)
+@CONFIG_IQ2000_TRUE@am__objects_13 = iq2000/crt0.$(OBJEXT)
+@CONFIG_LM32_TRUE@am__objects_14 = lm32/crt0.$(OBJEXT)
+@CONFIG_M32R_TRUE@am__objects_15 = m32r/crt0.$(OBJEXT) \
 @CONFIG_M32R_TRUE@	m32r/m32r-lib.$(OBJEXT) \
 @CONFIG_M32R_TRUE@	m32r/m32r-stub.$(OBJEXT)
-@CONFIG_MCORE_TRUE@am__objects_15 = mcore/crt0.$(OBJEXT)
-@CONFIG_MICROBLAZE_TRUE@am__objects_16 = microblaze/crt0.$(OBJEXT) \
+@CONFIG_MCORE_TRUE@am__objects_16 = mcore/crt0.$(OBJEXT)
+@CONFIG_MICROBLAZE_TRUE@am__objects_17 = microblaze/crt0.$(OBJEXT) \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/crt1.$(OBJEXT) \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/crt2.$(OBJEXT) \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/crt3.$(OBJEXT) \
@@ -816,38 +911,38 @@ libobjs_a_LIBADD =
 @CONFIG_MICROBLAZE_TRUE@	microblaze/sim-crtinit.$(OBJEXT) \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/sim-pgcrtinit.$(OBJEXT) \
 @CONFIG_MICROBLAZE_TRUE@	microblaze/linux-crt0.$(OBJEXT)
-@CONFIG_MN10200_TRUE@am__objects_17 = mn10200/crt0.$(OBJEXT)
-@CONFIG_MN10300_TRUE@am__objects_18 = mn10300/crt0.$(OBJEXT) \
+@CONFIG_MN10200_TRUE@am__objects_18 = mn10200/crt0.$(OBJEXT)
+@CONFIG_MN10300_TRUE@am__objects_19 = mn10300/crt0.$(OBJEXT) \
 @CONFIG_MN10300_TRUE@	mn10300/crt0_cygmon.$(OBJEXT) \
 @CONFIG_MN10300_TRUE@	mn10300/crt0_redboot.$(OBJEXT)
-@CONFIG_MOXIE_TRUE@am__objects_19 = moxie/crt0.$(OBJEXT)
-@CONFIG_MSP430_TRUE@am__objects_20 = msp430/gcrt0.$(OBJEXT) \
+@CONFIG_MOXIE_TRUE@am__objects_20 = moxie/crt0.$(OBJEXT)
+@CONFIG_MSP430_TRUE@am__objects_21 = msp430/gcrt0.$(OBJEXT) \
 @CONFIG_MSP430_TRUE@	msp430/crt0.$(OBJEXT)
-@CONFIG_NDS32_TRUE@am__objects_21 = nds32/crt0.$(OBJEXT) \
+@CONFIG_NDS32_TRUE@am__objects_22 = nds32/crt0.$(OBJEXT) \
 @CONFIG_NDS32_TRUE@	nds32/crt1.$(OBJEXT)
-@CONFIG_OR1K_TRUE@am__objects_22 = or1k/crt0.$(OBJEXT)
-@CONFIG_PRU_TRUE@am__objects_23 = pru/crt0.$(OBJEXT) \
+@CONFIG_OR1K_TRUE@am__objects_23 = or1k/crt0.$(OBJEXT)
+@CONFIG_PRU_TRUE@am__objects_24 = pru/crt0.$(OBJEXT) \
 @CONFIG_PRU_TRUE@	pru/crt0-minrt.$(OBJEXT)
-@CONFIG_RL78_TRUE@am__objects_24 = rl78/gcrt0.$(OBJEXT) \
+@CONFIG_RL78_TRUE@am__objects_25 = rl78/gcrt0.$(OBJEXT) \
 @CONFIG_RL78_TRUE@	rl78/crt0.$(OBJEXT) rl78/crtn.$(OBJEXT)
-@CONFIG_RX_TRUE@am__objects_25 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \
+@CONFIG_RX_TRUE@am__objects_26 = rx/gcrt0.$(OBJEXT) rx/crt0.$(OBJEXT) \
 @CONFIG_RX_TRUE@	rx/crtn.$(OBJEXT)
-@CONFIG_SPARC_TRUE@am__objects_26 = sparc/crt0.$(OBJEXT) \
+@CONFIG_SPARC_TRUE@am__objects_27 = sparc/crt0.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	sparc/erc32-crt0.$(OBJEXT)
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_27 = sparc/cygmon-crt0.$(OBJEXT)
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_28 = sparc/crt0-701.$(OBJEXT)
-@CONFIG_SPARC_LEON_TRUE@am__objects_29 = sparc_leon/crt0.$(OBJEXT) \
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_CYGMON_TRUE@am__objects_28 = sparc/cygmon-crt0.$(OBJEXT)
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SPLET_TRUE@am__objects_29 = sparc/crt0-701.$(OBJEXT)
+@CONFIG_SPARC_LEON_TRUE@am__objects_30 = sparc_leon/crt0.$(OBJEXT) \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/pnpinit.$(OBJEXT) \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/pnpinit_simple.$(OBJEXT) \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/locore_svt.$(OBJEXT) \
 @CONFIG_SPARC_LEON_TRUE@	sparc_leon/locore_mvt.$(OBJEXT)
-@CONFIG_TIC6X_TRUE@am__objects_30 = tic6x/crt0.$(OBJEXT)
-@CONFIG_V850_TRUE@am__objects_31 = v850/crt0.$(OBJEXT)
-@CONFIG_VISIUM_TRUE@am__objects_32 = visium/crt0.$(OBJEXT)
-@CONFIG_XSTORMY16_TRUE@am__objects_33 = xstormy16/crt0.$(OBJEXT) \
+@CONFIG_TIC6X_TRUE@am__objects_31 = tic6x/crt0.$(OBJEXT)
+@CONFIG_V850_TRUE@am__objects_32 = v850/crt0.$(OBJEXT)
+@CONFIG_VISIUM_TRUE@am__objects_33 = visium/crt0.$(OBJEXT)
+@CONFIG_XSTORMY16_TRUE@am__objects_34 = xstormy16/crt0.$(OBJEXT) \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/crti.$(OBJEXT) \
 @CONFIG_XSTORMY16_TRUE@	xstormy16/crtn.$(OBJEXT)
-@CONFIG_XTENSA_TRUE@am__objects_34 = xtensa/crt0.$(OBJEXT) \
+@CONFIG_XTENSA_TRUE@am__objects_35 = xtensa/crt0.$(OBJEXT) \
 @CONFIG_XTENSA_TRUE@	xtensa/crt1-sim.$(OBJEXT) \
 @CONFIG_XTENSA_TRUE@	xtensa/crt1-boards.$(OBJEXT)
 am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \
@@ -860,7 +955,8 @@ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \
 	$(am__objects_23) $(am__objects_24) $(am__objects_25) \
 	$(am__objects_26) $(am__objects_27) $(am__objects_28) \
 	$(am__objects_29) $(am__objects_30) $(am__objects_31) \
-	$(am__objects_32) $(am__objects_33) $(am__objects_34)
+	$(am__objects_32) $(am__objects_33) $(am__objects_34) \
+	$(am__objects_35)
 libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS)
 lm32_libgloss_a_AR = $(AR) $(ARFLAGS)
 lm32_libgloss_a_LIBADD =
@@ -869,7 +965,7 @@ lm32_libgloss_a_LIBADD =
 lm32_libgloss_a_OBJECTS = $(am_lm32_libgloss_a_OBJECTS)
 m32r_libgloss_a_AR = $(AR) $(ARFLAGS)
 m32r_libgloss_a_LIBADD =
-@CONFIG_M32R_TRUE@am__objects_35 = m32r/chmod.$(OBJEXT) \
+@CONFIG_M32R_TRUE@am__objects_36 = m32r/chmod.$(OBJEXT) \
 @CONFIG_M32R_TRUE@	m32r/close.$(OBJEXT) m32r/exit.$(OBJEXT) \
 @CONFIG_M32R_TRUE@	m32r/fstat.$(OBJEXT) m32r/getpid.$(OBJEXT) \
 @CONFIG_M32R_TRUE@	m32r/isatty.$(OBJEXT) m32r/kill.$(OBJEXT) \
@@ -879,16 +975,16 @@ m32r_libgloss_a_LIBADD =
 @CONFIG_M32R_TRUE@	m32r/unlink.$(OBJEXT) m32r/utime.$(OBJEXT) \
 @CONFIG_M32R_TRUE@	m32r/write.$(OBJEXT)
 @CONFIG_M32R_TRUE@am_m32r_libgloss_a_OBJECTS = m32r/trap0.$(OBJEXT) \
-@CONFIG_M32R_TRUE@	$(am__objects_35)
+@CONFIG_M32R_TRUE@	$(am__objects_36)
 m32r_libgloss_a_OBJECTS = $(am_m32r_libgloss_a_OBJECTS)
 m32r_libmon_a_AR = $(AR) $(ARFLAGS)
 m32r_libmon_a_LIBADD =
 @CONFIG_M32R_TRUE@am_m32r_libmon_a_OBJECTS = m32r/trapmon0.$(OBJEXT) \
-@CONFIG_M32R_TRUE@	$(am__objects_35)
+@CONFIG_M32R_TRUE@	$(am__objects_36)
 m32r_libmon_a_OBJECTS = $(am_m32r_libmon_a_OBJECTS)
 mcore_libcmb_a_AR = $(AR) $(ARFLAGS)
 mcore_libcmb_a_LIBADD =
-@CONFIG_MCORE_TRUE@am__objects_36 = mcore/fstat.$(OBJEXT) \
+@CONFIG_MCORE_TRUE@am__objects_37 = mcore/fstat.$(OBJEXT) \
 @CONFIG_MCORE_TRUE@	mcore/getpid.$(OBJEXT) isatty.$(OBJEXT) \
 @CONFIG_MCORE_TRUE@	mcore/kill.$(OBJEXT) mcore/raise.$(OBJEXT) \
 @CONFIG_MCORE_TRUE@	mcore/putnum.$(OBJEXT) mcore/stat.$(OBJEXT) \
@@ -900,12 +996,12 @@ mcore_libcmb_a_LIBADD =
 @CONFIG_MCORE_TRUE@	mcore/cmb-exit.$(OBJEXT) \
 @CONFIG_MCORE_TRUE@	mcore/cmb-inbyte.$(OBJEXT) \
 @CONFIG_MCORE_TRUE@	mcore/cmb-outbyte.$(OBJEXT) \
-@CONFIG_MCORE_TRUE@	$(am__objects_36)
+@CONFIG_MCORE_TRUE@	$(am__objects_37)
 mcore_libcmb_a_OBJECTS = $(am_mcore_libcmb_a_OBJECTS)
 mcore_libsim_a_AR = $(AR) $(ARFLAGS)
 mcore_libsim_a_LIBADD =
 @CONFIG_MCORE_TRUE@am_mcore_libsim_a_OBJECTS =  \
-@CONFIG_MCORE_TRUE@	mcore/syscalls.$(OBJEXT) $(am__objects_36)
+@CONFIG_MCORE_TRUE@	mcore/syscalls.$(OBJEXT) $(am__objects_37)
 mcore_libsim_a_OBJECTS = $(am_mcore_libsim_a_OBJECTS)
 microblaze_libgloss_linux_a_AR = $(AR) $(ARFLAGS)
 microblaze_libgloss_linux_a_LIBADD =
@@ -962,7 +1058,7 @@ mn10200_libeval_a_LIBADD =
 mn10200_libeval_a_OBJECTS = $(am_mn10200_libeval_a_OBJECTS)
 mn10300_libcygmon_a_AR = $(AR) $(ARFLAGS)
 mn10300_libcygmon_a_LIBADD =
-@CONFIG_MN10300_TRUE@am__objects_37 = mn10300/_exit.$(OBJEXT) \
+@CONFIG_MN10300_TRUE@am__objects_38 = mn10300/_exit.$(OBJEXT) \
 @CONFIG_MN10300_TRUE@	mn10300/access.$(OBJEXT) \
 @CONFIG_MN10300_TRUE@	mn10300/chmod.$(OBJEXT) \
 @CONFIG_MN10300_TRUE@	mn10300/close.$(OBJEXT) \
@@ -981,12 +1077,12 @@ mn10300_libcygmon_a_LIBADD =
 @CONFIG_MN10300_TRUE@	mn10300/unlink.$(OBJEXT) \
 @CONFIG_MN10300_TRUE@	mn10300/utime.$(OBJEXT) \
 @CONFIG_MN10300_TRUE@	mn10300/write.$(OBJEXT)
-@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_37) \
+@CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@am_mn10300_libcygmon_a_OBJECTS = $(am__objects_38) \
 @CONFIG_MN10300_TRUE@@MN10300_BUILD_LIBCYGMON_TRUE@	mn10300/cygmon.$(OBJEXT)
 mn10300_libcygmon_a_OBJECTS = $(am_mn10300_libcygmon_a_OBJECTS)
 mn10300_libeval_a_AR = $(AR) $(ARFLAGS)
 mn10300_libeval_a_LIBADD =
-@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_37) \
+@CONFIG_MN10300_TRUE@am_mn10300_libeval_a_OBJECTS = $(am__objects_38) \
 @CONFIG_MN10300_TRUE@	mn10300/trap.$(OBJEXT)
 mn10300_libeval_a_OBJECTS = $(am_mn10300_libeval_a_OBJECTS)
 moxie_libqemu_a_AR = $(AR) $(ARFLAGS)
@@ -1246,7 +1342,7 @@ riscv_libsemihost_a_LIBADD =
 riscv_libsemihost_a_OBJECTS = $(am_riscv_libsemihost_a_OBJECTS)
 riscv_libsim_a_AR = $(AR) $(ARFLAGS)
 riscv_libsim_a_LIBADD =
-@CONFIG_RISCV_TRUE@am__objects_38 =  \
+@CONFIG_RISCV_TRUE@am__objects_39 =  \
 @CONFIG_RISCV_TRUE@	riscv/riscv_libsim_a-sys_access.$(OBJEXT) \
 @CONFIG_RISCV_TRUE@	riscv/riscv_libsim_a-sys_chdir.$(OBJEXT) \
 @CONFIG_RISCV_TRUE@	riscv/riscv_libsim_a-sys_chmod.$(OBJEXT) \
@@ -1279,7 +1375,7 @@ riscv_libsim_a_LIBADD =
 @CONFIG_RISCV_TRUE@	riscv/riscv_libsim_a-sys_utime.$(OBJEXT) \
 @CONFIG_RISCV_TRUE@	riscv/riscv_libsim_a-sys_wait.$(OBJEXT) \
 @CONFIG_RISCV_TRUE@	riscv/riscv_libsim_a-sys_write.$(OBJEXT)
-@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_38)
+@CONFIG_RISCV_TRUE@am_riscv_libsim_a_OBJECTS = $(am__objects_39)
 riscv_libsim_a_OBJECTS = $(am_riscv_libsim_a_OBJECTS)
 rl78_libsim_a_AR = $(AR) $(ARFLAGS)
 rl78_libsim_a_LIBADD =
@@ -1321,14 +1417,14 @@ sparc_libcygmon_a_LIBADD =
 sparc_libcygmon_a_OBJECTS = $(am_sparc_libcygmon_a_OBJECTS)
 sparc_liberc32_a_AR = $(AR) $(ARFLAGS)
 sparc_liberc32_a_LIBADD =
-@CONFIG_SPARC_TRUE@am__objects_39 = close.$(OBJEXT) fstat.$(OBJEXT) \
+@CONFIG_SPARC_TRUE@am__objects_40 = close.$(OBJEXT) fstat.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	getpid.$(OBJEXT) isatty.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	kill.$(OBJEXT) lseek.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	open.$(OBJEXT) print.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	putnum.$(OBJEXT) read.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	sbrk.$(OBJEXT) stat.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	unlink.$(OBJEXT) write.$(OBJEXT)
-@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_39) \
+@CONFIG_SPARC_TRUE@am_sparc_liberc32_a_OBJECTS = $(am__objects_40) \
 @CONFIG_SPARC_TRUE@	sparc/erc32-io.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	sparc/traps.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@	sparc/erc32-stub.$(OBJEXT) debug.$(OBJEXT) \
@@ -1336,18 +1432,18 @@ sparc_liberc32_a_LIBADD =
 sparc_liberc32_a_OBJECTS = $(am_sparc_liberc32_a_OBJECTS)
 sparc_libslite86x_a_AR = $(AR) $(ARFLAGS)
 sparc_libslite86x_a_LIBADD =
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_40 =  \
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_39) \
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am__objects_41 =  \
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_40) \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/salib.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/sparcl-stub.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/cache.$(OBJEXT)
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite86x_a_OBJECTS =  \
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_40)
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_41)
 sparc_libslite86x_a_OBJECTS = $(am_sparc_libslite86x_a_OBJECTS)
 sparc_libslite930_a_AR = $(AR) $(ARFLAGS)
 sparc_libslite930_a_LIBADD =
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite930_a_OBJECTS =  \
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_39) \
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_40) \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/salib.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/sparcl-stub.$(OBJEXT) \
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	sparc/cache.$(OBJEXT)
@@ -1355,12 +1451,12 @@ sparc_libslite930_a_OBJECTS = $(am_sparc_libslite930_a_OBJECTS)
 sparc_libslite931_a_AR = $(AR) $(ARFLAGS)
 sparc_libslite931_a_LIBADD =
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite931_a_OBJECTS =  \
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_40)
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_41)
 sparc_libslite931_a_OBJECTS = $(am_sparc_libslite931_a_OBJECTS)
 sparc_libslite934_a_AR = $(AR) $(ARFLAGS)
 sparc_libslite934_a_LIBADD =
 @CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@am_sparc_libslite934_a_OBJECTS =  \
-@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_40)
+@CONFIG_SPARC_TRUE@@SPARC_BUILD_SLITE_TRUE@	$(am__objects_41)
 sparc_libslite934_a_OBJECTS = $(am_sparc_libslite934_a_OBJECTS)
 sparc_libsplet701_a_AR = $(AR) $(ARFLAGS)
 sparc_libsplet701_a_LIBADD =
@@ -1477,11 +1573,11 @@ v850_libsim_a_LIBADD =
 v850_libsim_a_OBJECTS = $(am_v850_libsim_a_OBJECTS)
 visium_libdebug_a_AR = $(AR) $(ARFLAGS)
 visium_libdebug_a_LIBADD =
-@CONFIG_VISIUM_TRUE@am__objects_41 = getpid.$(OBJEXT) kill.$(OBJEXT) \
+@CONFIG_VISIUM_TRUE@am__objects_42 = getpid.$(OBJEXT) kill.$(OBJEXT) \
 @CONFIG_VISIUM_TRUE@	visium/io-gdb.$(OBJEXT) \
 @CONFIG_VISIUM_TRUE@	visium/io-stubs.$(OBJEXT) \
 @CONFIG_VISIUM_TRUE@	visium/sbrk.$(OBJEXT)
-@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_41) \
+@CONFIG_VISIUM_TRUE@am_visium_libdebug_a_OBJECTS = $(am__objects_42) \
 @CONFIG_VISIUM_TRUE@	visium/syscalls.$(OBJEXT)
 visium_libdebug_a_OBJECTS = $(am_visium_libdebug_a_OBJECTS)
 visium_libserial_a_AR = $(AR) $(ARFLAGS)
@@ -1501,7 +1597,7 @@ visium_libserial_a_LIBADD =
 visium_libserial_a_OBJECTS = $(am_visium_libserial_a_OBJECTS)
 visium_libsim_a_AR = $(AR) $(ARFLAGS)
 visium_libsim_a_LIBADD =
-@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_41) \
+@CONFIG_VISIUM_TRUE@am_visium_libsim_a_OBJECTS = $(am__objects_42) \
 @CONFIG_VISIUM_TRUE@	visium/sim-syscalls.$(OBJEXT)
 visium_libsim_a_OBJECTS = $(am_visium_libsim_a_OBJECTS)
 xstormy16_libeva_app_a_AR = $(AR) $(ARFLAGS)
@@ -1527,13 +1623,13 @@ xstormy16_libsim_a_LIBADD =
 xstormy16_libsim_a_OBJECTS = $(am_xstormy16_libsim_a_OBJECTS)
 xtensa_libgloss_a_AR = $(AR) $(ARFLAGS)
 xtensa_libgloss_a_LIBADD =
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_42 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT)
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_43 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT)
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_43 = xtensa/boards/esp32/xtensa_libgloss_a-board.$(OBJEXT)
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP32S3_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am__objects_44 = xtensa/boards/esp32s3/xtensa_libgloss_a-board.$(OBJEXT)
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@am_xtensa_libgloss_a_OBJECTS = xtensa/xtensa_libgloss_a-sleep.$(OBJEXT) \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/xtensa_libgloss_a-syscalls.$(OBJEXT) \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/xtensa_libgloss_a-window-vectors.$(OBJEXT) \
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__objects_42) \
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__objects_43)
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__objects_43) \
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__objects_44)
 xtensa_libgloss_a_OBJECTS = $(am_xtensa_libgloss_a_OBJECTS)
 xtensa_libsys_openocd_a_AR = $(AR) $(ARFLAGS)
 xtensa_libsys_openocd_a_LIBADD =
@@ -1639,19 +1735,23 @@ AM_V_CCAS = $(am__v_CCAS_@AM_V@)
 am__v_CCAS_ = $(am__v_CCAS_@AM_DEFAULT_V@)
 am__v_CCAS_0 = @echo "  CCAS    " $@;
 am__v_CCAS_1 = 
-SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \
-	$(arm_libgloss_linux_a_SOURCES) $(arm_librdimon_v2m_a_SOURCES) \
-	$(arm_librdimon_a_SOURCES) $(arm_librdpmon_a_SOURCES) \
-	$(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \
-	$(cr16_libh_a_SOURCES) $(cr16_libsim_a_SOURCES) \
-	$(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \
-	$(epiphany_libepiphany_a_SOURCES) $(fr30_libsim_a_SOURCES) \
-	$(frv_libsim_a_SOURCES) $(ft32_libsim_a_SOURCES) \
-	$(i386_libcygmon_a_SOURCES) $(i960_libmon960_a_SOURCES) \
-	$(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \
-	$(libobjs_a_SOURCES) $(lm32_libgloss_a_SOURCES) \
-	$(m32r_libgloss_a_SOURCES) $(m32r_libmon_a_SOURCES) \
-	$(mcore_libcmb_a_SOURCES) $(mcore_libsim_a_SOURCES) \
+SOURCES = $(aarch64_librdimon_a_SOURCES) \
+	$(arc_libemsdp_uart_a_SOURCES) $(arc_libemsk_uart_a_SOURCES) \
+	$(arc_libhl_a_SOURCES) $(arc_libhsdk_uart_a_SOURCES) \
+	$(arc_libiotdk_uart_a_SOURCES) $(arc_libnsim_a_SOURCES) \
+	$(arc_libuart_8250_a_SOURCES) $(arm_libgloss_linux_a_SOURCES) \
+	$(arm_librdimon_v2m_a_SOURCES) $(arm_librdimon_a_SOURCES) \
+	$(arm_librdpmon_a_SOURCES) $(bfin_libbfinbsp_a_SOURCES) \
+	$(bfin_libsim_a_SOURCES) $(cr16_libh_a_SOURCES) \
+	$(cr16_libsim_a_SOURCES) $(csky_libsemi_a_SOURCES) \
+	$(d30v_libsim_a_SOURCES) $(epiphany_libepiphany_a_SOURCES) \
+	$(fr30_libsim_a_SOURCES) $(frv_libsim_a_SOURCES) \
+	$(ft32_libsim_a_SOURCES) $(i386_libcygmon_a_SOURCES) \
+	$(i960_libmon960_a_SOURCES) $(iq2000_libeval_a_SOURCES) \
+	$(libnosys_libnosys_a_SOURCES) $(libobjs_a_SOURCES) \
+	$(lm32_libgloss_a_SOURCES) $(m32r_libgloss_a_SOURCES) \
+	$(m32r_libmon_a_SOURCES) $(mcore_libcmb_a_SOURCES) \
+	$(mcore_libsim_a_SOURCES) \
 	$(microblaze_libgloss_linux_a_SOURCES) \
 	$(microblaze_libgloss_a_SOURCES) $(mn10200_libeval_a_SOURCES) \
 	$(mn10300_libcygmon_a_SOURCES) $(mn10300_libeval_a_SOURCES) \
@@ -1774,7 +1874,7 @@ ETAGS = etags
 CTAGS = ctags
 CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
-VPATH = @srcdir@ $(am__append_129)
+VPATH = @srcdir@ $(am__append_130)
 AARCH64_OBJTYPE = @AARCH64_OBJTYPE@
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -1900,49 +2000,49 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 ACLOCAL_AMFLAGS = -I . -I .. -I ../config
 info_TEXINFOS = $(am__append_1)
-CLEANFILES = $(am__append_4) $(am__append_10) $(am__append_135)
+CLEANFILES = $(am__append_4) $(am__append_11) $(am__append_136)
 PHONY = 
 SUBDIRS = @subdirs@ .
 srcroot = $(top_srcdir)/..
 tooldir = $(exec_prefix)/$(target_alias)
 multilibtooldir = $(tooldir)/lib$(MULTISUBDIR)
-multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \
-	$(am__append_8) $(am__append_13) $(am__append_15) \
-	$(am__append_18) $(am__append_21) $(am__append_25) \
-	$(am__append_26) $(am__append_29) $(am__append_32) \
-	$(am__append_35) $(am__append_36) $(am__append_39) \
-	$(am__append_42) $(am__append_45) $(am__append_49) \
-	$(am__append_51) $(am__append_54) $(am__append_55) \
-	$(am__append_58) $(am__append_59) $(am__append_60) \
-	$(am__append_63) $(am__append_64) $(am__append_67) \
-	$(am__append_71) $(am__append_72) $(am__append_73) \
-	$(am__append_78) $(am__append_79) $(am__append_82) \
+multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_8) \
+	$(am__append_9) $(am__append_14) $(am__append_16) \
+	$(am__append_19) $(am__append_22) $(am__append_26) \
+	$(am__append_27) $(am__append_30) $(am__append_33) \
+	$(am__append_36) $(am__append_37) $(am__append_40) \
+	$(am__append_43) $(am__append_46) $(am__append_50) \
+	$(am__append_52) $(am__append_55) $(am__append_56) \
+	$(am__append_59) $(am__append_60) $(am__append_61) \
+	$(am__append_64) $(am__append_65) $(am__append_68) \
+	$(am__append_72) $(am__append_73) $(am__append_74) \
+	$(am__append_79) $(am__append_80) $(am__append_83) \
+	$(am__append_86) $(am__append_89) $(am__append_91) \
+	$(am__append_95) $(am__append_98) $(am__append_100) \
+	$(am__append_103) $(am__append_106) $(am__append_109) \
+	$(am__append_112) $(am__append_114) $(am__append_119) \
+	$(am__append_121) $(am__append_124) $(am__append_127) \
+	$(am__append_132) $(am__append_137) $(am__append_140) \
+	$(am__append_142) $(am__append_147)
+multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \
+	$(am__append_10) $(am__append_12) $(am__append_21) \
+	$(am__append_24) $(am__append_25) $(am__append_29) \
+	$(am__append_32) $(am__append_35) $(am__append_39) \
+	$(am__append_42) $(am__append_45) $(am__append_47) \
+	$(am__append_51) $(am__append_53) $(am__append_58) \
+	$(am__append_63) $(am__append_67) $(am__append_70) \
+	$(am__append_76) $(am__append_77) $(am__append_82) \
 	$(am__append_85) $(am__append_88) $(am__append_90) \
 	$(am__append_94) $(am__append_97) $(am__append_99) \
 	$(am__append_102) $(am__append_105) $(am__append_108) \
-	$(am__append_111) $(am__append_113) $(am__append_118) \
-	$(am__append_120) $(am__append_123) $(am__append_126) \
-	$(am__append_131) $(am__append_136) $(am__append_139) \
-	$(am__append_141) $(am__append_146)
-multilibtool_LIBRARIES = $(am__append_2) $(am__append_5) \
-	$(am__append_9) $(am__append_11) $(am__append_20) \
-	$(am__append_23) $(am__append_24) $(am__append_28) \
-	$(am__append_31) $(am__append_34) $(am__append_38) \
-	$(am__append_41) $(am__append_44) $(am__append_46) \
-	$(am__append_50) $(am__append_52) $(am__append_57) \
-	$(am__append_62) $(am__append_66) $(am__append_69) \
-	$(am__append_75) $(am__append_76) $(am__append_81) \
-	$(am__append_84) $(am__append_87) $(am__append_89) \
-	$(am__append_93) $(am__append_96) $(am__append_98) \
-	$(am__append_101) $(am__append_104) $(am__append_107) \
-	$(am__append_110) $(am__append_112) $(am__append_115) \
-	$(am__append_117) $(am__append_122) $(am__append_125) \
-	$(am__append_128) $(am__append_133) $(am__append_138) \
-	$(am__append_140)
+	$(am__append_111) $(am__append_113) $(am__append_116) \
+	$(am__append_118) $(am__append_123) $(am__append_126) \
+	$(am__append_129) $(am__append_134) $(am__append_139) \
+	$(am__append_141)
 includetooldir = $(tooldir)/include
-includetool_DATA = $(am__append_16) $(am__append_92)
+includetool_DATA = $(am__append_17) $(am__append_93)
 includesystooldir = $(tooldir)/include/sys
-includesystool_DATA = $(am__append_17)
+includesystool_DATA = $(am__append_18)
 
 # These are useful for standalone object files like crt0.o.
 AM_CFLAGS = $(AM_CFLAGS_$(subst /,_,$(@D))) $(AM_CFLAGS_$(subst /,_,$(@D)_$(<F)))
@@ -1954,17 +2054,17 @@ AM_LDFLAGS = $(AM_LDFLAGS_$(subst /,_,$(@D))) $(AM_LDFLAGS_$(subst -,_,$(subst /
 # A fake library so automake will generate rules for plain objects that we want
 # to install (e.g. our crt0.o objects).
 noinst_LIBRARIES = libobjs.a
-libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_22) \
-	$(am__append_27) $(am__append_30) $(am__append_33) \
-	$(am__append_37) $(am__append_40) $(am__append_43) \
-	$(am__append_47) $(am__append_53) $(am__append_56) \
-	$(am__append_61) $(am__append_65) $(am__append_68) \
-	$(am__append_74) $(am__append_80) $(am__append_83) \
-	$(am__append_86) $(am__append_91) $(am__append_95) \
-	$(am__append_100) $(am__append_103) $(am__append_106) \
-	$(am__append_109) $(am__append_114) $(am__append_119) \
-	$(am__append_121) $(am__append_124) $(am__append_127) \
-	$(am__append_132) $(am__append_137)
+libobjs_a_SOURCES = $(am__append_7) $(am__append_15) $(am__append_20) \
+	$(am__append_23) $(am__append_28) $(am__append_31) \
+	$(am__append_34) $(am__append_38) $(am__append_41) \
+	$(am__append_44) $(am__append_48) $(am__append_54) \
+	$(am__append_57) $(am__append_62) $(am__append_66) \
+	$(am__append_69) $(am__append_75) $(am__append_81) \
+	$(am__append_84) $(am__append_87) $(am__append_92) \
+	$(am__append_96) $(am__append_101) $(am__append_104) \
+	$(am__append_107) $(am__append_110) $(am__append_115) \
+	$(am__append_120) $(am__append_122) $(am__append_125) \
+	$(am__append_128) $(am__append_133) $(am__append_138)
 FLAGS_TO_PASS = \
 	"CC=$(CC)" \
 	"CFLAGS=$(CFLAGS)" \
@@ -2026,6 +2126,45 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
 @CONFIG_ARC_TRUE@	arc/nsim-syscalls.c \
 @CONFIG_ARC_TRUE@	arc/sbrk.c
 
+@CONFIG_ARC_TRUE@arc_libhl_a_CPPFLAGS = -I$(srcdir)/arc
+@CONFIG_ARC_TRUE@arc_libhl_a_SOURCES = \
+@CONFIG_ARC_TRUE@	arc/arc-timer.c \
+@CONFIG_ARC_TRUE@	arc/hl-stub.c \
+@CONFIG_ARC_TRUE@	arc/hl-setup.c \
+@CONFIG_ARC_TRUE@	arc/libcfunc.c \
+@CONFIG_ARC_TRUE@	arc/sbrk.c \
+@CONFIG_ARC_TRUE@	arc/mcount.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_gw.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_api.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_open.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_close.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_read.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_write.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_lseek.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_unlink.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_isatty.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_fstat.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_clock.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_gettimeofday.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_argc.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_argv.c \
+@CONFIG_ARC_TRUE@	arc/hl/hl_exit.c
+
+@CONFIG_ARC_TRUE@arc_libuart_8250_a_CPPFLAGS = -I$(srcdir)/arc
+@CONFIG_ARC_TRUE@arc_libuart_8250_a_SOURCES = \
+@CONFIG_ARC_TRUE@	arc/uart-8250.c \
+@CONFIG_ARC_TRUE@	arc/uart-8250-stub.c \
+@CONFIG_ARC_TRUE@	arc/sbrk.c \
+@CONFIG_ARC_TRUE@	arc/mcount.c
+
+@CONFIG_ARC_TRUE@arc_libiotdk_uart_a_CPPFLAGS = -I$(srcdir)/arc
+@CONFIG_ARC_TRUE@arc_libiotdk_uart_a_SOURCES = arc/iotdk-uart-setup.c
+@CONFIG_ARC_TRUE@arc_libhsdk_uart_a_CPPFLAGS = -I$(srcdir)/arc
+@CONFIG_ARC_TRUE@arc_libhsdk_uart_a_SOURCES = arc/hsdk-uart-setup.c
+@CONFIG_ARC_TRUE@arc_libemsk_uart_a_CPPFLAGS = -I$(srcdir)/arc
+@CONFIG_ARC_TRUE@arc_libemsk_uart_a_SOURCES = arc/emsk-uart-setup.c
+@CONFIG_ARC_TRUE@arc_libemsdp_uart_a_CPPFLAGS = -I$(srcdir)/arc
+@CONFIG_ARC_TRUE@arc_libemsdp_uart_a_SOURCES = arc/emsdp-uart-setup.c
 @CONFIG_ARM_TRUE@arm_SPECS = arm/nano.specs arm/linux.specs \
 @CONFIG_ARM_TRUE@	arm/redboot.ld arm/redboot.specs \
 @CONFIG_ARM_TRUE@	arm/rdpmon.specs arm/rdimon.specs \
@@ -2915,15 +3054,15 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/syscalls.c \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/window-vectors.S \
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_142) \
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_147)
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_143) \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_148)
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	-DQEMU_SEMIHOSTING \
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_CPPFLAGS = $(AM_CPPFLAGS) \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_144) \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_149)
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_CPPFLAGS = $(AM_CPPFLAGS) \
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	-DQEMU_SEMIHOSTING \
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_145) \
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_150)
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_qemu_a_SOURCES = \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/sim-vectors.S \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/sim-call.S \
@@ -2931,8 +3070,8 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
 
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_CPPFLAGS = $(AM_CPPFLAGS) \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	-DOPENOCD_SEMIHOSTING \
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_145) \
-@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_150)
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_146) \
+@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	$(am__append_151)
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \
 @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@	xtensa/syscalls.c
 
@@ -3077,6 +3216,87 @@ arc/$(am__dirstamp):
 arc/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) arc/$(DEPDIR)
 	@: > arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libemsdp_uart_a-emsdp-uart-setup.$(OBJEXT):  \
+	arc/$(am__dirstamp) arc/$(DEPDIR)/$(am__dirstamp)
+
+arc/libemsdp_uart.a: $(arc_libemsdp_uart_a_OBJECTS) $(arc_libemsdp_uart_a_DEPENDENCIES) $(EXTRA_arc_libemsdp_uart_a_DEPENDENCIES) arc/$(am__dirstamp)
+	$(AM_V_at)-rm -f arc/libemsdp_uart.a
+	$(AM_V_AR)$(arc_libemsdp_uart_a_AR) arc/libemsdp_uart.a $(arc_libemsdp_uart_a_OBJECTS) $(arc_libemsdp_uart_a_LIBADD)
+	$(AM_V_at)$(RANLIB) arc/libemsdp_uart.a
+arc/arc_libemsk_uart_a-emsk-uart-setup.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+
+arc/libemsk_uart.a: $(arc_libemsk_uart_a_OBJECTS) $(arc_libemsk_uart_a_DEPENDENCIES) $(EXTRA_arc_libemsk_uart_a_DEPENDENCIES) arc/$(am__dirstamp)
+	$(AM_V_at)-rm -f arc/libemsk_uart.a
+	$(AM_V_AR)$(arc_libemsk_uart_a_AR) arc/libemsk_uart.a $(arc_libemsk_uart_a_OBJECTS) $(arc_libemsk_uart_a_LIBADD)
+	$(AM_V_at)$(RANLIB) arc/libemsk_uart.a
+arc/arc_libhl_a-arc-timer.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libhl_a-hl-stub.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libhl_a-hl-setup.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libhl_a-libcfunc.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libhl_a-sbrk.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libhl_a-mcount.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/hl/$(am__dirstamp):
+	@$(MKDIR_P) arc/hl
+	@: > arc/hl/$(am__dirstamp)
+arc/hl/$(DEPDIR)/$(am__dirstamp):
+	@$(MKDIR_P) arc/hl/$(DEPDIR)
+	@: > arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_gw.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_api.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_open.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_close.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_read.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_write.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_lseek.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_unlink.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_isatty.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_fstat.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_clock.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_gettimeofday.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_argc.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_argv.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+arc/hl/arc_libhl_a-hl_exit.$(OBJEXT): arc/hl/$(am__dirstamp) \
+	arc/hl/$(DEPDIR)/$(am__dirstamp)
+
+arc/libhl.a: $(arc_libhl_a_OBJECTS) $(arc_libhl_a_DEPENDENCIES) $(EXTRA_arc_libhl_a_DEPENDENCIES) arc/$(am__dirstamp)
+	$(AM_V_at)-rm -f arc/libhl.a
+	$(AM_V_AR)$(arc_libhl_a_AR) arc/libhl.a $(arc_libhl_a_OBJECTS) $(arc_libhl_a_LIBADD)
+	$(AM_V_at)$(RANLIB) arc/libhl.a
+arc/arc_libhsdk_uart_a-hsdk-uart-setup.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+
+arc/libhsdk_uart.a: $(arc_libhsdk_uart_a_OBJECTS) $(arc_libhsdk_uart_a_DEPENDENCIES) $(EXTRA_arc_libhsdk_uart_a_DEPENDENCIES) arc/$(am__dirstamp)
+	$(AM_V_at)-rm -f arc/libhsdk_uart.a
+	$(AM_V_AR)$(arc_libhsdk_uart_a_AR) arc/libhsdk_uart.a $(arc_libhsdk_uart_a_OBJECTS) $(arc_libhsdk_uart_a_LIBADD)
+	$(AM_V_at)$(RANLIB) arc/libhsdk_uart.a
+arc/arc_libiotdk_uart_a-iotdk-uart-setup.$(OBJEXT):  \
+	arc/$(am__dirstamp) arc/$(DEPDIR)/$(am__dirstamp)
+
+arc/libiotdk_uart.a: $(arc_libiotdk_uart_a_OBJECTS) $(arc_libiotdk_uart_a_DEPENDENCIES) $(EXTRA_arc_libiotdk_uart_a_DEPENDENCIES) arc/$(am__dirstamp)
+	$(AM_V_at)-rm -f arc/libiotdk_uart.a
+	$(AM_V_AR)$(arc_libiotdk_uart_a_AR) arc/libiotdk_uart.a $(arc_libiotdk_uart_a_OBJECTS) $(arc_libiotdk_uart_a_LIBADD)
+	$(AM_V_at)$(RANLIB) arc/libiotdk_uart.a
 arc/libcfunc.$(OBJEXT): arc/$(am__dirstamp) \
 	arc/$(DEPDIR)/$(am__dirstamp)
 arc/mcount.$(OBJEXT): arc/$(am__dirstamp) \
@@ -3089,6 +3309,19 @@ arc/libnsim.a: $(arc_libnsim_a_OBJECTS) $(arc_libnsim_a_DEPENDENCIES) $(EXTRA_ar
 	$(AM_V_at)-rm -f arc/libnsim.a
 	$(AM_V_AR)$(arc_libnsim_a_AR) arc/libnsim.a $(arc_libnsim_a_OBJECTS) $(arc_libnsim_a_LIBADD)
 	$(AM_V_at)$(RANLIB) arc/libnsim.a
+arc/arc_libuart_8250_a-uart-8250.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libuart_8250_a-uart-8250-stub.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libuart_8250_a-sbrk.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc_libuart_8250_a-mcount.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
+
+arc/libuart_8250.a: $(arc_libuart_8250_a_OBJECTS) $(arc_libuart_8250_a_DEPENDENCIES) $(EXTRA_arc_libuart_8250_a_DEPENDENCIES) arc/$(am__dirstamp)
+	$(AM_V_at)-rm -f arc/libuart_8250.a
+	$(AM_V_AR)$(arc_libuart_8250_a_AR) arc/libuart_8250.a $(arc_libuart_8250_a_OBJECTS) $(arc_libuart_8250_a_LIBADD)
+	$(AM_V_at)$(RANLIB) arc/libuart_8250.a
 arm/$(am__dirstamp):
 	@$(MKDIR_P) arm
 	@: > arm/$(am__dirstamp)
@@ -3606,6 +3839,10 @@ libnosys/libnosys.a: $(libnosys_libnosys_a_OBJECTS) $(libnosys_libnosys_a_DEPEND
 	$(AM_V_at)-rm -f libnosys/libnosys.a
 	$(AM_V_AR)$(libnosys_libnosys_a_AR) libnosys/libnosys.a $(libnosys_libnosys_a_OBJECTS) $(libnosys_libnosys_a_LIBADD)
 	$(AM_V_at)$(RANLIB) libnosys/libnosys.a
+arc/crt0.$(OBJEXT): arc/$(am__dirstamp) arc/$(DEPDIR)/$(am__dirstamp)
+arc/gcrt0.$(OBJEXT): arc/$(am__dirstamp) arc/$(DEPDIR)/$(am__dirstamp)
+arc/arc-main-helper.$(OBJEXT): arc/$(am__dirstamp) \
+	arc/$(DEPDIR)/$(am__dirstamp)
 bfin/crt0.$(OBJEXT): bfin/$(am__dirstamp) \
 	bfin/$(DEPDIR)/$(am__dirstamp)
 bfin/basiccrt.$(OBJEXT): bfin/$(am__dirstamp) \
@@ -5226,6 +5463,7 @@ mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
 	-rm -f aarch64/*.$(OBJEXT)
 	-rm -f arc/*.$(OBJEXT)
+	-rm -f arc/hl/*.$(OBJEXT)
 	-rm -f arm/*.$(OBJEXT)
 	-rm -f bfin/*.$(OBJEXT)
 	-rm -f cr16/*.$(OBJEXT)
@@ -5290,10 +5528,42 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-libcfunc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-syscalls.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@aarch64/$(DEPDIR)/aarch64_librdimon_a-truncate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc-main-helper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libemsdp_uart_a-emsdp-uart-setup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libemsk_uart_a-emsk-uart-setup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libhl_a-arc-timer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libhl_a-hl-setup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libhl_a-hl-stub.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libhl_a-libcfunc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libhl_a-mcount.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libhl_a-sbrk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libhsdk_uart_a-hsdk-uart-setup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libiotdk_uart_a-iotdk-uart-setup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libuart_8250_a-mcount.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libuart_8250_a-sbrk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250-stub.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/crt0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/gcrt0.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/libcfunc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/mcount.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/nsim-syscalls.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@arc/$(DEPDIR)/sbrk.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_api.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_argc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_argv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_clock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_close.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_exit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_fstat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_gettimeofday.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_gw.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_isatty.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_lseek.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_open.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_unlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@arc/hl/$(DEPDIR)/arc_libhl_a-hl_write.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/_exit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/_kill.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@arm/$(DEPDIR)/arm_librdimon_a-_exit.Po@am__quote@
@@ -6256,6 +6526,412 @@ aarch64/aarch64_librdimon_a-truncate.obj: aarch64/truncate.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aarch64_librdimon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o aarch64/aarch64_librdimon_a-truncate.obj `if test -f 'aarch64/truncate.c'; then $(CYGPATH_W) 'aarch64/truncate.c'; else $(CYGPATH_W) '$(srcdir)/aarch64/truncate.c'; fi`
 
+arc/arc_libemsdp_uart_a-emsdp-uart-setup.o: arc/emsdp-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libemsdp_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libemsdp_uart_a-emsdp-uart-setup.o -MD -MP -MF arc/$(DEPDIR)/arc_libemsdp_uart_a-emsdp-uart-setup.Tpo -c -o arc/arc_libemsdp_uart_a-emsdp-uart-setup.o `test -f 'arc/emsdp-uart-setup.c' || echo '$(srcdir)/'`arc/emsdp-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libemsdp_uart_a-emsdp-uart-setup.Tpo arc/$(DEPDIR)/arc_libemsdp_uart_a-emsdp-uart-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/emsdp-uart-setup.c' object='arc/arc_libemsdp_uart_a-emsdp-uart-setup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libemsdp_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libemsdp_uart_a-emsdp-uart-setup.o `test -f 'arc/emsdp-uart-setup.c' || echo '$(srcdir)/'`arc/emsdp-uart-setup.c
+
+arc/arc_libemsdp_uart_a-emsdp-uart-setup.obj: arc/emsdp-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libemsdp_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libemsdp_uart_a-emsdp-uart-setup.obj -MD -MP -MF arc/$(DEPDIR)/arc_libemsdp_uart_a-emsdp-uart-setup.Tpo -c -o arc/arc_libemsdp_uart_a-emsdp-uart-setup.obj `if test -f 'arc/emsdp-uart-setup.c'; then $(CYGPATH_W) 'arc/emsdp-uart-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/emsdp-uart-setup.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libemsdp_uart_a-emsdp-uart-setup.Tpo arc/$(DEPDIR)/arc_libemsdp_uart_a-emsdp-uart-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/emsdp-uart-setup.c' object='arc/arc_libemsdp_uart_a-emsdp-uart-setup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libemsdp_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libemsdp_uart_a-emsdp-uart-setup.obj `if test -f 'arc/emsdp-uart-setup.c'; then $(CYGPATH_W) 'arc/emsdp-uart-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/emsdp-uart-setup.c'; fi`
+
+arc/arc_libemsk_uart_a-emsk-uart-setup.o: arc/emsk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libemsk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libemsk_uart_a-emsk-uart-setup.o -MD -MP -MF arc/$(DEPDIR)/arc_libemsk_uart_a-emsk-uart-setup.Tpo -c -o arc/arc_libemsk_uart_a-emsk-uart-setup.o `test -f 'arc/emsk-uart-setup.c' || echo '$(srcdir)/'`arc/emsk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libemsk_uart_a-emsk-uart-setup.Tpo arc/$(DEPDIR)/arc_libemsk_uart_a-emsk-uart-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/emsk-uart-setup.c' object='arc/arc_libemsk_uart_a-emsk-uart-setup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libemsk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libemsk_uart_a-emsk-uart-setup.o `test -f 'arc/emsk-uart-setup.c' || echo '$(srcdir)/'`arc/emsk-uart-setup.c
+
+arc/arc_libemsk_uart_a-emsk-uart-setup.obj: arc/emsk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libemsk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libemsk_uart_a-emsk-uart-setup.obj -MD -MP -MF arc/$(DEPDIR)/arc_libemsk_uart_a-emsk-uart-setup.Tpo -c -o arc/arc_libemsk_uart_a-emsk-uart-setup.obj `if test -f 'arc/emsk-uart-setup.c'; then $(CYGPATH_W) 'arc/emsk-uart-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/emsk-uart-setup.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libemsk_uart_a-emsk-uart-setup.Tpo arc/$(DEPDIR)/arc_libemsk_uart_a-emsk-uart-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/emsk-uart-setup.c' object='arc/arc_libemsk_uart_a-emsk-uart-setup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libemsk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libemsk_uart_a-emsk-uart-setup.obj `if test -f 'arc/emsk-uart-setup.c'; then $(CYGPATH_W) 'arc/emsk-uart-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/emsk-uart-setup.c'; fi`
+
+arc/arc_libhl_a-arc-timer.o: arc/arc-timer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-arc-timer.o -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-arc-timer.Tpo -c -o arc/arc_libhl_a-arc-timer.o `test -f 'arc/arc-timer.c' || echo '$(srcdir)/'`arc/arc-timer.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-arc-timer.Tpo arc/$(DEPDIR)/arc_libhl_a-arc-timer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/arc-timer.c' object='arc/arc_libhl_a-arc-timer.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-arc-timer.o `test -f 'arc/arc-timer.c' || echo '$(srcdir)/'`arc/arc-timer.c
+
+arc/arc_libhl_a-arc-timer.obj: arc/arc-timer.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-arc-timer.obj -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-arc-timer.Tpo -c -o arc/arc_libhl_a-arc-timer.obj `if test -f 'arc/arc-timer.c'; then $(CYGPATH_W) 'arc/arc-timer.c'; else $(CYGPATH_W) '$(srcdir)/arc/arc-timer.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-arc-timer.Tpo arc/$(DEPDIR)/arc_libhl_a-arc-timer.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/arc-timer.c' object='arc/arc_libhl_a-arc-timer.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-arc-timer.obj `if test -f 'arc/arc-timer.c'; then $(CYGPATH_W) 'arc/arc-timer.c'; else $(CYGPATH_W) '$(srcdir)/arc/arc-timer.c'; fi`
+
+arc/arc_libhl_a-hl-stub.o: arc/hl-stub.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-hl-stub.o -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-hl-stub.Tpo -c -o arc/arc_libhl_a-hl-stub.o `test -f 'arc/hl-stub.c' || echo '$(srcdir)/'`arc/hl-stub.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-hl-stub.Tpo arc/$(DEPDIR)/arc_libhl_a-hl-stub.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl-stub.c' object='arc/arc_libhl_a-hl-stub.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-hl-stub.o `test -f 'arc/hl-stub.c' || echo '$(srcdir)/'`arc/hl-stub.c
+
+arc/arc_libhl_a-hl-stub.obj: arc/hl-stub.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-hl-stub.obj -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-hl-stub.Tpo -c -o arc/arc_libhl_a-hl-stub.obj `if test -f 'arc/hl-stub.c'; then $(CYGPATH_W) 'arc/hl-stub.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl-stub.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-hl-stub.Tpo arc/$(DEPDIR)/arc_libhl_a-hl-stub.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl-stub.c' object='arc/arc_libhl_a-hl-stub.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-hl-stub.obj `if test -f 'arc/hl-stub.c'; then $(CYGPATH_W) 'arc/hl-stub.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl-stub.c'; fi`
+
+arc/arc_libhl_a-hl-setup.o: arc/hl-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-hl-setup.o -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-hl-setup.Tpo -c -o arc/arc_libhl_a-hl-setup.o `test -f 'arc/hl-setup.c' || echo '$(srcdir)/'`arc/hl-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-hl-setup.Tpo arc/$(DEPDIR)/arc_libhl_a-hl-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl-setup.c' object='arc/arc_libhl_a-hl-setup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-hl-setup.o `test -f 'arc/hl-setup.c' || echo '$(srcdir)/'`arc/hl-setup.c
+
+arc/arc_libhl_a-hl-setup.obj: arc/hl-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-hl-setup.obj -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-hl-setup.Tpo -c -o arc/arc_libhl_a-hl-setup.obj `if test -f 'arc/hl-setup.c'; then $(CYGPATH_W) 'arc/hl-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl-setup.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-hl-setup.Tpo arc/$(DEPDIR)/arc_libhl_a-hl-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl-setup.c' object='arc/arc_libhl_a-hl-setup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-hl-setup.obj `if test -f 'arc/hl-setup.c'; then $(CYGPATH_W) 'arc/hl-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl-setup.c'; fi`
+
+arc/arc_libhl_a-libcfunc.o: arc/libcfunc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-libcfunc.o -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-libcfunc.Tpo -c -o arc/arc_libhl_a-libcfunc.o `test -f 'arc/libcfunc.c' || echo '$(srcdir)/'`arc/libcfunc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-libcfunc.Tpo arc/$(DEPDIR)/arc_libhl_a-libcfunc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/libcfunc.c' object='arc/arc_libhl_a-libcfunc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-libcfunc.o `test -f 'arc/libcfunc.c' || echo '$(srcdir)/'`arc/libcfunc.c
+
+arc/arc_libhl_a-libcfunc.obj: arc/libcfunc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-libcfunc.obj -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-libcfunc.Tpo -c -o arc/arc_libhl_a-libcfunc.obj `if test -f 'arc/libcfunc.c'; then $(CYGPATH_W) 'arc/libcfunc.c'; else $(CYGPATH_W) '$(srcdir)/arc/libcfunc.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-libcfunc.Tpo arc/$(DEPDIR)/arc_libhl_a-libcfunc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/libcfunc.c' object='arc/arc_libhl_a-libcfunc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-libcfunc.obj `if test -f 'arc/libcfunc.c'; then $(CYGPATH_W) 'arc/libcfunc.c'; else $(CYGPATH_W) '$(srcdir)/arc/libcfunc.c'; fi`
+
+arc/arc_libhl_a-sbrk.o: arc/sbrk.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-sbrk.o -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-sbrk.Tpo -c -o arc/arc_libhl_a-sbrk.o `test -f 'arc/sbrk.c' || echo '$(srcdir)/'`arc/sbrk.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-sbrk.Tpo arc/$(DEPDIR)/arc_libhl_a-sbrk.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/sbrk.c' object='arc/arc_libhl_a-sbrk.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-sbrk.o `test -f 'arc/sbrk.c' || echo '$(srcdir)/'`arc/sbrk.c
+
+arc/arc_libhl_a-sbrk.obj: arc/sbrk.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-sbrk.obj -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-sbrk.Tpo -c -o arc/arc_libhl_a-sbrk.obj `if test -f 'arc/sbrk.c'; then $(CYGPATH_W) 'arc/sbrk.c'; else $(CYGPATH_W) '$(srcdir)/arc/sbrk.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-sbrk.Tpo arc/$(DEPDIR)/arc_libhl_a-sbrk.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/sbrk.c' object='arc/arc_libhl_a-sbrk.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-sbrk.obj `if test -f 'arc/sbrk.c'; then $(CYGPATH_W) 'arc/sbrk.c'; else $(CYGPATH_W) '$(srcdir)/arc/sbrk.c'; fi`
+
+arc/arc_libhl_a-mcount.o: arc/mcount.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-mcount.o -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-mcount.Tpo -c -o arc/arc_libhl_a-mcount.o `test -f 'arc/mcount.c' || echo '$(srcdir)/'`arc/mcount.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-mcount.Tpo arc/$(DEPDIR)/arc_libhl_a-mcount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/mcount.c' object='arc/arc_libhl_a-mcount.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-mcount.o `test -f 'arc/mcount.c' || echo '$(srcdir)/'`arc/mcount.c
+
+arc/arc_libhl_a-mcount.obj: arc/mcount.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhl_a-mcount.obj -MD -MP -MF arc/$(DEPDIR)/arc_libhl_a-mcount.Tpo -c -o arc/arc_libhl_a-mcount.obj `if test -f 'arc/mcount.c'; then $(CYGPATH_W) 'arc/mcount.c'; else $(CYGPATH_W) '$(srcdir)/arc/mcount.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhl_a-mcount.Tpo arc/$(DEPDIR)/arc_libhl_a-mcount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/mcount.c' object='arc/arc_libhl_a-mcount.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhl_a-mcount.obj `if test -f 'arc/mcount.c'; then $(CYGPATH_W) 'arc/mcount.c'; else $(CYGPATH_W) '$(srcdir)/arc/mcount.c'; fi`
+
+arc/hl/arc_libhl_a-hl_gw.o: arc/hl/hl_gw.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_gw.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_gw.Tpo -c -o arc/hl/arc_libhl_a-hl_gw.o `test -f 'arc/hl/hl_gw.c' || echo '$(srcdir)/'`arc/hl/hl_gw.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_gw.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_gw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_gw.c' object='arc/hl/arc_libhl_a-hl_gw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_gw.o `test -f 'arc/hl/hl_gw.c' || echo '$(srcdir)/'`arc/hl/hl_gw.c
+
+arc/hl/arc_libhl_a-hl_gw.obj: arc/hl/hl_gw.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_gw.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_gw.Tpo -c -o arc/hl/arc_libhl_a-hl_gw.obj `if test -f 'arc/hl/hl_gw.c'; then $(CYGPATH_W) 'arc/hl/hl_gw.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_gw.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_gw.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_gw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_gw.c' object='arc/hl/arc_libhl_a-hl_gw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_gw.obj `if test -f 'arc/hl/hl_gw.c'; then $(CYGPATH_W) 'arc/hl/hl_gw.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_gw.c'; fi`
+
+arc/hl/arc_libhl_a-hl_api.o: arc/hl/hl_api.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_api.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_api.Tpo -c -o arc/hl/arc_libhl_a-hl_api.o `test -f 'arc/hl/hl_api.c' || echo '$(srcdir)/'`arc/hl/hl_api.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_api.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_api.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_api.c' object='arc/hl/arc_libhl_a-hl_api.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_api.o `test -f 'arc/hl/hl_api.c' || echo '$(srcdir)/'`arc/hl/hl_api.c
+
+arc/hl/arc_libhl_a-hl_api.obj: arc/hl/hl_api.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_api.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_api.Tpo -c -o arc/hl/arc_libhl_a-hl_api.obj `if test -f 'arc/hl/hl_api.c'; then $(CYGPATH_W) 'arc/hl/hl_api.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_api.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_api.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_api.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_api.c' object='arc/hl/arc_libhl_a-hl_api.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_api.obj `if test -f 'arc/hl/hl_api.c'; then $(CYGPATH_W) 'arc/hl/hl_api.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_api.c'; fi`
+
+arc/hl/arc_libhl_a-hl_open.o: arc/hl/hl_open.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_open.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_open.Tpo -c -o arc/hl/arc_libhl_a-hl_open.o `test -f 'arc/hl/hl_open.c' || echo '$(srcdir)/'`arc/hl/hl_open.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_open.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_open.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_open.c' object='arc/hl/arc_libhl_a-hl_open.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_open.o `test -f 'arc/hl/hl_open.c' || echo '$(srcdir)/'`arc/hl/hl_open.c
+
+arc/hl/arc_libhl_a-hl_open.obj: arc/hl/hl_open.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_open.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_open.Tpo -c -o arc/hl/arc_libhl_a-hl_open.obj `if test -f 'arc/hl/hl_open.c'; then $(CYGPATH_W) 'arc/hl/hl_open.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_open.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_open.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_open.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_open.c' object='arc/hl/arc_libhl_a-hl_open.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_open.obj `if test -f 'arc/hl/hl_open.c'; then $(CYGPATH_W) 'arc/hl/hl_open.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_open.c'; fi`
+
+arc/hl/arc_libhl_a-hl_close.o: arc/hl/hl_close.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_close.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_close.Tpo -c -o arc/hl/arc_libhl_a-hl_close.o `test -f 'arc/hl/hl_close.c' || echo '$(srcdir)/'`arc/hl/hl_close.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_close.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_close.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_close.c' object='arc/hl/arc_libhl_a-hl_close.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_close.o `test -f 'arc/hl/hl_close.c' || echo '$(srcdir)/'`arc/hl/hl_close.c
+
+arc/hl/arc_libhl_a-hl_close.obj: arc/hl/hl_close.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_close.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_close.Tpo -c -o arc/hl/arc_libhl_a-hl_close.obj `if test -f 'arc/hl/hl_close.c'; then $(CYGPATH_W) 'arc/hl/hl_close.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_close.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_close.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_close.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_close.c' object='arc/hl/arc_libhl_a-hl_close.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_close.obj `if test -f 'arc/hl/hl_close.c'; then $(CYGPATH_W) 'arc/hl/hl_close.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_close.c'; fi`
+
+arc/hl/arc_libhl_a-hl_read.o: arc/hl/hl_read.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_read.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_read.Tpo -c -o arc/hl/arc_libhl_a-hl_read.o `test -f 'arc/hl/hl_read.c' || echo '$(srcdir)/'`arc/hl/hl_read.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_read.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_read.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_read.c' object='arc/hl/arc_libhl_a-hl_read.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_read.o `test -f 'arc/hl/hl_read.c' || echo '$(srcdir)/'`arc/hl/hl_read.c
+
+arc/hl/arc_libhl_a-hl_read.obj: arc/hl/hl_read.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_read.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_read.Tpo -c -o arc/hl/arc_libhl_a-hl_read.obj `if test -f 'arc/hl/hl_read.c'; then $(CYGPATH_W) 'arc/hl/hl_read.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_read.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_read.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_read.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_read.c' object='arc/hl/arc_libhl_a-hl_read.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_read.obj `if test -f 'arc/hl/hl_read.c'; then $(CYGPATH_W) 'arc/hl/hl_read.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_read.c'; fi`
+
+arc/hl/arc_libhl_a-hl_write.o: arc/hl/hl_write.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_write.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_write.Tpo -c -o arc/hl/arc_libhl_a-hl_write.o `test -f 'arc/hl/hl_write.c' || echo '$(srcdir)/'`arc/hl/hl_write.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_write.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_write.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_write.c' object='arc/hl/arc_libhl_a-hl_write.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_write.o `test -f 'arc/hl/hl_write.c' || echo '$(srcdir)/'`arc/hl/hl_write.c
+
+arc/hl/arc_libhl_a-hl_write.obj: arc/hl/hl_write.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_write.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_write.Tpo -c -o arc/hl/arc_libhl_a-hl_write.obj `if test -f 'arc/hl/hl_write.c'; then $(CYGPATH_W) 'arc/hl/hl_write.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_write.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_write.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_write.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_write.c' object='arc/hl/arc_libhl_a-hl_write.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_write.obj `if test -f 'arc/hl/hl_write.c'; then $(CYGPATH_W) 'arc/hl/hl_write.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_write.c'; fi`
+
+arc/hl/arc_libhl_a-hl_lseek.o: arc/hl/hl_lseek.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_lseek.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_lseek.Tpo -c -o arc/hl/arc_libhl_a-hl_lseek.o `test -f 'arc/hl/hl_lseek.c' || echo '$(srcdir)/'`arc/hl/hl_lseek.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_lseek.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_lseek.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_lseek.c' object='arc/hl/arc_libhl_a-hl_lseek.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_lseek.o `test -f 'arc/hl/hl_lseek.c' || echo '$(srcdir)/'`arc/hl/hl_lseek.c
+
+arc/hl/arc_libhl_a-hl_lseek.obj: arc/hl/hl_lseek.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_lseek.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_lseek.Tpo -c -o arc/hl/arc_libhl_a-hl_lseek.obj `if test -f 'arc/hl/hl_lseek.c'; then $(CYGPATH_W) 'arc/hl/hl_lseek.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_lseek.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_lseek.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_lseek.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_lseek.c' object='arc/hl/arc_libhl_a-hl_lseek.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_lseek.obj `if test -f 'arc/hl/hl_lseek.c'; then $(CYGPATH_W) 'arc/hl/hl_lseek.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_lseek.c'; fi`
+
+arc/hl/arc_libhl_a-hl_unlink.o: arc/hl/hl_unlink.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_unlink.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_unlink.Tpo -c -o arc/hl/arc_libhl_a-hl_unlink.o `test -f 'arc/hl/hl_unlink.c' || echo '$(srcdir)/'`arc/hl/hl_unlink.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_unlink.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_unlink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_unlink.c' object='arc/hl/arc_libhl_a-hl_unlink.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_unlink.o `test -f 'arc/hl/hl_unlink.c' || echo '$(srcdir)/'`arc/hl/hl_unlink.c
+
+arc/hl/arc_libhl_a-hl_unlink.obj: arc/hl/hl_unlink.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_unlink.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_unlink.Tpo -c -o arc/hl/arc_libhl_a-hl_unlink.obj `if test -f 'arc/hl/hl_unlink.c'; then $(CYGPATH_W) 'arc/hl/hl_unlink.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_unlink.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_unlink.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_unlink.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_unlink.c' object='arc/hl/arc_libhl_a-hl_unlink.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_unlink.obj `if test -f 'arc/hl/hl_unlink.c'; then $(CYGPATH_W) 'arc/hl/hl_unlink.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_unlink.c'; fi`
+
+arc/hl/arc_libhl_a-hl_isatty.o: arc/hl/hl_isatty.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_isatty.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_isatty.Tpo -c -o arc/hl/arc_libhl_a-hl_isatty.o `test -f 'arc/hl/hl_isatty.c' || echo '$(srcdir)/'`arc/hl/hl_isatty.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_isatty.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_isatty.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_isatty.c' object='arc/hl/arc_libhl_a-hl_isatty.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_isatty.o `test -f 'arc/hl/hl_isatty.c' || echo '$(srcdir)/'`arc/hl/hl_isatty.c
+
+arc/hl/arc_libhl_a-hl_isatty.obj: arc/hl/hl_isatty.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_isatty.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_isatty.Tpo -c -o arc/hl/arc_libhl_a-hl_isatty.obj `if test -f 'arc/hl/hl_isatty.c'; then $(CYGPATH_W) 'arc/hl/hl_isatty.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_isatty.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_isatty.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_isatty.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_isatty.c' object='arc/hl/arc_libhl_a-hl_isatty.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_isatty.obj `if test -f 'arc/hl/hl_isatty.c'; then $(CYGPATH_W) 'arc/hl/hl_isatty.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_isatty.c'; fi`
+
+arc/hl/arc_libhl_a-hl_fstat.o: arc/hl/hl_fstat.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_fstat.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_fstat.Tpo -c -o arc/hl/arc_libhl_a-hl_fstat.o `test -f 'arc/hl/hl_fstat.c' || echo '$(srcdir)/'`arc/hl/hl_fstat.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_fstat.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_fstat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_fstat.c' object='arc/hl/arc_libhl_a-hl_fstat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_fstat.o `test -f 'arc/hl/hl_fstat.c' || echo '$(srcdir)/'`arc/hl/hl_fstat.c
+
+arc/hl/arc_libhl_a-hl_fstat.obj: arc/hl/hl_fstat.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_fstat.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_fstat.Tpo -c -o arc/hl/arc_libhl_a-hl_fstat.obj `if test -f 'arc/hl/hl_fstat.c'; then $(CYGPATH_W) 'arc/hl/hl_fstat.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_fstat.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_fstat.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_fstat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_fstat.c' object='arc/hl/arc_libhl_a-hl_fstat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_fstat.obj `if test -f 'arc/hl/hl_fstat.c'; then $(CYGPATH_W) 'arc/hl/hl_fstat.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_fstat.c'; fi`
+
+arc/hl/arc_libhl_a-hl_clock.o: arc/hl/hl_clock.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_clock.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_clock.Tpo -c -o arc/hl/arc_libhl_a-hl_clock.o `test -f 'arc/hl/hl_clock.c' || echo '$(srcdir)/'`arc/hl/hl_clock.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_clock.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_clock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_clock.c' object='arc/hl/arc_libhl_a-hl_clock.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_clock.o `test -f 'arc/hl/hl_clock.c' || echo '$(srcdir)/'`arc/hl/hl_clock.c
+
+arc/hl/arc_libhl_a-hl_clock.obj: arc/hl/hl_clock.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_clock.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_clock.Tpo -c -o arc/hl/arc_libhl_a-hl_clock.obj `if test -f 'arc/hl/hl_clock.c'; then $(CYGPATH_W) 'arc/hl/hl_clock.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_clock.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_clock.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_clock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_clock.c' object='arc/hl/arc_libhl_a-hl_clock.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_clock.obj `if test -f 'arc/hl/hl_clock.c'; then $(CYGPATH_W) 'arc/hl/hl_clock.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_clock.c'; fi`
+
+arc/hl/arc_libhl_a-hl_gettimeofday.o: arc/hl/hl_gettimeofday.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_gettimeofday.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_gettimeofday.Tpo -c -o arc/hl/arc_libhl_a-hl_gettimeofday.o `test -f 'arc/hl/hl_gettimeofday.c' || echo '$(srcdir)/'`arc/hl/hl_gettimeofday.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_gettimeofday.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_gettimeofday.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_gettimeofday.c' object='arc/hl/arc_libhl_a-hl_gettimeofday.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_gettimeofday.o `test -f 'arc/hl/hl_gettimeofday.c' || echo '$(srcdir)/'`arc/hl/hl_gettimeofday.c
+
+arc/hl/arc_libhl_a-hl_gettimeofday.obj: arc/hl/hl_gettimeofday.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_gettimeofday.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_gettimeofday.Tpo -c -o arc/hl/arc_libhl_a-hl_gettimeofday.obj `if test -f 'arc/hl/hl_gettimeofday.c'; then $(CYGPATH_W) 'arc/hl/hl_gettimeofday.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_gettimeofday.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_gettimeofday.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_gettimeofday.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_gettimeofday.c' object='arc/hl/arc_libhl_a-hl_gettimeofday.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_gettimeofday.obj `if test -f 'arc/hl/hl_gettimeofday.c'; then $(CYGPATH_W) 'arc/hl/hl_gettimeofday.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_gettimeofday.c'; fi`
+
+arc/hl/arc_libhl_a-hl_argc.o: arc/hl/hl_argc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_argc.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_argc.Tpo -c -o arc/hl/arc_libhl_a-hl_argc.o `test -f 'arc/hl/hl_argc.c' || echo '$(srcdir)/'`arc/hl/hl_argc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_argc.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_argc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_argc.c' object='arc/hl/arc_libhl_a-hl_argc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_argc.o `test -f 'arc/hl/hl_argc.c' || echo '$(srcdir)/'`arc/hl/hl_argc.c
+
+arc/hl/arc_libhl_a-hl_argc.obj: arc/hl/hl_argc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_argc.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_argc.Tpo -c -o arc/hl/arc_libhl_a-hl_argc.obj `if test -f 'arc/hl/hl_argc.c'; then $(CYGPATH_W) 'arc/hl/hl_argc.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_argc.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_argc.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_argc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_argc.c' object='arc/hl/arc_libhl_a-hl_argc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_argc.obj `if test -f 'arc/hl/hl_argc.c'; then $(CYGPATH_W) 'arc/hl/hl_argc.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_argc.c'; fi`
+
+arc/hl/arc_libhl_a-hl_argv.o: arc/hl/hl_argv.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_argv.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_argv.Tpo -c -o arc/hl/arc_libhl_a-hl_argv.o `test -f 'arc/hl/hl_argv.c' || echo '$(srcdir)/'`arc/hl/hl_argv.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_argv.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_argv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_argv.c' object='arc/hl/arc_libhl_a-hl_argv.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_argv.o `test -f 'arc/hl/hl_argv.c' || echo '$(srcdir)/'`arc/hl/hl_argv.c
+
+arc/hl/arc_libhl_a-hl_argv.obj: arc/hl/hl_argv.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_argv.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_argv.Tpo -c -o arc/hl/arc_libhl_a-hl_argv.obj `if test -f 'arc/hl/hl_argv.c'; then $(CYGPATH_W) 'arc/hl/hl_argv.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_argv.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_argv.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_argv.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_argv.c' object='arc/hl/arc_libhl_a-hl_argv.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_argv.obj `if test -f 'arc/hl/hl_argv.c'; then $(CYGPATH_W) 'arc/hl/hl_argv.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_argv.c'; fi`
+
+arc/hl/arc_libhl_a-hl_exit.o: arc/hl/hl_exit.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_exit.o -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_exit.Tpo -c -o arc/hl/arc_libhl_a-hl_exit.o `test -f 'arc/hl/hl_exit.c' || echo '$(srcdir)/'`arc/hl/hl_exit.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_exit.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_exit.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_exit.c' object='arc/hl/arc_libhl_a-hl_exit.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_exit.o `test -f 'arc/hl/hl_exit.c' || echo '$(srcdir)/'`arc/hl/hl_exit.c
+
+arc/hl/arc_libhl_a-hl_exit.obj: arc/hl/hl_exit.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/hl/arc_libhl_a-hl_exit.obj -MD -MP -MF arc/hl/$(DEPDIR)/arc_libhl_a-hl_exit.Tpo -c -o arc/hl/arc_libhl_a-hl_exit.obj `if test -f 'arc/hl/hl_exit.c'; then $(CYGPATH_W) 'arc/hl/hl_exit.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_exit.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/hl/$(DEPDIR)/arc_libhl_a-hl_exit.Tpo arc/hl/$(DEPDIR)/arc_libhl_a-hl_exit.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hl/hl_exit.c' object='arc/hl/arc_libhl_a-hl_exit.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhl_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/hl/arc_libhl_a-hl_exit.obj `if test -f 'arc/hl/hl_exit.c'; then $(CYGPATH_W) 'arc/hl/hl_exit.c'; else $(CYGPATH_W) '$(srcdir)/arc/hl/hl_exit.c'; fi`
+
+arc/arc_libhsdk_uart_a-hsdk-uart-setup.o: arc/hsdk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhsdk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhsdk_uart_a-hsdk-uart-setup.o -MD -MP -MF arc/$(DEPDIR)/arc_libhsdk_uart_a-hsdk-uart-setup.Tpo -c -o arc/arc_libhsdk_uart_a-hsdk-uart-setup.o `test -f 'arc/hsdk-uart-setup.c' || echo '$(srcdir)/'`arc/hsdk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhsdk_uart_a-hsdk-uart-setup.Tpo arc/$(DEPDIR)/arc_libhsdk_uart_a-hsdk-uart-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hsdk-uart-setup.c' object='arc/arc_libhsdk_uart_a-hsdk-uart-setup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhsdk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhsdk_uart_a-hsdk-uart-setup.o `test -f 'arc/hsdk-uart-setup.c' || echo '$(srcdir)/'`arc/hsdk-uart-setup.c
+
+arc/arc_libhsdk_uart_a-hsdk-uart-setup.obj: arc/hsdk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhsdk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libhsdk_uart_a-hsdk-uart-setup.obj -MD -MP -MF arc/$(DEPDIR)/arc_libhsdk_uart_a-hsdk-uart-setup.Tpo -c -o arc/arc_libhsdk_uart_a-hsdk-uart-setup.obj `if test -f 'arc/hsdk-uart-setup.c'; then $(CYGPATH_W) 'arc/hsdk-uart-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/hsdk-uart-setup.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libhsdk_uart_a-hsdk-uart-setup.Tpo arc/$(DEPDIR)/arc_libhsdk_uart_a-hsdk-uart-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/hsdk-uart-setup.c' object='arc/arc_libhsdk_uart_a-hsdk-uart-setup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libhsdk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libhsdk_uart_a-hsdk-uart-setup.obj `if test -f 'arc/hsdk-uart-setup.c'; then $(CYGPATH_W) 'arc/hsdk-uart-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/hsdk-uart-setup.c'; fi`
+
+arc/arc_libiotdk_uart_a-iotdk-uart-setup.o: arc/iotdk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libiotdk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libiotdk_uart_a-iotdk-uart-setup.o -MD -MP -MF arc/$(DEPDIR)/arc_libiotdk_uart_a-iotdk-uart-setup.Tpo -c -o arc/arc_libiotdk_uart_a-iotdk-uart-setup.o `test -f 'arc/iotdk-uart-setup.c' || echo '$(srcdir)/'`arc/iotdk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libiotdk_uart_a-iotdk-uart-setup.Tpo arc/$(DEPDIR)/arc_libiotdk_uart_a-iotdk-uart-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/iotdk-uart-setup.c' object='arc/arc_libiotdk_uart_a-iotdk-uart-setup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libiotdk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libiotdk_uart_a-iotdk-uart-setup.o `test -f 'arc/iotdk-uart-setup.c' || echo '$(srcdir)/'`arc/iotdk-uart-setup.c
+
+arc/arc_libiotdk_uart_a-iotdk-uart-setup.obj: arc/iotdk-uart-setup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libiotdk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libiotdk_uart_a-iotdk-uart-setup.obj -MD -MP -MF arc/$(DEPDIR)/arc_libiotdk_uart_a-iotdk-uart-setup.Tpo -c -o arc/arc_libiotdk_uart_a-iotdk-uart-setup.obj `if test -f 'arc/iotdk-uart-setup.c'; then $(CYGPATH_W) 'arc/iotdk-uart-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/iotdk-uart-setup.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libiotdk_uart_a-iotdk-uart-setup.Tpo arc/$(DEPDIR)/arc_libiotdk_uart_a-iotdk-uart-setup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/iotdk-uart-setup.c' object='arc/arc_libiotdk_uart_a-iotdk-uart-setup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libiotdk_uart_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libiotdk_uart_a-iotdk-uart-setup.obj `if test -f 'arc/iotdk-uart-setup.c'; then $(CYGPATH_W) 'arc/iotdk-uart-setup.c'; else $(CYGPATH_W) '$(srcdir)/arc/iotdk-uart-setup.c'; fi`
+
+arc/arc_libuart_8250_a-uart-8250.o: arc/uart-8250.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libuart_8250_a-uart-8250.o -MD -MP -MF arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250.Tpo -c -o arc/arc_libuart_8250_a-uart-8250.o `test -f 'arc/uart-8250.c' || echo '$(srcdir)/'`arc/uart-8250.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250.Tpo arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/uart-8250.c' object='arc/arc_libuart_8250_a-uart-8250.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libuart_8250_a-uart-8250.o `test -f 'arc/uart-8250.c' || echo '$(srcdir)/'`arc/uart-8250.c
+
+arc/arc_libuart_8250_a-uart-8250.obj: arc/uart-8250.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libuart_8250_a-uart-8250.obj -MD -MP -MF arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250.Tpo -c -o arc/arc_libuart_8250_a-uart-8250.obj `if test -f 'arc/uart-8250.c'; then $(CYGPATH_W) 'arc/uart-8250.c'; else $(CYGPATH_W) '$(srcdir)/arc/uart-8250.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250.Tpo arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/uart-8250.c' object='arc/arc_libuart_8250_a-uart-8250.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libuart_8250_a-uart-8250.obj `if test -f 'arc/uart-8250.c'; then $(CYGPATH_W) 'arc/uart-8250.c'; else $(CYGPATH_W) '$(srcdir)/arc/uart-8250.c'; fi`
+
+arc/arc_libuart_8250_a-uart-8250-stub.o: arc/uart-8250-stub.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libuart_8250_a-uart-8250-stub.o -MD -MP -MF arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250-stub.Tpo -c -o arc/arc_libuart_8250_a-uart-8250-stub.o `test -f 'arc/uart-8250-stub.c' || echo '$(srcdir)/'`arc/uart-8250-stub.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250-stub.Tpo arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250-stub.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/uart-8250-stub.c' object='arc/arc_libuart_8250_a-uart-8250-stub.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libuart_8250_a-uart-8250-stub.o `test -f 'arc/uart-8250-stub.c' || echo '$(srcdir)/'`arc/uart-8250-stub.c
+
+arc/arc_libuart_8250_a-uart-8250-stub.obj: arc/uart-8250-stub.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libuart_8250_a-uart-8250-stub.obj -MD -MP -MF arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250-stub.Tpo -c -o arc/arc_libuart_8250_a-uart-8250-stub.obj `if test -f 'arc/uart-8250-stub.c'; then $(CYGPATH_W) 'arc/uart-8250-stub.c'; else $(CYGPATH_W) '$(srcdir)/arc/uart-8250-stub.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250-stub.Tpo arc/$(DEPDIR)/arc_libuart_8250_a-uart-8250-stub.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/uart-8250-stub.c' object='arc/arc_libuart_8250_a-uart-8250-stub.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libuart_8250_a-uart-8250-stub.obj `if test -f 'arc/uart-8250-stub.c'; then $(CYGPATH_W) 'arc/uart-8250-stub.c'; else $(CYGPATH_W) '$(srcdir)/arc/uart-8250-stub.c'; fi`
+
+arc/arc_libuart_8250_a-sbrk.o: arc/sbrk.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libuart_8250_a-sbrk.o -MD -MP -MF arc/$(DEPDIR)/arc_libuart_8250_a-sbrk.Tpo -c -o arc/arc_libuart_8250_a-sbrk.o `test -f 'arc/sbrk.c' || echo '$(srcdir)/'`arc/sbrk.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libuart_8250_a-sbrk.Tpo arc/$(DEPDIR)/arc_libuart_8250_a-sbrk.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/sbrk.c' object='arc/arc_libuart_8250_a-sbrk.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libuart_8250_a-sbrk.o `test -f 'arc/sbrk.c' || echo '$(srcdir)/'`arc/sbrk.c
+
+arc/arc_libuart_8250_a-sbrk.obj: arc/sbrk.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libuart_8250_a-sbrk.obj -MD -MP -MF arc/$(DEPDIR)/arc_libuart_8250_a-sbrk.Tpo -c -o arc/arc_libuart_8250_a-sbrk.obj `if test -f 'arc/sbrk.c'; then $(CYGPATH_W) 'arc/sbrk.c'; else $(CYGPATH_W) '$(srcdir)/arc/sbrk.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libuart_8250_a-sbrk.Tpo arc/$(DEPDIR)/arc_libuart_8250_a-sbrk.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/sbrk.c' object='arc/arc_libuart_8250_a-sbrk.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libuart_8250_a-sbrk.obj `if test -f 'arc/sbrk.c'; then $(CYGPATH_W) 'arc/sbrk.c'; else $(CYGPATH_W) '$(srcdir)/arc/sbrk.c'; fi`
+
+arc/arc_libuart_8250_a-mcount.o: arc/mcount.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libuart_8250_a-mcount.o -MD -MP -MF arc/$(DEPDIR)/arc_libuart_8250_a-mcount.Tpo -c -o arc/arc_libuart_8250_a-mcount.o `test -f 'arc/mcount.c' || echo '$(srcdir)/'`arc/mcount.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libuart_8250_a-mcount.Tpo arc/$(DEPDIR)/arc_libuart_8250_a-mcount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/mcount.c' object='arc/arc_libuart_8250_a-mcount.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libuart_8250_a-mcount.o `test -f 'arc/mcount.c' || echo '$(srcdir)/'`arc/mcount.c
+
+arc/arc_libuart_8250_a-mcount.obj: arc/mcount.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arc/arc_libuart_8250_a-mcount.obj -MD -MP -MF arc/$(DEPDIR)/arc_libuart_8250_a-mcount.Tpo -c -o arc/arc_libuart_8250_a-mcount.obj `if test -f 'arc/mcount.c'; then $(CYGPATH_W) 'arc/mcount.c'; else $(CYGPATH_W) '$(srcdir)/arc/mcount.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arc/$(DEPDIR)/arc_libuart_8250_a-mcount.Tpo arc/$(DEPDIR)/arc_libuart_8250_a-mcount.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='arc/mcount.c' object='arc/arc_libuart_8250_a-mcount.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arc_libuart_8250_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o arc/arc_libuart_8250_a-mcount.obj `if test -f 'arc/mcount.c'; then $(CYGPATH_W) 'arc/mcount.c'; else $(CYGPATH_W) '$(srcdir)/arc/mcount.c'; fi`
+
 arm/arm_librdimon_v2m_a-_exit.o: arm/_exit.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(arm_librdimon_v2m_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT arm/arm_librdimon_v2m_a-_exit.o -MD -MP -MF arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Tpo -c -o arm/arm_librdimon_v2m_a-_exit.o `test -f 'arm/_exit.c' || echo '$(srcdir)/'`arm/_exit.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Tpo arm/$(DEPDIR)/arm_librdimon_v2m_a-_exit.Po
@@ -8816,6 +9492,8 @@ distclean-generic:
 	-rm -f aarch64/$(am__dirstamp)
 	-rm -f arc/$(DEPDIR)/$(am__dirstamp)
 	-rm -f arc/$(am__dirstamp)
+	-rm -f arc/hl/$(DEPDIR)/$(am__dirstamp)
+	-rm -f arc/hl/$(am__dirstamp)
 	-rm -f arm/$(DEPDIR)/$(am__dirstamp)
 	-rm -f arm/$(am__dirstamp)
 	-rm -f bfin/$(DEPDIR)/$(am__dirstamp)
@@ -8908,7 +9586,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \
 
 distclean: distclean-recursive
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) cr16/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arc/hl/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) cr16/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR)
 	-rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
 	distclean-hdr distclean-local distclean-tags
@@ -9052,7 +9730,7 @@ installcheck-am:
 maintainer-clean: maintainer-clean-recursive
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
 	-rm -rf $(top_srcdir)/autom4te.cache
-	-rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) cr16/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR)
+	-rm -rf ./$(DEPDIR) aarch64/$(DEPDIR) arc/$(DEPDIR) arc/hl/$(DEPDIR) arm/$(DEPDIR) bfin/$(DEPDIR) cr16/$(DEPDIR) csky/$(DEPDIR) d30v/$(DEPDIR) epiphany/$(DEPDIR) fr30/$(DEPDIR) frv/$(DEPDIR) ft32/$(DEPDIR) i386/$(DEPDIR) i960/$(DEPDIR) iq2000/$(DEPDIR) libnosys/$(DEPDIR) lm32/$(DEPDIR) m32r/$(DEPDIR) mcore/$(DEPDIR) microblaze/$(DEPDIR) mn10200/$(DEPDIR) mn10300/$(DEPDIR) moxie/$(DEPDIR) msp430/$(DEPDIR) nds32/$(DEPDIR) nios2/$(DEPDIR) or1k/$(DEPDIR) or1k/boards/$(DEPDIR) pru/$(DEPDIR) riscv/$(DEPDIR) rl78/$(DEPDIR) rx/$(DEPDIR) sparc/$(DEPDIR) sparc_leon/$(DEPDIR) tic6x/$(DEPDIR) v850/$(DEPDIR) visium/$(DEPDIR) xstormy16/$(DEPDIR) xtensa/$(DEPDIR) xtensa/boards/esp32/$(DEPDIR) xtensa/boards/esp32s3/$(DEPDIR)
 	-rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-aminfo \
 	maintainer-clean-generic maintainer-clean-local
diff --git a/libgloss/arc/Makefile.inc b/libgloss/arc/Makefile.inc
index fe9cc7610..9cc5880e1 100644
--- a/libgloss/arc/Makefile.inc
+++ b/libgloss/arc/Makefile.inc
@@ -5,8 +5,98 @@ multilibtool_LIBRARIES += %D%/libnsim.a
 	%D%/nsim-syscalls.c \
 	%D%/sbrk.c
 
+multilibtool_LIBRARIES += %D%/libhl.a
+%C%_libhl_a_CPPFLAGS = -I$(srcdir)/%D%
+%C%_libhl_a_SOURCES = \
+	%D%/arc-timer.c \
+	%D%/hl-stub.c \
+	%D%/hl-setup.c \
+	%D%/libcfunc.c \
+	%D%/sbrk.c \
+	%D%/mcount.c \
+	%D%/hl/hl_gw.c \
+	%D%/hl/hl_api.c \
+	%D%/hl/hl_open.c \
+	%D%/hl/hl_close.c \
+	%D%/hl/hl_read.c \
+	%D%/hl/hl_write.c \
+	%D%/hl/hl_lseek.c \
+	%D%/hl/hl_unlink.c \
+	%D%/hl/hl_isatty.c \
+	%D%/hl/hl_fstat.c \
+	%D%/hl/hl_clock.c \
+	%D%/hl/hl_gettimeofday.c \
+	%D%/hl/hl_argc.c \
+	%D%/hl/hl_argv.c \
+	%D%/hl/hl_exit.c
+
+multilibtool_LIBRARIES += %D%/libuart_8250.a
+%C%_libuart_8250_a_CPPFLAGS = -I$(srcdir)/%D%
+%C%_libuart_8250_a_SOURCES = \
+	%D%/uart-8250.c \
+	%D%/uart-8250-stub.c \
+	%D%/sbrk.c \
+	%D%/mcount.c
+
+multilibtool_LIBRARIES += %D%/libiotdk_uart.a
+%C%_libiotdk_uart_a_CPPFLAGS = -I$(srcdir)/%D%
+%C%_libiotdk_uart_a_SOURCES = %D%/iotdk-uart-setup.c
+
+multilibtool_LIBRARIES += %D%/libhsdk_uart.a
+%C%_libhsdk_uart_a_CPPFLAGS = -I$(srcdir)/%D%
+%C%_libhsdk_uart_a_SOURCES = %D%/hsdk-uart-setup.c
+
+multilibtool_LIBRARIES += %D%/libemsk_uart.a
+%C%_libemsk_uart_a_CPPFLAGS = -I$(srcdir)/%D%
+%C%_libemsk_uart_a_SOURCES = %D%/emsk-uart-setup.c
+
+multilibtool_LIBRARIES += %D%/libemsdp_uart.a
+%C%_libemsdp_uart_a_CPPFLAGS = -I$(srcdir)/%D%
+%C%_libemsdp_uart_a_SOURCES = %D%/emsdp-uart-setup.c
+
 multilibtool_DATA += \
 	%D%/crt0.o \
 	%D%/gcrt0.o \
+	%D%/arc-main-helper.o \
 	%D%/nano.specs \
-	%D%/nsim.specs
+	%D%/nsim.specs \
+	%D%/hl.specs \
+	%D%/arcv2elf-common.ld \
+	%D%/emsdp1.1_ram.specs \
+	%D%/emsdp1.1_ram.ld \
+	%D%/emsdp1.1.specs \
+	%D%/emsdp1.1.ld \
+	%D%/emsdp1.2_ram.specs \
+	%D%/emsdp1.2_ram.ld \
+	%D%/emsdp1.2.specs \
+	%D%/emsdp1.2.ld \
+	%D%/emsk1_em4.specs \
+	%D%/emsk1_em4.ld \
+	%D%/emsk1_em6_ram.specs \
+	%D%/emsk1_em6_ram.ld \
+	%D%/emsk1_em6.specs \
+	%D%/emsk1_em6.ld \
+	%D%/emsk2.1_em5d.specs \
+	%D%/emsk2.1_em5d.ld \
+	%D%/emsk2.1_em7d_ram.specs \
+	%D%/emsk2.1_em7d_ram.ld \
+	%D%/emsk2.1_em7d.specs \
+	%D%/emsk2.1_em7d.ld \
+	%D%/emsk2.2_em7d_ram.specs \
+	%D%/emsk2.2_em7d_ram.ld \
+	%D%/emsk2.2_em7d.specs \
+	%D%/emsk2.2_em7d.ld \
+	%D%/emsk2.2_em9d_ram.specs \
+	%D%/emsk2.2_em9d_ram.ld \
+	%D%/emsk2.2_em9d.specs \
+	%D%/emsk2.2_em9d.ld \
+	%D%/emsk2.2_em11d_ram.specs \
+	%D%/emsk2.2_em11d_ram.ld \
+	%D%/emsk2.2_em11d.specs \
+	%D%/emsk2.2_em11d.ld \
+	%D%/hsdk.specs \
+	%D%/hsdk.ld \
+	%D%/iotdk.specs \
+	%D%/iotdk.ld
+
+libobjs_a_SOURCES += %D%/crt0.S %D%/gcrt0.S %D%/arc-main-helper.c
-- 
2.39.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 00/15] A series of fixes for ARC and libgloss update
  2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
                   ` (14 preceding siblings ...)
  2024-05-21  9:56 ` [PATCH 15/15] arc: libgloss: Add build rules for new boards kolerov93
@ 2024-05-22 18:28 ` Jeff Johnston
  15 siblings, 0 replies; 17+ messages in thread
From: Jeff Johnston @ 2024-05-22 18:28 UTC (permalink / raw)
  To: kolerov93; +Cc: newlib, shahab, claziss

[-- Attachment #1: Type: text/plain, Size: 10958 bytes --]

Patches applied.  Thanks.

-- Jeff J.

On Tue, May 21, 2024 at 5:58 AM <kolerov93@gmail.com> wrote:

> From: Yuriy Kolerov <kolerov93@gmail.com>
>
> This a series of patches for Synopsys ARC port that
> have accumulated over the past years. It contains
> several small fixes and a significant update of
> libgloss for all supported boards for ARC targets:
> IoT Development Kit, HS Development Kit, EM SDP
> and EM Starter Kit.
>
> Claudiu Zissulescu (3):
>   arc: libgloss: Use long calls attribute for exit_halt
>   arc: libc: Add support of 16-entry register file
>   arc: libgloss: Use atexit to setup fini routines
>
> Luis Silva (1):
>   arc: libgloss: Use fstat call instead of stat for nSIM
>
> Shahab Vahedi (1):
>   arc: libc: Record r58/r59 in long-jump's buffer
>
> Vladimir Isaev (1):
>   arc: libgloss: Introduce hostlink interface
>
> Yuriy Kolerov (9):
>   arc: libc,libgloss: Remove .file directive from .S files
>   arc: libgloss: Clean registers before any use
>   arc: libgloss: Add UART 8250 library
>   arc: libgloss: Add a linker script common for all boards
>   arc: libgloss: Add support of IoT Development Kit board
>   arc: libgloss: Add support of HS Development Kit board
>   arc: libgloss: Add support of EM SDP board
>   arc: libgloss: Add support of EM Starter Kit board
>   arc: libgloss: Add build rules for new boards
>
>  libgloss/Makefile.in                       | 1216 +++++++++++++++-----
>  libgloss/arc/Makefile.inc                  |   92 +-
>  libgloss/arc/arc-main-helper.c             |   73 ++
>  libgloss/arc/arc-timer.c                   |  129 +++
>  libgloss/arc/arc-timer.h                   |   25 +
>  libgloss/arc/arcv2elf-common.ld            |  233 ++++
>  libgloss/arc/crt0.S                        |   93 +-
>  libgloss/arc/emsdp-uart-setup.c            |   32 +
>  libgloss/arc/emsdp1.1.ld                   |   15 +
>  libgloss/arc/emsdp1.1.specs                |   18 +
>  libgloss/arc/emsdp1.1_ram.ld               |   15 +
>  libgloss/arc/emsdp1.1_ram.specs            |   18 +
>  libgloss/arc/emsdp1.2.ld                   |   15 +
>  libgloss/arc/emsdp1.2.specs                |   18 +
>  libgloss/arc/emsdp1.2_ram.ld               |   15 +
>  libgloss/arc/emsdp1.2_ram.specs            |   18 +
>  libgloss/arc/emsk-uart-setup.c             |   33 +
>  libgloss/arc/emsk1_em4.ld                  |   14 +
>  libgloss/arc/emsk1_em4.specs               |   18 +
>  libgloss/arc/emsk1_em6.ld                  |   14 +
>  libgloss/arc/emsk1_em6.specs               |   18 +
>  libgloss/arc/emsk1_em6_ram.ld              |   14 +
>  libgloss/arc/emsk1_em6_ram.specs           |   18 +
>  libgloss/arc/emsk2.1_em5d.ld               |   14 +
>  libgloss/arc/emsk2.1_em5d.specs            |   18 +
>  libgloss/arc/emsk2.1_em7d.ld               |   15 +
>  libgloss/arc/emsk2.1_em7d.specs            |   18 +
>  libgloss/arc/emsk2.1_em7d_ram.ld           |   15 +
>  libgloss/arc/emsk2.1_em7d_ram.specs        |   18 +
>  libgloss/arc/emsk2.2_em11d.ld              |   15 +
>  libgloss/arc/emsk2.2_em11d.specs           |   18 +
>  libgloss/arc/emsk2.2_em11d_ram.ld          |   15 +
>  libgloss/arc/emsk2.2_em11d_ram.specs       |   18 +
>  libgloss/arc/emsk2.2_em7d.ld               |   15 +
>  libgloss/arc/emsk2.2_em7d.specs            |   18 +
>  libgloss/arc/emsk2.2_em7d_ram.ld           |   15 +
>  libgloss/arc/emsk2.2_em7d_ram.specs        |   18 +
>  libgloss/arc/emsk2.2_em9d.ld               |   15 +
>  libgloss/arc/emsk2.2_em9d.specs            |   18 +
>  libgloss/arc/emsk2.2_em9d_ram.ld           |   15 +
>  libgloss/arc/emsk2.2_em9d_ram.specs        |   18 +
>  libgloss/arc/hl-setup.c                    |   27 +
>  libgloss/arc/hl-stub.c                     |   81 ++
>  libgloss/arc/hl.specs                      |   14 +
>  libgloss/arc/hl/hl_api.c                   |  350 ++++++
>  libgloss/arc/hl/hl_api.h                   |   77 ++
>  libgloss/arc/hl/hl_argc.c                  |   45 +
>  libgloss/arc/hl/hl_argv.c                  |   67 ++
>  libgloss/arc/hl/hl_clock.c                 |   87 ++
>  libgloss/arc/hl/hl_close.c                 |   58 +
>  libgloss/arc/hl/hl_exit.c                  |   42 +
>  libgloss/arc/hl/hl_fstat.c                 |   95 ++
>  libgloss/arc/hl/hl_gettimeofday.c          |   69 ++
>  libgloss/arc/hl/hl_gw.c                    |  180 +++
>  libgloss/arc/hl/hl_gw.h                    |   46 +
>  libgloss/arc/hl/hl_isatty.c                |   64 ++
>  libgloss/arc/hl/hl_lseek.c                 |   68 ++
>  libgloss/arc/hl/hl_open.c                  |   89 ++
>  libgloss/arc/hl/hl_read.c                  |  105 ++
>  libgloss/arc/hl/hl_toolchain.h             |   53 +
>  libgloss/arc/hl/hl_unlink.c                |   59 +
>  libgloss/arc/hl/hl_write.c                 |   97 ++
>  libgloss/arc/hsdk-uart-setup.c             |   32 +
>  libgloss/arc/hsdk.ld                       |   13 +
>  libgloss/arc/hsdk.specs                    |   18 +
>  libgloss/arc/iotdk-uart-setup.c            |   36 +
>  libgloss/arc/iotdk.ld                      |   14 +
>  libgloss/arc/iotdk.specs                   |   18 +
>  libgloss/arc/libcfunc.c                    |    6 +-
>  libgloss/arc/nsim-syscalls.c               |    6 +-
>  libgloss/arc/readme-hostlink.md            |   90 ++
>  libgloss/arc/uart-8250-stub.c              |  116 ++
>  libgloss/arc/uart-8250.c                   |  316 +++++
>  libgloss/arc/uart-8250.h                   |   25 +
>  newlib/libc/include/machine/setjmp.h       |    2 +-
>  newlib/libc/machine/arc/memcmp-bs-norm.S   |    5 +-
>  newlib/libc/machine/arc/memcmp-stub.c      |    5 +-
>  newlib/libc/machine/arc/memcmp.S           |    5 +-
>  newlib/libc/machine/arc/memcpy-archs.S     |    5 +-
>  newlib/libc/machine/arc/memcpy-bs.S        |    5 +-
>  newlib/libc/machine/arc/memcpy-stub.c      |    5 +-
>  newlib/libc/machine/arc/memcpy.S           |    5 +-
>  newlib/libc/machine/arc/memset-archs.S     |    5 +-
>  newlib/libc/machine/arc/memset-bs.S        |    5 +-
>  newlib/libc/machine/arc/memset-stub.c      |    5 +-
>  newlib/libc/machine/arc/memset.S           |    5 +-
>  newlib/libc/machine/arc/setjmp.S           |   28 +-
>  newlib/libc/machine/arc/strchr-bs-norm.S   |    5 +-
>  newlib/libc/machine/arc/strchr-bs.S        |    5 +-
>  newlib/libc/machine/arc/strchr-stub.c      |    5 +-
>  newlib/libc/machine/arc/strcmp-archs.S     |    5 +-
>  newlib/libc/machine/arc/strcmp-stub.c      |    5 +-
>  newlib/libc/machine/arc/strcmp.S           |    5 +-
>  newlib/libc/machine/arc/strcpy-bs-arc600.S |    5 +-
>  newlib/libc/machine/arc/strcpy-bs.S        |    5 +-
>  newlib/libc/machine/arc/strcpy-stub.c      |    5 +-
>  newlib/libc/machine/arc/strcpy.S           |    5 +-
>  newlib/libc/machine/arc/strlen-bs-norm.S   |    5 +-
>  newlib/libc/machine/arc/strlen-bs.S        |    5 +-
>  newlib/libc/machine/arc/strlen-stub.c      |    5 +-
>  newlib/libc/machine/arc/strlen.S           |    5 +-
>  newlib/libc/machine/arc/strncpy-bs.S       |    5 +-
>  newlib/libc/machine/arc/strncpy-stub.c     |    5 +-
>  newlib/libc/machine/arc/strncpy.S          |    5 +-
>  104 files changed, 4712 insertions(+), 371 deletions(-)
>  create mode 100644 libgloss/arc/arc-main-helper.c
>  create mode 100644 libgloss/arc/arc-timer.c
>  create mode 100644 libgloss/arc/arc-timer.h
>  create mode 100644 libgloss/arc/arcv2elf-common.ld
>  create mode 100644 libgloss/arc/emsdp-uart-setup.c
>  create mode 100644 libgloss/arc/emsdp1.1.ld
>  create mode 100644 libgloss/arc/emsdp1.1.specs
>  create mode 100644 libgloss/arc/emsdp1.1_ram.ld
>  create mode 100644 libgloss/arc/emsdp1.1_ram.specs
>  create mode 100644 libgloss/arc/emsdp1.2.ld
>  create mode 100644 libgloss/arc/emsdp1.2.specs
>  create mode 100644 libgloss/arc/emsdp1.2_ram.ld
>  create mode 100644 libgloss/arc/emsdp1.2_ram.specs
>  create mode 100644 libgloss/arc/emsk-uart-setup.c
>  create mode 100644 libgloss/arc/emsk1_em4.ld
>  create mode 100644 libgloss/arc/emsk1_em4.specs
>  create mode 100644 libgloss/arc/emsk1_em6.ld
>  create mode 100644 libgloss/arc/emsk1_em6.specs
>  create mode 100644 libgloss/arc/emsk1_em6_ram.ld
>  create mode 100644 libgloss/arc/emsk1_em6_ram.specs
>  create mode 100644 libgloss/arc/emsk2.1_em5d.ld
>  create mode 100644 libgloss/arc/emsk2.1_em5d.specs
>  create mode 100644 libgloss/arc/emsk2.1_em7d.ld
>  create mode 100644 libgloss/arc/emsk2.1_em7d.specs
>  create mode 100644 libgloss/arc/emsk2.1_em7d_ram.ld
>  create mode 100644 libgloss/arc/emsk2.1_em7d_ram.specs
>  create mode 100644 libgloss/arc/emsk2.2_em11d.ld
>  create mode 100644 libgloss/arc/emsk2.2_em11d.specs
>  create mode 100644 libgloss/arc/emsk2.2_em11d_ram.ld
>  create mode 100644 libgloss/arc/emsk2.2_em11d_ram.specs
>  create mode 100644 libgloss/arc/emsk2.2_em7d.ld
>  create mode 100644 libgloss/arc/emsk2.2_em7d.specs
>  create mode 100644 libgloss/arc/emsk2.2_em7d_ram.ld
>  create mode 100644 libgloss/arc/emsk2.2_em7d_ram.specs
>  create mode 100644 libgloss/arc/emsk2.2_em9d.ld
>  create mode 100644 libgloss/arc/emsk2.2_em9d.specs
>  create mode 100644 libgloss/arc/emsk2.2_em9d_ram.ld
>  create mode 100644 libgloss/arc/emsk2.2_em9d_ram.specs
>  create mode 100644 libgloss/arc/hl-setup.c
>  create mode 100644 libgloss/arc/hl-stub.c
>  create mode 100644 libgloss/arc/hl.specs
>  create mode 100644 libgloss/arc/hl/hl_api.c
>  create mode 100644 libgloss/arc/hl/hl_api.h
>  create mode 100644 libgloss/arc/hl/hl_argc.c
>  create mode 100644 libgloss/arc/hl/hl_argv.c
>  create mode 100644 libgloss/arc/hl/hl_clock.c
>  create mode 100644 libgloss/arc/hl/hl_close.c
>  create mode 100644 libgloss/arc/hl/hl_exit.c
>  create mode 100644 libgloss/arc/hl/hl_fstat.c
>  create mode 100644 libgloss/arc/hl/hl_gettimeofday.c
>  create mode 100644 libgloss/arc/hl/hl_gw.c
>  create mode 100644 libgloss/arc/hl/hl_gw.h
>  create mode 100644 libgloss/arc/hl/hl_isatty.c
>  create mode 100644 libgloss/arc/hl/hl_lseek.c
>  create mode 100644 libgloss/arc/hl/hl_open.c
>  create mode 100644 libgloss/arc/hl/hl_read.c
>  create mode 100644 libgloss/arc/hl/hl_toolchain.h
>  create mode 100644 libgloss/arc/hl/hl_unlink.c
>  create mode 100644 libgloss/arc/hl/hl_write.c
>  create mode 100644 libgloss/arc/hsdk-uart-setup.c
>  create mode 100644 libgloss/arc/hsdk.ld
>  create mode 100644 libgloss/arc/hsdk.specs
>  create mode 100644 libgloss/arc/iotdk-uart-setup.c
>  create mode 100644 libgloss/arc/iotdk.ld
>  create mode 100644 libgloss/arc/iotdk.specs
>  create mode 100644 libgloss/arc/readme-hostlink.md
>  create mode 100644 libgloss/arc/uart-8250-stub.c
>  create mode 100644 libgloss/arc/uart-8250.c
>  create mode 100644 libgloss/arc/uart-8250.h
>
> --
> 2.39.2
>
>

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2024-05-22 18:29 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-21  9:56 [PATCH 00/15] A series of fixes for ARC and libgloss update kolerov93
2024-05-21  9:56 ` [PATCH 01/15] arc: libgloss: Use long calls attribute for exit_halt kolerov93
2024-05-21  9:56 ` [PATCH 02/15] arc: libc: Add support of 16-entry register file kolerov93
2024-05-21  9:56 ` [PATCH 03/15] arc: libc,libgloss: Remove .file directive from .S files kolerov93
2024-05-21  9:56 ` [PATCH 04/15] arc: libc: Record r58/r59 in long-jump's buffer kolerov93
2024-05-21  9:56 ` [PATCH 05/15] arc: libgloss: Use fstat call instead of stat for nSIM kolerov93
2024-05-21  9:56 ` [PATCH 06/15] arc: libgloss: Introduce hostlink interface kolerov93
2024-05-21  9:56 ` [PATCH 07/15] arc: libgloss: Use atexit to setup fini routines kolerov93
2024-05-21  9:56 ` [PATCH 08/15] arc: libgloss: Clean registers before any use kolerov93
2024-05-21  9:56 ` [PATCH 09/15] arc: libgloss: Add UART 8250 library kolerov93
2024-05-21  9:56 ` [PATCH 10/15] arc: libgloss: Add a linker script common for all boards kolerov93
2024-05-21  9:56 ` [PATCH 11/15] arc: libgloss: Add support of IoT Development Kit board kolerov93
2024-05-21  9:56 ` [PATCH 12/15] arc: libgloss: Add support of HS " kolerov93
2024-05-21  9:56 ` [PATCH 13/15] arc: libgloss: Add support of EM SDP board kolerov93
2024-05-21  9:56 ` [PATCH 14/15] arc: libgloss: Add support of EM Starter Kit board kolerov93
2024-05-21  9:56 ` [PATCH 15/15] arc: libgloss: Add build rules for new boards kolerov93
2024-05-22 18:28 ` [PATCH 00/15] A series of fixes for ARC and libgloss update Jeff Johnston

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).