Commit Graph

49 Commits

Author SHA1 Message Date
sergei
4ebc34c5e7 * Promoted result type of FPC_PCHAR_LENGTH and FPC_PWIDECHAR_LENGTH to SizeInt.
+ Check for nil pointer in FPC_PWIDECHAR_LENGTH

git-svn-id: trunk@17733 -
2011-06-13 04:59:17 +00:00
florian
0e74cea8ed * patch by Simon Ley to improve move on arm: unneeded plds are removed, resolves #19050
git-svn-id: trunk@17251 -
2011-04-05 18:44:10 +00:00
Jonas Maebe
c14574bb56 * don't change the fpu control word in the initialisation code of dynamic
libraries (mantis #16263, #16801)

git-svn-id: trunk@16347 -
2010-11-14 16:00:25 +00:00
Jonas Maebe
fbebd87593 * use BLX instead of "mov r14, r15; mov r15, reg" for a_call_reg on ARMv6
and above, so this also works when calling thumb code (should actually
    also be done for ARMv5T, but we don't have a monicker for that yet)
  * use BX instead of "mov r15, r14" for simple returns from subroutines
    on ARMv6+ to support returning to thumb code from ARM code (idem)

git-svn-id: trunk@14332 -
2009-12-04 22:38:50 +00:00
Jonas Maebe
d1538ab023 o added ARM VPFv2/VFPv3 support:
+ 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 -
2009-12-03 22:46:30 +00:00
Jonas Maebe
22aacd2a60 * return 0 for length(pchar(0)), like Kylix does (using corrected and
multi-platform version of patch in r12461, which caused the i386 version
    of fpc_pchar_length to return 0 in all cases, which used tabs, and did
    not include a test case)

git-svn-id: trunk@12464 -
2009-01-01 22:02:17 +00:00
yury
20a12503b8 * Fixed fpc_shortstr_to_shortstr for arm.
git-svn-id: trunk@10651 -
2008-04-13 16:17:14 +00:00
yury
3dc94e678d * Fixed fpc_shortstr_assign for arm.
git-svn-id: trunk@10635 -
2008-04-12 15:58:35 +00:00
yury
5dc6e54925 * Removed inline for procedures with assembler or formal parameters, since inline is not supported for them (compiler warns about that now). Even if there is no inline modifier in interface declaration of procedure, it is possible to specify inline in procedure implementation if needed (e.g. for generic implementations) and inlining will work for them.
git-svn-id: trunk@10629 -
2008-04-12 11:37:49 +00:00
micha
4a7f6bccf9 * fix arm edsp test to load from aligned address
git-svn-id: trunk@10487 -
2008-03-13 21:36:01 +00:00
florian
c544d97de9 * fix edsp instructions detection
git-svn-id: trunk@10458 -
2008-03-07 21:51:14 +00:00
daniel
d8bffd27fc - Intergrate i386/strlen.inc and remove it.
+ int_str assembler implementations for i386
 + fpc_shortstr_to_shortstr assembler implementation for ARM
 + fpc_shortstr_assign assembler implementation for ARM
 + fpc_Pchar_length assembler implementation for ARM

git-svn-id: trunk@9582 -
2007-12-30 11:19:10 +00:00
daniel
68731ae067 + Assembler implementation of mod/div.
Improves amount of divides from about 230000/s to about 2400000/s on
    ARM920T, 200MHz.

git-svn-id: trunk@9543 -
2007-12-27 17:59:45 +00:00
yury
1ea7d58a61 * Fixed arm-linux build.
git-svn-id: trunk@9055 -
2007-11-02 09:32:05 +00:00
yury
e62c6cfcc4 * Fixed warnings and notes.
git-svn-id: trunk@9041 -
2007-11-01 14:16:43 +00:00
yury
986396545d * Fixed register saving in fpc_mul_qword for arm. It fixed bug #10017.
* Removed unneeded register lists for some pure asm routines for arm.

git-svn-id: trunk@9019 -
2007-10-31 23:11:50 +00:00
florian
7da7364ee7 * refactored SysResetFPU into SysInitFPU and SysResetFPU
git-svn-id: trunk@8966 -
2007-10-28 12:06:49 +00:00
florian
76b95fb058 * fixed arm-linux compilation with FPC_USE_LIBC
git-svn-id: trunk@8809 -
2007-10-14 21:05:44 +00:00
yury
ef3178cdb1 * Fixed default float exceptions mask for arm fpu. It fixes tw3160c.pp on arm-linux.
git-svn-id: trunk@8054 -
2007-07-14 19:46:22 +00:00
florian
d78071f8b2 * ensure that softfloat and libgcc float never use rfs/wfs
git-svn-id: trunk@7229 -
2007-05-01 11:47:19 +00:00
florian
2085635fe7 * load moveproc with default value
git-svn-id: trunk@6803 -
2007-03-12 19:31:52 +00:00
florian
b5b86f6d73 * ce compilation fixed
git-svn-id: trunk@6457 -
2007-02-12 18:39:39 +00:00
florian
31c9a91af0 + edsp detection for arm-linux
git-svn-id: trunk@6429 -
2007-02-11 16:21:04 +00:00
florian
57415a73a7 + assembler coded move for arm
git-svn-id: trunk@6412 -
2007-02-11 11:04:55 +00:00
yury
458abdef3e * implemented SysResetFPU for arm-wince.
* set softfloat_exception_mask in SetExceptionMask for ARM.

git-svn-id: trunk@6035 -
2007-01-17 23:58:19 +00:00
yury
d401c0a198 * activated internal get_frame for ARM.
git-svn-id: trunk@5945 -
2007-01-13 15:23:51 +00:00
Legolas
9e6d19a494 * rtl part of first Nintendo DS port
git-svn-id: trunk@5593 -
2006-12-14 17:34:51 +00:00
florian
69ae03d6bc * fixed wrong operands of swp
git-svn-id: trunk@5072 -
2006-10-29 20:51:31 +00:00
yury
ba21edb0fd * Implemented inclocked and declocked for arm.
git-svn-id: trunk@4534 -
2006-09-02 09:38:18 +00:00
yury
d7cbde6f25 * Assembler Interlocked* functions for ARM.
git-svn-id: trunk@4011 -
2006-06-30 15:36:49 +00:00
oro06
3afad32966 *arm: TPECoffLinker is TInternalLinkerWin
+arm : InterlockedCompareExchangePointer

git-svn-id: trunk@3993 -
2006-06-29 07:39:54 +00:00
peter
4c065bce45 * move InterLocked functions to system unit
git-svn-id: trunk@3933 -
2006-06-25 09:26:23 +00:00
florian
5575a837db * gba patch from Francesco Lombardi
git-svn-id: trunk@3716 -
2006-05-28 14:48:24 +00:00
florian
8adc1c9b0c + RTL part of WinCE patches from Yuri Sidorov
git-svn-id: trunk@572 -
2005-07-03 15:52:27 +00:00
peter
4ace790492 * remove $Log
git-svn-id: trunk@231 -
2005-06-07 09:47:55 +00:00
fpc
790a4fe2d3 * log and id tags removed
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3 initial import
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
florian
069a5206e1 * move draft 2005-03-13 10:04:52 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
florian
0bc92dfa09 + added nostackframe directive to get_frame 2005-01-05 15:59:02 +00:00
florian
6333a6a6b3 * fillchar fixed; it's used now 2005-01-05 15:21:14 +00:00
florian
28a1c72885 + correct setting of FPU exception mask 2005-01-04 16:46:38 +00:00
florian
ddb6d0d595 + assembler implementation of fpc_mul_qword
* fpu exceptions are now generated
2004-03-23 21:03:10 +00:00
florian
bca9da0ec7 * draft for qword mul 2004-03-14 21:45:11 +00:00
florian
a6589cbab1 + get_caller_addr/frame implemented 2004-01-21 23:12:07 +00:00
florian
1883a09ddd * fixed setjump
* fixed syscalls
2004-01-20 21:01:57 +00:00
florian
b9376da0aa * some arm issues fixed 2003-11-21 00:40:06 +00:00
florian
8d771df2d4 * arm fixes to the common rtl code
* some generic math code fixed
  * ...
2003-09-03 14:09:37 +00:00
florian
736ae20a79 * empty dummy files
+ [long|set]jmp implemented
2003-08-21 16:41:54 +00:00