Commit Graph

88 Commits

Author SHA1 Message Date
nickysn
f0346c096f + added rtl helpers for huge pointer arithmetic
git-svn-id: trunk@28099 -
2014-06-28 17:08:40 +00:00
nickysn
ce4f9577d7 * seges prefix and lodsb instruction put on the same line for better readability
git-svn-id: trunk@28067 -
2014-06-25 21:07:25 +00:00
nickysn
2f83e2efc9 * use 'seges' instead of db 26h. It is actually supported, but for some reason,
unlike TP7's inline asm, in FPC it doesn't work on the same line as 'lodsb'.

git-svn-id: trunk@28065 -
2014-06-25 18:07:24 +00:00
nickysn
ec55340359 * i8086 far data memory model fixes in get_caller_addr and get_caller_frame
git-svn-id: trunk@28063 -
2014-06-25 16:47:56 +00:00
nickysn
ec75c5dfa0 + added an asm implementation of FillDWord for i8086
git-svn-id: trunk@27650 -
2014-04-25 09:18:43 +00:00
sergei
217bac7a0b - Removed fpc_pi_real compilerproc, it is no longer used. At least two releases (2.6.2 and 2.6.4) emit Pi directly as a constant.
git-svn-id: trunk@27500 -
2014-04-07 09:16:24 +00:00
nickysn
c0cb3643f8 + support i8086 far data memory models in fpc_longJmp
git-svn-id: trunk@27413 -
2014-03-31 15:53:12 +00:00
nickysn
d24cfbcc8e + implemented InterLockedCompareExchange for i8086
git-svn-id: trunk@27410 -
2014-03-31 13:36:30 +00:00
nickysn
6cac29e1b5 + implemented InterLockedExchangeAdd for i8086
git-svn-id: trunk@27406 -
2014-03-31 09:49:37 +00:00
nickysn
5b71ad3e3b + i8086 InterLockedExchange reimplemented in asm, added locking with cli
git-svn-id: trunk@27404 -
2014-03-31 09:24:23 +00:00
nickysn
3b2cc1baf5 - rm unused local vars from SysInitFPU and SysResetFPU
git-svn-id: trunk@27403 -
2014-03-30 23:03:51 +00:00
nickysn
8eaf8938f4 + support i8086 far data memory models in InterLockedDecrement and
InterLockedIncrement

git-svn-id: trunk@27402 -
2014-03-30 22:49:40 +00:00
nickysn
14ecc118ec + disable interrupts as a form of 'locking' in InterLockedDecrement and
InterLockedIncrement

git-svn-id: trunk@27401 -
2014-03-30 22:41:48 +00:00
nickysn
2dd9a36bdc * use si, instead of bp in InterLockedDecrement and InterLockedIncrement
git-svn-id: trunk@27400 -
2014-03-30 22:38:30 +00:00
nickysn
7f37a3300d + added an i8086 asm implementation of move()
git-svn-id: trunk@27374 -
2014-03-30 13:22:52 +00:00
nickysn
1f98dfc3b4 * i8086 far data memory model fixes in FPC_SETJMP. FPC_LONGJUMP not converted
yet.

git-svn-id: trunk@27368 -
2014-03-30 10:56:42 +00:00
nickysn
ab3b3ab169 + i8086 far data memory model support in Sptr and get_frame
git-svn-id: trunk@27269 -
2014-03-24 17:10:38 +00:00
nickysn
47aed8b01f * optimized the i8086 version of Get8087CW
git-svn-id: trunk@27221 -
2014-03-21 13:46:38 +00:00
sergei
b89822d3e9 * i8086: added assembler implementation of fpc_round_real and removed remaining softfloat dependencies.
git-svn-id: trunk@27195 -
2014-03-20 02:28:47 +00:00
sergei
0255eb880e - Removed mathuh.inc files which are identical for all targets (except m68k, see below), their contents moved into math.pp.
+ m68k/mathu.inc: added stub implementations for missing functions.

git-svn-id: trunk@27180 -
2014-03-18 20:01:15 +00:00
nickysn
a176c2d4f5 + add overloaded versions of HexStr(pointer) for i8086 near and far pointers
- rm ifdefs for i8086 far code memory model when doing stack traces. The
  compiler will now choose the correct overload of HexStr according to the
  CodePointer type.

git-svn-id: trunk@27163 -
2014-03-16 17:40:31 +00:00
nickysn
41d28f91e5 - rm asmmode intel from the i8086-msdos rtl, as that is the default asm mode on
that platform

git-svn-id: trunk@27144 -
2014-03-15 13:01:05 +00:00
nickysn
015c7e951a * Changed the default packset setting to 1 and disabled the padding of 3-byte
sets to 4 bytes on 16 and 8-bit CPUs. This is compatible with Turbo Pascal 7
  and Delphi 1.

git-svn-id: trunk@27140 -
2014-03-14 23:51:14 +00:00
nickysn
4c27c42f35 + added asm optimized BSF/BSR routines for i8086 by Max Nazhalov
git-svn-id: trunk@26593 -
2014-01-26 23:12:32 +00:00
nickysn
a85bb98aa6 * patch from Max Nazhalov with improvements to the i8086 64-bit division:
since [unnormalized] n >= 0x10000 now, we have
   1. lzv<=47, so all code that makes shifts by >= 48 is dead;
   2. q3=0, so main loop can be executed just 3 times instead of 4.

