diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
| commit | 268a53de823a6750d6256ee1fb1e7707b4b45740 (patch) | |
| tree | 42c1799a9a82b2f7d9790ee9fe181d72a7274751 /device/lib/pdk13 | |
| download | sdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz | |
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'device/lib/pdk13')
| -rw-r--r-- | device/lib/pdk13/Makefile | 108 | ||||
| -rw-r--r-- | device/lib/pdk13/Makefile.in | 108 | ||||
| -rw-r--r-- | device/lib/pdk13/__gptrget.s | 53 | ||||
| -rw-r--r-- | device/lib/pdk13/heap.s | 41 |
4 files changed, 310 insertions, 0 deletions
diff --git a/device/lib/pdk13/Makefile b/device/lib/pdk13/Makefile new file mode 100644 index 0000000..922159c --- /dev/null +++ b/device/lib/pdk13/Makefile @@ -0,0 +1,108 @@ +# libc/pdk13 Makefile + + +srcdir = . +top_builddir = ../../.. + +LIB_TYPE = RANLIB + +SCC = $(top_builddir)/bin/sdcc -mpdk13 +SAS = $(top_builddir)/bin/sdaspdk13 + +# override PORTDIR defined by super (parent) makefile +override PORTDIR = ../build/pdk13 + +include $(srcdir)/../incl.mk + +PDK13_FLOAT = $(COMMON_FLOAT) + +PDK13_INT = $(COMMON_INT) \ + _muluchar.c \ + _mulschar.c \ + _mulint.c \ + _divuchar.c \ + _divschar.c \ + _divuint.c \ + _divsint.c \ + _moduchar.c \ + _modschar.c \ + _moduint.c \ + _modsint.c + +PDK13_LONG = $(COMMON_LONG) \ + _divulong.c \ + _mullong.c + +PDK13_LONGLONG = $(COMMON_LONGLONG) \ + _rrulonglong.c \ + _rrslonglong.c \ + _rlulonglong.c \ + _rlslonglong.c \ + _mullonglong.c \ + _divslonglong.c \ + _divulonglong.c \ + _modslonglong.c \ + _modulonglong.c + +PDK13_SDCC = $(COMMON_SDCC) \ + _itoa.c \ + _startup.c \ + _strcmp.c \ + _strcpy.c \ + _strlen.c \ + _memmove.c \ + __memcpy.c \ + memcpy.c \ + sprintf.c \ + vprintf.c + +PDK13SOURCES = $(addprefix ../,$(PDK13_FLOAT) $(PDK13_INT) $(PDK13_LONG) $(PDK13_LONGLONG) $(PDK13_SDCC)) +PDK13OBJECTS = $(patsubst %.c,%.rel,$(PDK13_FLOAT) $(PDK13_INT) $(PDK13_LONG) $(PDK13_LONGLONG) $(PDK13_SDCC)) + +OBJ = __gptrget.rel heap.rel + +LIB = pdk13.lib +CC = $(SCC) +AS = $(SAS) +ASFLAGS = -plosgff + +CFLAGS = -I$(srcdir)/../../include -I. --std-c11 + +all: $(PORTDIR)/$(LIB) + +$(PORTDIR)/$(LIB): $(OBJ) $(PDK13OBJECTS) Makefile +ifeq ($(LIB_TYPE), SDCCLIB) + rm -f $@; \ + $(top_builddir)/bin/sdcclib -a $@ $(OBJ) $(PDK13OBJECTS) +else + ifeq ($(LIB_TYPE), AR) + $(top_builddir)/bin/sdar -rcSD $@ $(OBJ) $(PDK13OBJECTS) + else + ifeq ($(LIB_TYPE), RANLIB) + $(top_builddir)/bin/sdar -rcD $@ $(OBJ) $(PDK13OBJECTS) + else + rm -f $@ + for i in $(basename $(OBJ) $(PDK13OBJECTS)); do echo $$i >>$@; done + cp $(OBJ) $(PDK13OBJECTS) $(PORTDIR) + endif + endif +endif + +%.rel: %.c + $(CC) $(CFLAGS) -c $< + +%.rel: %.s + @# TODO: sdas should place it\'s output in the current dir + test $(srcdir) = . || cp $< . + -$(AS) $(ASFLAGS) $(notdir $<) + test $(srcdir) = . || rm $(notdir $<) + +%.rel: ../%.c + $(CC) $(CFLAGS) -c $< + +clean: + rm -f *.rel *.sym *.lst *~ $(CLEANSPEC) *.dump* *.asm *.lib + +distclean: clean + rm -f Makefile + diff --git a/device/lib/pdk13/Makefile.in b/device/lib/pdk13/Makefile.in new file mode 100644 index 0000000..ce9e003 --- /dev/null +++ b/device/lib/pdk13/Makefile.in @@ -0,0 +1,108 @@ +# libc/pdk13 Makefile + +VPATH = @srcdir@ +srcdir = @srcdir@ +top_builddir = @top_builddir@ + +LIB_TYPE = @LIB_TYPE@ + +SCC = $(top_builddir)/bin/sdcc -mpdk13 +SAS = $(top_builddir)/bin/sdaspdk13 + +# override PORTDIR defined by super (parent) makefile +override PORTDIR = ../build/pdk13 + +include $(srcdir)/../incl.mk + +PDK13_FLOAT = $(COMMON_FLOAT) + +PDK13_INT = $(COMMON_INT) \ + _muluchar.c \ + _mulschar.c \ + _mulint.c \ + _divuchar.c \ + _divschar.c \ + _divuint.c \ + _divsint.c \ + _moduchar.c \ + _modschar.c \ + _moduint.c \ + _modsint.c + +PDK13_LONG = $(COMMON_LONG) \ + _divulong.c \ + _mullong.c + +PDK13_LONGLONG = $(COMMON_LONGLONG) \ + _rrulonglong.c \ + _rrslonglong.c \ + _rlulonglong.c \ + _rlslonglong.c \ + _mullonglong.c \ + _divslonglong.c \ + _divulonglong.c \ + _modslonglong.c \ + _modulonglong.c + +PDK13_SDCC = $(COMMON_SDCC) \ + _itoa.c \ + _startup.c \ + _strcmp.c \ + _strcpy.c \ + _strlen.c \ + _memmove.c \ + __memcpy.c \ + memcpy.c \ + sprintf.c \ + vprintf.c + +PDK13SOURCES = $(addprefix ../,$(PDK13_FLOAT) $(PDK13_INT) $(PDK13_LONG) $(PDK13_LONGLONG) $(PDK13_SDCC)) +PDK13OBJECTS = $(patsubst %.c,%.rel,$(PDK13_FLOAT) $(PDK13_INT) $(PDK13_LONG) $(PDK13_LONGLONG) $(PDK13_SDCC)) + +OBJ = __gptrget.rel heap.rel + +LIB = pdk13.lib +CC = $(SCC) +AS = $(SAS) +ASFLAGS = -plosgff + +CFLAGS = -I$(srcdir)/../../include -I. --std-c11 + +all: $(PORTDIR)/$(LIB) + +$(PORTDIR)/$(LIB): $(OBJ) $(PDK13OBJECTS) Makefile +ifeq ($(LIB_TYPE), SDCCLIB) + rm -f $@; \ + $(top_builddir)/bin/sdcclib -a $@ $(OBJ) $(PDK13OBJECTS) +else + ifeq ($(LIB_TYPE), AR) + $(top_builddir)/bin/sdar -rcSD $@ $(OBJ) $(PDK13OBJECTS) + else + ifeq ($(LIB_TYPE), RANLIB) + $(top_builddir)/bin/sdar -rcD $@ $(OBJ) $(PDK13OBJECTS) + else + rm -f $@ + for i in $(basename $(OBJ) $(PDK13OBJECTS)); do echo $$i >>$@; done + cp $(OBJ) $(PDK13OBJECTS) $(PORTDIR) + endif + endif +endif + +%.rel: %.c + $(CC) $(CFLAGS) -c $< + +%.rel: %.s + @# TODO: sdas should place it\'s output in the current dir + test $(srcdir) = . || cp $< . + -$(AS) $(ASFLAGS) $(notdir $<) + test $(srcdir) = . || rm $(notdir $<) + +%.rel: ../%.c + $(CC) $(CFLAGS) -c $< + +clean: + rm -f *.rel *.sym *.lst *~ $(CLEANSPEC) *.dump* *.asm *.lib + +distclean: clean + rm -f Makefile + diff --git a/device/lib/pdk13/__gptrget.s b/device/lib/pdk13/__gptrget.s new file mode 100644 index 0000000..a60a278 --- /dev/null +++ b/device/lib/pdk13/__gptrget.s @@ -0,0 +1,53 @@ +;-------------------------------------------------------------------------- +; __gptrget.s - read from pointer +; +; Copyright (c) 2019, Philipp Klaus Krause +; +; This library is free software; you can redistribute it and/or modify it +; under the terms of the GNU General Public License as published by the +; Free Software Foundation; either version 2, or (at your option) any +; later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this library; see the file COPYING. If not, write to the +; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, +; MA 02110-1301, USA. +; +; As a special exception, if you link this library with other files, +; some of which are compiled with SDCC, to produce an executable, +; this library does not by itself cause the resulting executable to +; be covered by the GNU General Public License. This exception does +; not however invalidate any other reasons why the executable file +; might be covered by the GNU General Public License. +;-------------------------------------------------------------------------- + +.module __gptrget +.area CODE + +__gptrget:: + sub a, #0x80 + t1sn f, c + goto code + + ; Pointer to RAM + idxm a, p + ret + + ; Pointer to ROM +code: + ; Put pointer on stack + xch a, p + push af ; Put lower byte of pointer on stack. + mov a, sp + add a, #-1 + xch a, p + idxm p, a ; Put upper byte of pointer on stack. + + ; Jump to it. ret there will return from the call to __gprtget + ret + diff --git a/device/lib/pdk13/heap.s b/device/lib/pdk13/heap.s new file mode 100644 index 0000000..f36c476 --- /dev/null +++ b/device/lib/pdk13/heap.s @@ -0,0 +1,41 @@ +;-------------------------------------------------------------------------- +; heap.s +; +; Copyright (C) 2014, Ben Shi +; +; This library is free software; you can redistribute it and/or modify it +; under the terms of the GNU General Public License as published by the +; Free Software Foundation; either version 2, or (at your option) any +; later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this library; see the file COPYING. If not, write to the +; Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, +; MA 02110-1301, USA. +; +; As a special exception, if you link this library with other files, +; some of which are compiled with SDCC, to produce an executable, +; this library does not by itself cause the resulting executable to +; be covered by the GNU General Public License. This exception does +; not however invalidate any other reasons why the executable file +; might be covered by the GNU General Public License. +;-------------------------------------------------------------------------- + + .globl ___sdcc_heap_init + .globl ___sdcc_heap + .globl ___sdcc_heap_end + + .area GSINIT + call ___sdcc_heap_init + + .area DATA + ; For now just allocate 64 bytes for the heap. +___sdcc_heap:: + .ds 63 +___sdcc_heap_end:: + .ds 1 |
