aboutsummaryrefslogtreecommitdiff
path: root/libgloss/arc/hl/hl_gw.h
diff options
context:
space:
mode:
authorVladimir Isaev <vvisaev@gmail.com>2024-05-21 10:56:49 +0100
committerJeff Johnston <jjohnstn@redhat.com>2024-05-22 14:25:44 -0400
commit6d5331054ee3c957a4d3c8df05321f670c962020 (patch)
tree5c60c2803923a50dba14b1b6fa230889a8d839a9 /libgloss/arc/hl/hl_gw.h
parent25d110dcbdb3a1a02b11f8c53504a27efcda9e82 (diff)
downloadnewlib-6d5331054ee3c957a4d3c8df05321f670c962020.zip
newlib-6d5331054ee3c957a4d3c8df05321f670c962020.tar.gz
newlib-6d5331054ee3c957a4d3c8df05321f670c962020.tar.bz2
arc: libgloss: Introduce hostlink interface
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>
Diffstat (limited to 'libgloss/arc/hl/hl_gw.h')
-rw-r--r--libgloss/arc/hl/hl_gw.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/libgloss/arc/hl/hl_gw.h b/libgloss/arc/hl/hl_gw.h
new file mode 100644
index 0000000..b019ee0
--- /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 */