Commit Graph

58781 Commits

Author SHA1 Message Date
svenbarth
4e06d66d7f + implement RTL functionality for SEH for aarch64-win64
git-svn-id: trunk@44940 -
2020-04-21 06:05:59 +00:00
svenbarth
bfa5bf80e2 * inside the Win64 system unit convert FPC_USE_WIN64_SEH to a SYSTEM_USE_WIN_SEH
git-svn-id: trunk@44939 -
2020-04-21 06:05:55 +00:00
svenbarth
5c898fe795 * enable is_prefetch only for x86 code
git-svn-id: trunk@44938 -
2020-04-21 06:05:51 +00:00
svenbarth
c152796bf3 * rename RunErrorCodex64 to a more appropriate RunErrorCodeSEH
git-svn-id: trunk@44937 -
2020-04-21 06:05:46 +00:00
svenbarth
25c6f3a667 * the prefetch bug handling is specific to x86_64
git-svn-id: trunk@44936 -
2020-04-21 06:05:43 +00:00
svenbarth
f3c377f8d1 * use accessor functions to work with the TContext record
git-svn-id: trunk@44935 -
2020-04-21 06:05:39 +00:00
svenbarth
fed17122f8 * as a variant for SEH exception filters we allow them to be *duplicated* instead of being extracted; this can be done unconditionally as for extracted ones their code is set to Nil after they're done and thus won't be picked up by generate_code_exceptionfilters
git-svn-id: trunk@44934 -
2020-04-21 06:05:35 +00:00
svenbarth
26c45f550a * when building a reference with an identifier, initialize the operand so that page offsets of functions are handled correctly
git-svn-id: trunk@44933 -
2020-04-21 06:05:32 +00:00
svenbarth
1fb2d9540c * allow ADD instructions with a page offset load with either a symbol or a base register
git-svn-id: trunk@44932 -
2020-04-21 06:05:28 +00:00
svenbarth
f150fc6b7c * at least clang can savely generate relocatable readonly sections, so use "r" for aarch64-win64
git-svn-id: trunk@44931 -
2020-04-21 06:05:25 +00:00
svenbarth
329710f573 * use COFF sectionattrs for aarch64-win64 as well
git-svn-id: trunk@44930 -
2020-04-21 06:05:21 +00:00
svenbarth
3f40e00392 * the clang assembler for COFF requires at least an "r" to generate a readonly section
git-svn-id: trunk@44929 -
2020-04-21 06:05:18 +00:00
svenbarth
3f62c5f5ef + introduce a virtual method for writing the section flags
git-svn-id: trunk@44928 -
2020-04-21 06:05:14 +00:00
svenbarth
b5a4f8837c * rename the local sectionflags and sectionprogbits variables to the more clear usesectionflags and usesectionprogbits
git-svn-id: trunk@44927 -
2020-04-21 06:05:10 +00:00
svenbarth
61358b1eaa * it's rather useless that sectiontype2options is virtual as we can't use a class type, not to mention that the classes doing the overriding are for the internal assemblers/linkers, but we need it also for external
Thus we move the functionality of the overloads to the basemethod and remove the virtual directive; maybe we'll find a better solution in the future...

