mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-28 06:43:39 +02:00
![]() + RTL support: o VFP exceptions are disabled by default on Darwin, because they cause kernel panics on iPhoneOS 2.2.1 at least o all denormals are truncated to 0 on Darwin, because disabling that also causes kernel panics on iPhoneOS 2.2.1 (probably because otherwise denormals can also cause exceptions) * set softfloat rounding mode correctly for non-wince/darwin/vfp targets + compiler support: only half the number of single precision registers is available due to limitations of the register allocator + added a number of comments about why the stackframe on ARM is set up the way it is by the compiler + added regtype and subregtype info to regsets, because they're also used for VFP registers (+ support in assembler reader) + various generic support routines for dealing with floating point values located in integer registers that have to be transferred to mm registers (needed for VFP) * renamed use_sse() to use_vectorfpu() and also use it for ARM/vfp support o only superficially tested for Linux (compiler compiled with -Cpvfpv6 -Cfvfpv2 works on a Cortex-A8, no testsuite run performed -- at least the fpu exception handler still needs to be implemented), Darwin has been tested more thoroughly + added ARMv6 cpu type and made it default for Darwin/ARM + ARMv6+ implementations of atomic operations using ldrex/strex * don't use r9 on Darwin/ARM, as it's reserved under certain circumstances (don't know yet which ones) * changed C-test object files for ARM/Darwin to ARMv6 versions * check in assembler reader that regsets are not empty, because instructions with a regset operand have undefined behaviour in that case * fixed resultdef of tarmtypeconvnode.first_int_to_real in case of int64->single type conversion * fixed constant pool locations in case 64 bit constants are generated, and/or when vfp instructions with limited reach are present WARNING: when using VFP on an ARMv6 or later cpu, you *must* compile all code with -Cparmv6 (or higher), or you will get crashes. The reason is that storing/restoring multiple VFP registers must happen using different instructions on pre/post-ARMv6. git-svn-id: trunk@14317 - |
||
---|---|---|
.. | ||
i_amiga.pas | ||
i_atari.pas | ||
i_beos.pas | ||
i_bsd.pas | ||
i_embed.pas | ||
i_emx.pas | ||
i_gba.pas | ||
i_go32v2.pas | ||
i_haiku.pas | ||
i_linux.pas | ||
i_macos.pas | ||
i_morph.pas | ||
i_nds.pas | ||
i_nwl.pas | ||
i_nwm.pas | ||
i_os2.pas | ||
i_palmos.pas | ||
i_sunos.pas | ||
i_symbian.pas | ||
i_watcom.pas | ||
i_wdosx.pas | ||
i_win.pas | ||
mac_crea.txt | ||
t_amiga.pas | ||
t_atari.pas | ||
t_beos.pas | ||
t_bsd.pas | ||
t_embed.pas | ||
t_emx.pas | ||
t_gba.pas | ||
t_go32v2.pas | ||
t_haiku.pas | ||
t_linux.pas | ||
t_macos.pas | ||
t_morph.pas | ||
t_nds.pas | ||
t_nwl.pas | ||
t_nwm.pas | ||
t_os2.pas | ||
t_palmos.pas | ||
t_sunos.pas | ||
t_symbian.pas | ||
t_watcom.pas | ||
t_wdosx.pas | ||
t_win.pas |