+ Xtensa: RTL skeleton

git-svn-id: trunk@44320 -
This commit is contained in:
florian 2020-03-20 22:35:43 +00:00
parent 34d1b90921
commit 83a6efd759
11 changed files with 157 additions and 1 deletions

7
.gitattributes vendored
View File

@ -12070,6 +12070,13 @@ rtl/x86_64/setjumph.inc svneol=native#text/plain
rtl/x86_64/strings.inc svneol=native#text/plain
rtl/x86_64/stringss.inc svneol=native#text/plain
rtl/x86_64/x86_64.inc svneol=native#text/plain
rtl/xtensa/cpuh.inc svneol=native#text/plain
rtl/xtensa/makefile.cpu svneol=native#text/plain
rtl/xtensa/math.inc svneol=native#text/plain
rtl/xtensa/set.inc svneol=native#text/plain
rtl/xtensa/setjump.inc svneol=native#text/plain
rtl/xtensa/setjumph.inc svneol=native#text/plain
rtl/xtensa/xtensa.inc svneol=native#text/plain
tests/MPWMake -text
tests/Makefile svneol=native#text/plain
tests/Makefile.fpc svneol=native#text/plain

View File

@ -2,7 +2,7 @@
# Don't edit, this file is generated by FPCMake Version 2.0.0
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-netbsd m68k-amiga m68k-atari m68k-palmos m68k-macos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-haiku x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-android x86_64-aros x86_64-dragonfly arm-linux arm-netbsd arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin aarch64-android wasm-wasm sparc64-linux riscv32-linux riscv32-embedded riscv64-linux riscv64-embedded
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-netbsd m68k-amiga m68k-atari m68k-palmos m68k-macos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-haiku x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-android x86_64-aros x86_64-dragonfly arm-linux arm-netbsd arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin aarch64-android wasm-wasm sparc64-linux riscv32-linux riscv32-embedded riscv64-linux riscv64-embedded xtensa-embedded
BSDs = freebsd netbsd openbsd darwin dragonfly
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos win16 atari
@ -774,6 +774,9 @@ endif
ifeq ($(FULL_TARGET),riscv64-embedded)
override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings heapmgr consoleio sortbase $(CPU_SPECIFIC_COMMON_UNITS) dos ctypes charset cpall sysconst
endif
ifeq ($(FULL_TARGET),xtensa-embedded)
override TARGET_UNITS+=$(SYSTEMUNIT) $(CPU_UNITS) uuchar objpas iso7185 extpas strings heapmgr consoleio sortbase $(CPU_SPECIFIC_COMMON_UNITS) dos ctypes charset cpall sysconst
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_LOADERS+=$(LOADERS)
endif
@ -1050,6 +1053,9 @@ endif
ifeq ($(FULL_TARGET),riscv64-embedded)
override TARGET_LOADERS+=$(LOADERS)
endif
ifeq ($(FULL_TARGET),xtensa-embedded)
override TARGET_LOADERS+=$(LOADERS)
endif
override INSTALL_FPCPACKAGE=y
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
@ -1327,6 +1333,9 @@ endif
ifeq ($(FULL_TARGET),riscv64-embedded)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
ifeq ($(FULL_TARGET),xtensa-embedded)
override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC)
endif
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
@ -1603,6 +1612,9 @@ endif
ifeq ($(FULL_TARGET),riscv64-embedded)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
ifeq ($(FULL_TARGET),xtensa-embedded)
override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) $(ARCH)
endif
ifdef REQUIRE_UNITSDIR
override UNITSDIR+=$(REQUIRE_UNITSDIR)
endif

View File

@ -297,6 +297,14 @@ function do_isdevice(handle:thandle):boolean;forward;
{$define SYSPROCDEFINED}
{$endif cpuriscv64}
{$ifdef cpuxtensa}
{$ifdef SYSPROCDEFINED}
{$Error Can't determine processor type !}
{$endif}
{$i xtensa.inc} { Case dependent, don't change }
{$define SYSPROCDEFINED}
{$endif cpuxtensa}
{$ifndef SYSPROCDEFINED}
{$Error Can't determine processor type !}
{$endif}

View File

@ -348,6 +348,17 @@ Type
{$endif}
{$endif CPURISCV64}
{$ifdef CPUXTENSA}
{$define DEFAULT_DOUBLE}
{$ifndef FPUNONE}
{$define SUPPORT_SINGLE}
{$define SUPPORT_DOUBLE}
ValReal = Double;
{$endif}
{$endif CPUXTENSA}
{$if not declared(FarPointer)}
FarPointer = Pointer;
{$endif}

15
rtl/xtensa/cpuh.inc Normal file
View File

@ -0,0 +1,15 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2016 by the Free Pascal development team.
CPU specific system unit header file
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program 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.
**********************************************************************}

6
rtl/xtensa/makefile.cpu Normal file
View File

@ -0,0 +1,6 @@
#
# Here we set processor dependent include file names.
#
CPUNAMES=xtensa math set cpuh
CPUINCNAMES=$(addsuffix .inc,$(CPUNAMES))

15
rtl/xtensa/math.inc Normal file
View File

@ -0,0 +1,15 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2003 by the Free Pascal development team.
Implementation of mathematical Routines (only for real)
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program 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.
**********************************************************************}

15
rtl/xtensa/set.inc Normal file
View File

@ -0,0 +1,15 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2003 by the Free Pascal development team.
Include file with set operations called by the compiler
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program 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.
**********************************************************************}

26
rtl/xtensa/setjump.inc Normal file
View File

@ -0,0 +1,26 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2003 by the Free Pascal development team.
SetJmp and LongJmp implementation for exception handling
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program 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.
**********************************************************************}
function fpc_setjmp(var S : jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJMP'];nostackframe; compilerproc;
asm
end;
procedure fpc_longjmp(var S : jmp_buf;value : longint);assembler;[Public, alias : 'FPC_LONGJMP']; compilerproc;
asm
end;

25
rtl/xtensa/setjumph.inc Normal file
View File

@ -0,0 +1,25 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2003 by the Free Pascal development team.
SetJmp/Longjmp declarations
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program 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.
**********************************************************************}
type
jmp_buf = packed record
end;
pjmp_buf = ^jmp_buf;
function setjmp(var S : jmp_buf) : longint;[external name 'FPC_SETJMP'];
procedure longjmp(var S : jmp_buf;value : longint);[external name 'FPC_LONGJMP'];

16
rtl/xtensa/xtensa.inc Normal file
View File

@ -0,0 +1,16 @@
{
This file is part of the Free Pascal run time library.
Copyright (c) 2003 by the Free Pascal development team.
Processor dependent implementation for the system unit for
Xtensa
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program 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.
**********************************************************************}