summaryrefslogtreecommitdiff
path: root/rtl/arm
Commit message (Collapse)AuthorAgeFilesLines
* * thumb2: Optimize fillchar a bit more with a wider inner loop chunk sizelaksen2021-04-011-42/+60
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@49100 3ad0048d-3df7-0310-abae-a5850022a9f2
* * thumb2: Make fillchar smaller, faster and more reliable. Some gas versions ↵laksen2021-04-011-14/+19
| | | | | | remove the "mov r0,r0" making the calculated branch break git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@49098 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix spelling error of revision 48023pierre2021-01-041-1/+1
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@48024 3ad0048d-3df7-0310-abae-a5850022a9f2
* * Set softfloat_rounding_mode indise SetRoundMode function for all CPUs.pierre2021-01-031-1/+2
| | | | | | | | * SetRoundMode returns previous rounding mode value for all CPUs. git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@48018 3ad0048d-3df7-0310-abae-a5850022a9f2
* * readd SmallInt typecasts to SmallInt overload of SwapEndiansvenbarth2020-09-191-1/+1
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@46898 3ad0048d-3df7-0310-abae-a5850022a9f2
* * avoid range check error when using SwapEndian with 16-bit constantssvenbarth2020-09-191-2/+2
| | | | | | + added test git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@46897 3ad0048d-3df7-0310-abae-a5850022a9f2
* * some inconsistency regarding FPC_NONE usage fixedflorian2019-12-241-2/+8
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@43770 3ad0048d-3df7-0310-abae-a5850022a9f2
* * improved software floating point exception handling in the rtlflorian2019-10-103-3/+49
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@43163 3ad0048d-3df7-0310-abae-a5850022a9f2
* + create defines with FPU capabilitesflorian2019-08-133-5/+27
| | | | | | + make use of FPU capability defines in the rtl git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@42681 3ad0048d-3df7-0310-abae-a5850022a9f2
* + software handling of exceptions on armflorian2019-07-281-0/+57
| | | | | | * reworked software handling of exceptions so they can be check lazily git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@42525 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix cycling of arm compiler starting with release ppcarm 3.0.4pierre2019-01-301-0/+12
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@41140 3ad0048d-3df7-0310-abae-a5850022a9f2
* * replaced fstm/fldm with vstm/vldm for clang compatibilityjonas2019-01-291-3/+3
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@41136 3ad0048d-3df7-0310-abae-a5850022a9f2
* + initial work for tls-based threadvar support on arm-linuxflorian2018-11-071-0/+9
| | | | git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@40267 3ad0048d-3df7-0310-abae-a5850022a9f2
* * cpu specific header file for the system unit: cpuh.inc, moved several ↵florian2017-11-012-1/+16
| | | | | | declarations into it git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@37542 3ad0048d-3df7-0310-abae-a5850022a9f2
* * ARM: Never use the "BLX label" instruction. Use "BL label" instead.yury2017-05-041-32/+12
| | | | | | | | The linker will always change BL to BLX if necessary, but not vice versa (linker version dependent). "BLX label" ALWAYS changes the instruction set. It changes a processor in ARM state to Thumb state, or a processor in Thumb state to ARM state. git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@36086 3ad0048d-3df7-0310-abae-a5850022a9f2
* * split fpc_mul_<64 bit> into separate procedures with and without overflow ↵florian2017-02-191-6/+31
| | | | | | checking git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@35454 3ad0048d-3df7-0310-abae-a5850022a9f2
* + cpu unit for arm (linux only so far)florian2016-03-061-0/+91
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@33184 3ad0048d-3df7-0310-abae-a5850022a9f2
* * fix VFPv4 supportflorian2016-03-065-7/+7
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@33182 3ad0048d-3df7-0310-abae-a5850022a9f2
* Use a temporary variable to avoid potential problems of overwriting the ↵laksen2016-02-251-3/+5
| | | | | | argument. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@33119 3ad0048d-3df7-0310-abae-a5850022a9f2
* * do not generate blx instructions, the generation of blx instead of bl was ↵florian2015-12-291-4/+7
| | | | | | introduced some years ago but today it proves to be wrong: if necessary, the linker converts the bl into a blx, this is also how gcc and clang handle it git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@32788 3ad0048d-3df7-0310-abae-a5850022a9f2
* * arm-android: Use kuser_memory_barrier by default.yury2015-10-171-0/+6
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@32077 3ad0048d-3df7-0310-abae-a5850022a9f2
* * arm: Support for the kuser_memory_barrier kernel function for memory barriers.yury2015-10-171-6/+40
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@32075 3ad0048d-3df7-0310-abae-a5850022a9f2
* * arm-android: Use kuser_cmpxchg for Interlocked* functions when RTL is ↵yury2015-10-171-2/+4
| | | | | | compiled for the ARMv5t CPU. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@32072 3ad0048d-3df7-0310-abae-a5850022a9f2
* fix InterlockedCompareExchange on ARM-Linux: kuser_cmpxchg destroys r3, ↵karoly2015-10-161-5/+7
| | | | | | which needs to be restored, if we have to loop git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@32063 3ad0048d-3df7-0310-abae-a5850022a9f2
* * Removed unused vars in RTL.yury2015-09-171-0/+2
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@31750 3ad0048d-3df7-0310-abae-a5850022a9f2
* * ARM assembler routines are PIC compatible now.yury2015-09-151-36/+127
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@31703 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix fillchar for >ARMv3laksen2015-09-071-0/+4
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@31573 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix ARMv3/ARMv2A support.laksen2015-09-061-0/+2
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@31561 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix some minor UMULL, and FPv4_S16 define problemslaksen2015-09-063-5/+5
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@31560 3ad0048d-3df7-0310-abae-a5850022a9f2
* Test the proper CPUARM capability when chosing between blx and bl.laksen2015-03-221-3/+3
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@30273 3ad0048d-3df7-0310-abae-a5850022a9f2
* Undo recent VFP assembler changes to make bootstrapping from 3.0.1 possible.laksen2015-03-143-9/+9
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@30183 3ad0048d-3df7-0310-abae-a5850022a9f2
* Merge from armiw branch.laksen2015-03-134-12/+10
| | | | | | | | Update ARM internal assembler to support most ARM, Thumb and Thumb-2 instructions. Changed generation of VFP instructions to use UAL mnemonics. Added divided and unified assembler syntax support to ARM assembly reader. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@30181 3ad0048d-3df7-0310-abae-a5850022a9f2
* * always pass the architecture to the arm assemblerflorian2015-02-211-7/+20
| | | | | | * encode pld/ldrd in arm.inc using .long, so it causes no errors with older architectures settings of the assembler git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@29780 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix broken ldrd assembler syntax in RTLlaksen2014-11-302-2/+2
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@29187 3ad0048d-3df7-0310-abae-a5850022a9f2
* - unneeded spaces removedflorian2014-10-041-5/+5
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28740 3ad0048d-3df7-0310-abae-a5850022a9f2
* new division helpers for ARM by Nico Erfurth. on our ARMv5 core hardware ↵karoly2014-07-292-2/+192
| | | | | | they're 22%-36% faster than the generic ones for the most common case. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28273 3ad0048d-3df7-0310-abae-a5850022a9f2
* - ARM: cleaned out code corresponding to FPC_STRTOSHORTSTRINGPROC not ↵sergei2014-05-312-8/+0
| | | | | | defined (obsolete and removed from other targets long ago). git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27831 3ad0048d-3df7-0310-abae-a5850022a9f2
* - Don't compile fpc_abs_real and fpc_sqr_real if they are already defined ↵sergei2014-03-311-0/+4
| | | | | | (Mantis #25342). git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27408 3ad0048d-3df7-0310-abae-a5850022a9f2
* - RTL: cleaned out FPC_FREEMEM_X. We now have a dedicated compilerproc ↵sergei2014-03-231-3/+1
| | | | | | 'fpc_freemem' for this purpose. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27232 3ad0048d-3df7-0310-abae-a5850022a9f2
* * ARM: SetExceptionMask and SetRoundingMode must return the old value of ↵sergei2014-03-211-55/+58
| | | | | | mask/mode respectively, not the new one. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27217 3ad0048d-3df7-0310-abae-a5850022a9f2
* * Moved declarations of TFPURoundingMode,TFPUExceptionMask and ↵sergei2014-03-203-73/+10
| | | | | | | | | | TFPUPrecisionMode to System unit. Declarations in Math unit changed to aliases. * Changed type of softfloat_exception_mask and softfloat_exception_flags to TFPUExceptionMask, softfloat_rounding_mode to TFPURoundingMode. - Cleaned out numerous conversions happening when getting/setting exception mask and rounding mode. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27215 3ad0048d-3df7-0310-abae-a5850022a9f2
* - MIPS,SPARC and ARM-wince: removed remaining references to softfloat stuff.sergei2014-03-202-13/+0
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27204 3ad0048d-3df7-0310-abae-a5850022a9f2
* - Removed mathuh.inc files which are identical for all targets (except m68k, ↵sergei2014-03-181-27/+0
| | | | | | | | | see below), their contents moved into math.pp. + m68k/mathu.inc: added stub implementations for missing functions. git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27180 3ad0048d-3df7-0310-abae-a5850022a9f2
* * generate rfs/wfs for thumb2 only if an fpa fpu is usedflorian2014-03-111-7/+8
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27100 3ad0048d-3df7-0310-abae-a5850022a9f2
* * patch by Bernd which fixes InterLockedxxx functions on ARMv4T, resolves #25518florian2014-02-161-5/+46
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@26792 3ad0048d-3df7-0310-abae-a5850022a9f2
* reverted r25622 which was an accidental commit of some highly experimental ↵karoly2013-10-022-96/+7
| | | | | | debug code (sorry) git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@25623 3ad0048d-3df7-0310-abae-a5850022a9f2
* really fixed FillChar and fixed FillWord. fixes 8 tests.karoly2013-10-022-7/+96
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@25622 3ad0048d-3df7-0310-abae-a5850022a9f2
* Fix compilation of arm-wince on Linux(?).svenbarth2013-09-012-0/+24
| | | | | | | | rtl/arm/arm.inc & setjump.inc: * don't use BX if the current CPU (default for arm-wince is ARMv3) does not support it git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@25393 3ad0048d-3df7-0310-abae-a5850022a9f2
* * disable assembler versions of string routines for arm thumbflorian2013-03-251-0/+2
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23998 3ad0048d-3df7-0310-abae-a5850022a9f2
* + fpc_cpucodeinit for arm thumbflorian2013-03-241-0/+6
| | | | git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23984 3ad0048d-3df7-0310-abae-a5850022a9f2