git-svn-id: trunk@26535 -
2014-01-20 21:39:05 +00:00
nickysn
b91509159a + added asm optimized 64-bit division helpers for i8086 by Max Nazhalov
git-svn-id: trunk@26520 -
2014-01-19 20:26:24 +00:00
nickysn
4a107dcfa6 + added 32-bit asm optimized division helpers for i8086 by Max Nazhalov
git-svn-id: trunk@26512 -
2014-01-18 20:33:30 +00:00
nickysn
a71debb762 + added 32x32 to 64-bit multiplication helper for i8086 by Max Nazhalov
git-svn-id: trunk@26403 -
2014-01-06 03:23:36 +00:00
pierre
de89827eb7 Clean up comment at start of fpc_mul_dword
git-svn-id: trunk@26368 -
2014-01-03 13:15:34 +00:00
pierre
a4e08f8611 Move int32p.inc inclusion to end of i8086.inc as it needs to be parsed before generic.inc
git-svn-id: trunk@26366 -
2014-01-03 11:42:53 +00:00
nickysn
f2e73b5e6f + added 32-bit and 64-bit unsigned asm optimized multiplication routines for
i8086, contributed by Max Nazhalov

git-svn-id: trunk@26306 -
2013-12-28 22:43:45 +00:00
nickysn
4eb9043ac7 * x87 optimized version of math.log2() for i8086, i386 and x86_64
git-svn-id: trunk@26266 -
2013-12-22 23:21:41 +00:00
nickysn
f23c521c50 - disabled the i8086 math.arctan2 asm code, because it doesn't work on the 8087/80287
git-svn-id: trunk@26243 -
2013-12-16 23:05:16 +00:00
nickysn
c88be4550d * optimization in the 8087/80287 version of fpc_arctan_real(): when calculating
arctan([-]1/d), use fxch to swap the two arguments, instead of using fdivr,
  since fpatan can do the division for free

git-svn-id: trunk@26227 -
2013-12-13 01:24:01 +00:00
nickysn
a7b4953795 + proper (i.e. not broken) implementation of arctan() for the 8087 and 80287
git-svn-id: trunk@26226 -
2013-12-12 23:46:51 +00:00
nickysn
a68b9fd01f * use byte sized instead of word sized memory operations on the fpu control
word in fpc_frac_real, fpc_int_real and fpc_trunc_real, because the byte sized
  ones are faster on the i8088, due to the 8-bit bus

git-svn-id: trunk@26214 -
2013-12-10 21:16:35 +00:00
nickysn
9c86da1911 - rm the fwait after fstsw in fpc_exp_real. My own testing on a true i8087 shows
that fwait after fstsw appears to be unnecessary. On the other hand, using
  fnstsw, followed by fwait produces wrong results.

git-svn-id: trunk@26204 -
2013-12-10 00:38:28 +00:00
nickysn
775619ef8b * 8087/80287 fixes in fpc_exp_real
git-svn-id: trunk@26203 -
2013-12-10 00:02:20 +00:00
nickysn
d0a7522e1f + also init Default8087CW in DetectFPU
git-svn-id: trunk@26201 -
2013-12-08 22:39:48 +00:00
nickysn
180ddf2ddd + i8086 FPU detection code updated to also identify the FPU type (8087/287/387+)
and initialize the Test8087 global variable.

git-svn-id: trunk@26200 -
2013-12-08 20:50:52 +00:00
nickysn
fcfb73f508 + i8086 asm implementation of math.arctan2, based on the i386 version
git-svn-id: trunk@26154 -
2013-11-29 18:40:31 +00:00
nickysn
bb0a3a7374 + i8086 asm implementation of fpc_frac_real, based on the i386 version
git-svn-id: trunk@26131 -
2013-11-24 18:30:40 +00:00
nickysn
6cd62437f9 + i8086 asm implementation of fpc_trunc_real, based on the i386 version. Fixes
i8086 compilation after r26122.

git-svn-id: trunk@26125 -
2013-11-24 02:00:57 +00:00
nickysn
f23794bf39 * get_caller_frame for i8086 optimized for size
git-svn-id: trunk@25860 -
2013-10-27 12:01:29 +00:00
nickysn
7489bfb56b * fixed get_caller_addr returning the wrong segment in i8086 medium memory model
git-svn-id: trunk@25859 -
2013-10-27 11:36:45 +00:00
nickysn
85c8be531a + added an asm implementation of FillWord for i8086 as well
git-svn-id: trunk@25854 -
2013-10-26 16:52:57 +00:00
nickysn
2f88ae82b1 + added an asm implementation of FillChar for i8086
git-svn-id: trunk@25849 -
2013-10-25 23:15:44 +00:00
nickysn
5abeb67bff * the i8086 versions of InterLockedDecrement and InterLockedIncrement were
missing 'nostackframe'. Fixed.

git-svn-id: trunk@25813 -
2013-10-17 22:38:59 +00:00
nickysn
e0e4c04456 * the Ptr(sel,ofs) parameters changed from longint to word on i8086
git-svn-id: trunk@25811 -
2013-10-17 20:44:58 +00:00
nickysn
f30fddec53 * use 16-bit LEA directly in fpc_SetJmp, since that instruction is now supported
by the compiler

git-svn-id: trunk@25809 -
2013-10-17 17:33:55 +00:00