git-svn-id: trunk@44926 -
2020-04-21 06:05:06 +00:00
svenbarth
0cc592e9ee - remove sectiontype2options overload for mach-O, because the relevant sections have the correct flags in the base method already
git-svn-id: trunk@44925 -
2020-04-21 06:05:02 +00:00
svenbarth
12ef066897 + add functionality to store a node tree's required temp nodes and their flag upon entering the tree
git-svn-id: trunk@44924 -
2020-04-21 06:04:59 +00:00
svenbarth
41b1711589 * disable CPU and Signals units for Windows on AArch64 for now
git-svn-id: trunk@44923 -
2020-04-21 06:04:55 +00:00
svenbarth
1972b05cc8 * store and restore the 8087 control world only on x86 systems
git-svn-id: trunk@44922 -
2020-04-21 06:04:52 +00:00
svenbarth
c474b95dfc * disable some x86_64 specific assembly routines
git-svn-id: trunk@44921 -
2020-04-21 06:04:49 +00:00
svenbarth
79a4409587 * enable AArch64 for Win64 in fpmkunit and fpcmake
git-svn-id: trunk@44920 -
2020-04-21 06:04:45 +00:00
svenbarth
613a6e796a * Windows on AArch64 requires some DllCharacteristics in the header to be always set
git-svn-id: trunk@44919 -
2020-04-21 06:04:41 +00:00
svenbarth
40633835dc * Windows on Aarch64 requires a relocation section
git-svn-id: trunk@44918 -
2020-04-21 06:04:37 +00:00
svenbarth
3b1d5794e9 * Windows on AArch64 does not support ProgBits either
git-svn-id: trunk@44917 -
2020-04-21 06:04:34 +00:00
svenbarth
a6f1c04f22 * Windows does not support a GOT, so rely on page relative addressing
git-svn-id: trunk@44916 -
2020-04-21 06:04:31 +00:00
svenbarth
dfde4def62 + add a GAS compatible variant of the Clang assembler (currently used for Aarch64-Win64 as no GNU AS exists for that target, yet)
git-svn-id: trunk@44915 -
2020-04-21 06:04:27 +00:00
svenbarth
3af74d2fd2 + implement initial compiler support for Win64 on Aarch64
git-svn-id: trunk@44914 -
2020-04-21 06:04:22 +00:00
svenbarth
5b941e3cea + implement relocations for Aarch64 for the internal COFF linker
git-svn-id: trunk@44913 -
2020-04-21 06:04:15 +00:00
svenbarth
3e29742fd9 * for PE+ specific checks use a constant in systems.pas instead of an explicit list (easier to extend this way)
git-svn-id: trunk@44912 -
2020-04-21 06:04:10 +00:00
nickysn
f8b0c24024 + support pushing word-sized parameters in a_load_reg_cgpara
git-svn-id: branches/z80@44911 -
2020-04-21 03:48:36 +00:00
nickysn
2b4ed4e90d + inline assembler implementation of FillChar
git-svn-id: branches/z80@44910 -
2020-04-21 03:26:34 +00:00
nickysn
e261ea8e2b - disable some rtl/compiler features on the ZX Spectrum
git-svn-id: branches/z80@44909 -
2020-04-21 03:03:06 +00:00
nickysn
391990e456 * tg.direction is always -1 on the Z80
git-svn-id: branches/z80@44908 -
2020-04-21 03:02:43 +00:00
Károly Balogh
6630f47ab4 m68k-amiga: implemented LockDosList, UnlockDosList, and NextDosEntry helpers for legacy support
git-svn-id: trunk@44907 -
2020-04-21 03:01:17 +00:00
nickysn
d3e946b779 * fixed Z80 stack and temp allocation, so it doesn't have any wasted bytes
git-svn-id: branches/z80@44906 -
2020-04-21 02:51:44 +00:00
nickysn
1669254c5a + full RTL include, hidden behind ifdefs, because the code generator isn't able to compile it yet
git-svn-id: branches/z80@44905 -
2020-04-21 02:18:37 +00:00
nickysn
861ae0b139 + some rtl include files added
git-svn-id: branches/z80@44904 -
2020-04-21 02:11:52 +00:00
nickysn
aeafe0db40 + added math.inc and set.inc for Z80, empty for now
git-svn-id: branches/z80@44903 -
2020-04-21 02:05:10 +00:00
nickysn
6f874eefa6 + added keyboard input functions (ReadKey and KeyPressed) to the ZX Spectrum. Now you can start having fun! :)
git-svn-id: branches/z80@44902 -
2020-04-21 01:16:04 +00:00
nickysn
93be8bba50 + added fancier ZX Spectrum console output stuff: OpenChannel, Ink, Paper and GotoXY
git-svn-id: branches/z80@44901 -
2020-04-21 00:56:29 +00:00
nickysn
168c009bc3 - removed the 'sdcc-' prefix of sdasz80 and sdldz80
git-svn-id: branches/z80@44900 -
2020-04-20 23:50:45 +00:00
nickysn
d57ffc4745 * changed the object file format for z80-embedded and z80-zxspectrum to .rel
git-svn-id: branches/z80@44899 -
2020-04-20 23:36:15 +00:00
nickysn
2f68090dd6 * synchronized with trunk
git-svn-id: branches/z80@44898 -
2020-04-20 22:42:08 +00:00
nickysn
557a481743 + use normalize_ref in tcgz80.a_load_ref_reg
git-svn-id: branches/z80@44897 -
2020-04-20 21:44:36 +00:00
nickysn
1813727faf + support addr_full in the sdcc-sdasz80 asm writer
git-svn-id: branches/z80@44896 -
2020-04-20 21:38:31 +00:00
nickysn
bee3e9c354 + make use of normalize_ref in tcgz80.a_load_reg_ref
git-svn-id: branches/z80@44895 -
2020-04-20 21:34:10 +00:00
nickysn
a7b69cd18b - removed make_simple_ref, because normalize_ref should be used instead
git-svn-id: branches/z80@44894 -
2020-04-20 20:52:07 +00:00
nickysn
0d6e59e9ef + actually return the proper (HL) reference result in tcgz80.normalize_ref
git-svn-id: branches/z80@44893 -
2020-04-20 20:49:45 +00:00
nickysn
5c138c341f + added an output parameter to tcgz80.normalize_ref, that returns a list of the registers that were
actually used, so they can be freed after the reference is used.

git-svn-id: branches/z80@44892 -
2020-04-20 20:46:30 +00:00
nickysn
fc991af9d1 + added tregisterlist - dynarray of tregister, and methods get/uncpuregisters for allocating/freeing
a dynamic list of registers

git-svn-id: branches/z80@44891 -
2020-04-20 20:42:16 +00:00