Skip to content

Commit ff5a4a2

Browse files
author
Vladimir Isaev
committed
[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.
1 parent 3ebb48c commit ff5a4a2

33 files changed

+6620
-99
lines changed

libgloss/arc/Makefile.in

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ LD = @LD@
4343
RANLIB = @RANLIB@
4444

4545
UART_CFLAGS = @UART_CFLAGS@
46+
HL_CFLAGS = @HL_CFLAGS@
4647

4748
OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \
4849
then echo ${objroot}/../binutils/objdump ; \
@@ -51,7 +52,7 @@ OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \
5152
then echo ${objroot}/../binutils/objcopy ; \
5253
else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi`
5354

54-
CRT0 = gcrt0.o crt0.o
55+
CRT0 = gcrt0.o crt0.o semihost-helper.o
5556
CRT0_INSTALL = install-crt0
5657

5758
NSIM_BSP = libnsim.a
@@ -60,6 +61,7 @@ NSIM_OBJS = \
6061
nsim-syscalls.o \
6162
sbrk.o \
6263
mcount.o
64+
6365
NSIM_INSTALL = install-nsim
6466
NSIM_SCRIPTS = nsim.specs
6567

@@ -74,6 +76,32 @@ QEMU_OBJS = \
7476
QEMU_INSTALL = install-qemu
7577
QEMU_SCRIPTS = qemu.specs
7678

79+
HL_BSP = libhl.a
80+
HL_OBJS = \
81+
hl-stub.o \
82+
libcfunc.o \
83+
sbrk.o \
84+
mcount.o
85+
HL_DIR_OBJS = \
86+
hl/hl_gw.o \
87+
hl/hl_api.o \
88+
hl/hl_open.o \
89+
hl/hl_close.o \
90+
hl/hl_read.o \
91+
hl/hl_write.o \
92+
hl/hl_lseek.o \
93+
hl/hl_unlink.o \
94+
hl/hl_isatty.o \
95+
hl/hl_fstat.o \
96+
hl/hl_clock.o \
97+
hl/hl_gettimeofday.o \
98+
hl/hl_argc.o \
99+
hl/hl_argv.o \
100+
hl/hl_exit.o
101+
102+
HL_INSTALL = install-hl
103+
HL_SCRIPTS = hl.specs
104+
77105
UART_LIB = libdw_uart.a
78106
UART_OBJS = write.o \
79107
read.o \
@@ -88,17 +116,18 @@ MEMORY_MAPS = emsk_em9d.x \
88116
MEMORY_MAP_INSTALL = install-map
89117

90118
UART_DIR = uart-dir
119+
HL_DIR = hl-dir
91120

92121
CFLAGS = -g
93-
override CFLAGS += $(UART_CFLAGS)
122+
override CFLAGS += $(UART_CFLAGS) $(HL_CFLAGS)
94123

95124
CPU_FAMILY = $(findstring em,${MULTISUBDIR})
96125
ifeq ($(CPU_FAMILY), em)
97-
ALL = $(CRT0) $(NSIM_BSP) $(UART_LIB) $(QEMU_BSP)
126+
ALL = $(CRT0) $(NSIM_BSP) $(UART_LIB) $(QEMU_BSP) $(HL_BSP)
98127
else
99-
ALL = $(CRT0) $(NSIM_BSP) $(QEMU_BSP)
128+
ALL = $(CRT0) $(NSIM_BSP) $(QEMU_BSP) $(HL_BSP)
100129
endif
101-
ALL_INSTALL = $(CRT0_INSTALL) $(NSIM_INSTALL) $(NANO_INSTALL) $(UART_INSTALL) $(MEMORY_MAP_INSTALL) $(QEMU_INSTALL)
130+
ALL_INSTALL = $(CRT0_INSTALL) $(NSIM_INSTALL) $(NANO_INSTALL) $(UART_INSTALL) $(MEMORY_MAP_INSTALL) $(QEMU_INSTALL) $(HL_INSTALL)
102131

103132
# These are roughly topologically sorted in order to make porting more
104133
# streamlined.
@@ -132,15 +161,18 @@ FLAGS_TO_PASS = \
132161
all: $(ALL)
133162

134163
$(NSIM_BSP): $(NSIM_OBJS)
135-
$(AR) $(ARFLAGS) $@ $?
164+
$(AR) $(ARFLAGS) $@ $(NSIM_OBJS)
136165
$(RANLIB) $@
137166

138167
$(UART_LIB): $(UART_OBJS) $(UART_DIR)
139168
$(AR) $(ARFLAGS) $@ $(UART_OBJS) dw_uart/*.o
140169
$(RANLIB) $@
141170

171+
$(HL_DIR): hl
142172
$(UART_DIR): dw_uart
143-
for dir in .. ${SUBDIRS}; do \
173+
174+
$(HL_DIR) $(UART_DIR):
175+
for dir in .. $^; do \
144176
if [ x$$dir != x.. ]; then \
145177
if [ -d $$dir ]; then \
146178
(cd $$dir; $(MAKE) $(FLAGS_TO_PASS) all) || exit $$?; \
@@ -152,6 +184,13 @@ $(QEMU_BSP): $(QEMU_OBJS)
152184
$(AR) $(ARFLAGS) $@ $?
153185
$(RANLIB) $@
154186

187+
$(HL_DIR_OBJS): $(HL_DIR)
188+
true
189+
190+
$(HL_BSP): $(HL_OBJS) $(HL_DIR_OBJS)
191+
$(AR) $(ARFLAGS) $@ $?
192+
$(RANLIB) $@
193+
155194
libcfunc.o: libcfunc.c
156195
nsim-syscalls.o: nsim-syscalls.c
157196
sbrk.o: sbrk.c
@@ -163,6 +202,9 @@ qemu-write.o: qemu-write.c
163202
read.o: read.c
164203
stub.o: stub.c
165204
qemu-stub.o: qemu-stub.c
205+
hl-stub.o: hl-stub.c
206+
semihost-helper.o: semihost-helper.c
207+
166208
$(UART_OBJS):
167209
$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $(CFLAGS) $<
168210

@@ -211,6 +253,11 @@ $(QEMU_INSTALL):
211253
for x in $(QEMU_SCRIPTS); do \
212254
$(INSTALL_DATA) $(srcdir)/$$x $(DESTDIR)$(tooldir)/lib$(MULTISUBDIR)/$$x; done
213255

256+
$(HL_INSTALL):
257+
$(mkinstalldirs) $(DESTDIR)${tooldir}/lib${MULTISUBDIR}
258+
$(INSTALL_DATA) $(HL_BSP) $(DESTDIR)$(tooldir)/lib$(MULTISUBDIR)/$(HL_BSP)
259+
for x in $(HL_SCRIPTS); do \
260+
$(INSTALL_DATA) $(srcdir)/$$x $(DESTDIR)$(tooldir)/lib$(MULTISUBDIR)/$$x; done
214261

215262
$(MEMORY_MAP_INSTALL):
216263
$(mkinstalldirs) $(DESTDIR)${tooldir}/lib${MULTISUBDIR}

0 commit comments

Comments
 (0)