Commit Graph

64 Commits

Author SHA1 Message Date
nickysn
a8f466c400 * updated the CSeg, DSeg and SSeg rtl functions on i8086 to use the new x86
intrinsics for reading the segment registers

git-svn-id: trunk@39434 -
2018-07-11 14:34:05 +00:00
nickysn
29f307589e + added an i8086-specific procedure MoveData, that allows moving of far data,
regardless of the memory model; procedure interface is the same as a similar
  Turbo C (and DJGPP) function

git-svn-id: trunk@37741 -
2017-12-15 21:47:21 +00:00
nickysn
0119e7afb3 * changed the codepointer type in the i8086 small and compact memory models from
nearpointer to nearcspointer

git-svn-id: trunk@37730 -
2017-12-14 17:36:15 +00:00
nickysn
bc8c1ea1bc * fixed get_caller_frame() for win16 (on that platform, bp is incremented by
one, before pushing, to indicate a far call, so it has to be aligned by 2
  again, after reading)

git-svn-id: trunk@37657 -
2017-12-01 23:00:47 +00:00
pierre
277f1c1c2d Check if FPC_SYSTEM_HAS_SYSINITFPU before parsing generic i8086 code
git-svn-id: trunk@36263 -
2017-05-19 21:49:13 +00:00
nickysn
ca46040728 + added 16-bit versions of the InterLocked* functions for i8086
git-svn-id: trunk@35149 -
2016-12-18 00:17:10 +00:00
nickysn
c78f406d99 + implemented proper stack checking for the i8086
git-svn-id: trunk@33787 -
2016-05-24 23:57:47 +00:00
nickysn
0f6b5161e6 * the 'count' parameter of Move and FillChar on i8086 made 16-bit unsigned,
instead of signed (BP7 compatibility)

git-svn-id: trunk@32443 -
2015-11-21 17:55:47 +00:00
nickysn
3d2919acae + added an i8086 asm optimized implementation of fpc_pchar_length
git-svn-id: trunk@32113 -
2015-10-21 13:21:04 +00:00
nickysn
3bd5934a51 * some micro optimizations for zero size blocks in CompareByte for i8086
git-svn-id: trunk@32041 -
2015-10-13 15:12:43 +00:00
nickysn
4fe125d779 * fixed ds corruption in CompareWord in far data memory models
git-svn-id: trunk@32040 -
2015-10-13 15:01:10 +00:00
nickysn
7ed7b090fe + i8086 asm optimized implementation of CompareDWord
git-svn-id: trunk@32039 -
2015-10-13 14:51:50 +00:00
nickysn
2152420e4f + added i8086 asm optimized version of CompareWord
git-svn-id: trunk@32037 -
2015-10-13 13:10:43 +00:00
nickysn
f107956169 + added an i8086 asm optimized version of CompareByte()
git-svn-id: trunk@32026 -
2015-10-12 16:47:50 +00:00
nickysn
5e3a88b7f5 * replaced or cx,cx/jz with jcxz in IndexByte, IndexWord and IndexDWord for i8086
git-svn-id: trunk@31961 -
2015-10-06 14:55:51 +00:00
nickysn
3752047dd4 + added an i8086 asm optimized IndexDWord routine
git-svn-id: trunk@31960 -
2015-10-06 14:52:58 +00:00
nickysn
792b7e67be * treat the len parameter to the i8086 versions of IndexByte and IndexWord as
unsigned, like the other platforms do

git-svn-id: trunk@31954 -
2015-10-05 19:59:15 +00:00
nickysn
94a398896b - removed spurious DX initialization at the end of IndexByte for i8086
git-svn-id: trunk@31950 -
2015-10-05 17:32:51 +00:00
nickysn
80b892aafb + added i8086 asm optimized IndexWord routine
git-svn-id: trunk@31948 -
2015-10-05 16:24:15 +00:00
nickysn
a4e216c7fd + added i8086 asm optimized IndexByte routine
git-svn-id: trunk@31947 -
2015-10-05 15:35:26 +00:00
nickysn
624376b403 + handle properly win16 "odd bp" stack frames in get_caller_addr and get_caller_frame
git-svn-id: trunk@31829 -
2015-09-25 16:19:56 +00:00
sergei
9a72100405 - removed obsolete and commented out variable
git-svn-id: trunk@29320 -
2014-12-25 09:25:49 +00:00
nickysn
16c5849fc6 + added HexStr() overload for huge pointers
git-svn-id: trunk@28180 -
2014-07-07 15:13:29 +00:00
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
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
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
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
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
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
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
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
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
6596ba9036 * fixed the stack param offsets in Ptr, get_caller_addr and get_caller_frame after the stackframe elimination
git-svn-id: trunk@25802 -
2013-10-16 12:39:39 +00:00