Commit Graph

130 Commits

Author SHA1 Message Date
sergei
29bf988ca7 + Implemented m68k-specific (actually, softfloat-specific) part of Math unit.
git-svn-id: trunk@27216 -
2014-03-21 05:24:09 +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
Károly Balogh
50c59a1cc2 don't try to fillchar/move by a negative amount, fixes tmem test
git-svn-id: trunk@26827 -
2014-02-22 03:30:58 +00:00
Károly Balogh
e27db65085 really fixed FillChar and fixed FillWord. fixes 8 tests.
git-svn-id: trunk@25621 -
2013-10-02 12:33:52 +00:00
svenbarth
83f4344c20 Fix around 30 tests for m68k by fixing FillChar:
* completely disable the DBRA part for CPUs without DBRA
  * replace CMP/BNE with BPL which uses the flags of the SUB instruction
Additional fixes for the other two (still disabled) DBRA alternatives:
  * use BPL instead of BMI (which is wrong)

git-svn-id: trunk@25587 -
2013-09-27 20:57:55 +00:00
svenbarth
dfb0c7da24 Forgot to commit this the last time: Use CPUM68K_HAS_DBRA instead of CPUCOLDFIRE (which does not exist anymore).
git-svn-id: trunk@25586 -
2013-09-27 20:54:54 +00:00
svenbarth
83af4e93f7 rtl/m68k/m68k.inc:
* InterlockedIncrement & InterlockedDecrement: return the modified value, not the original one

git-svn-id: trunk@23432 -
2013-01-17 21:19:27 +00:00
svenbarth
f5e94a02cd rtl/m68k/m68k.inc:
* fillchar & fillword: check whether the count is 0 before filling anything

This fixes cases like "Writeln('')" which is used inside InternalExit if an unhandled exception happened.

git-svn-id: trunk@23431 -
2013-01-17 21:17:13 +00:00
Károly Balogh
652d69d145 fixed typo
git-svn-id: trunk@23269 -
2013-01-01 02:44:01 +00:00
Károly Balogh
0702109f37 get_frame to return a5 on Amiga
git-svn-id: trunk@23268 -
2013-01-01 02:37:39 +00:00
Károly Balogh
79a0f706de save/restore FP from A5 on Amiga
git-svn-id: trunk@23267 -
2013-01-01 02:27:53 +00:00
svenbarth
e240856e43 * rtl/m68k/setjumph.inc:
data registers stored are 1 to 7, not 0 to 7
* rtl/m68k/setjump.inc:
    don't use "S" or "value" to reference the parameters as the code generator does not use "sp" instead of "fp" in case of "nostackframe"
    restore a0 at the end of setjmp

git-svn-id: trunk@23240 -
2012-12-28 13:00:28 +00:00
pierre
76ba2ea6c7 Save complete register set for setjmp/longjmp
git-svn-id: trunk@23174 -
2012-12-18 14:05:52 +00:00
pierre
0e14a3c5bd add fpc_longword_to_double if needed
git-svn-id: trunk@23173 -
2012-12-18 14:04:14 +00:00
Károly Balogh
e2f02faca0 do not refer reg a6 directly, base pointer might differ among platforms (a5 on m68k-amiga)
git-svn-id: trunk@23167 -
2012-12-18 02:13:43 +00:00
svenbarth
4d1e42e891 rtl/m68k/setjump.inc:
* implement "fpc_setjmp" and "fpc_longjmp"
rtl/m68k/m68k.inc:
  * add "nostackframe" to "get_frame" and "sptr"
  + add "get_pc_addr"
=> allows stack traces to be displayed correctly

git-svn-id: trunk@22899 -
2012-11-01 16:00:14 +00:00
svenbarth
fb873d6f02 rtl/m68k/m68k.inc:
dummyplement Interlocked* functions; they are not locking in any way, but at least they do what they should

git-svn-id: trunk@22884 -
2012-10-31 06:24:08 +00:00
svenbarth
f204f84f6a rtl/m68k/m68k.inc, move:
completely disable the "fast loop" code for Coldfire instead of "hackfixing" it; with this StdIO starts to work (though one byte is missing at the end...)

git-svn-id: trunk@22883 -
2012-10-31 06:10:03 +00:00
svenbarth
58d9b0853c * rtl/m68k/m68k.inc, move:
add a check for "count = 0" which happens e.g. inside of System.Assign if called with '' as filename (which is the case inside OpenStdIO)

git-svn-id: trunk@22841 -
2012-10-24 05:03:08 +00:00
svenbarth
a266d73409 * rtl/m68k/setjump.inc:
correctly dummy out setjump as "d0 <> 0" means that longjmp was executed (and d0 could be set from the calling function)

git-svn-id: trunk@22797 -
2012-10-21 13:56:48 +00:00
svenbarth
322dbe5b65 Various adjustments to the RTL for m68k:
* enable the 6 parameter syscall variant (still everything dummied out though)
* add termios constants
* don't change signal handlers for now
* disable assembly set routines as set handling was changed

git-svn-id: trunk@22743 -
2012-10-18 20:12:02 +00:00
svenbarth
43d8da7aa3 Replace DBRA instruction for Coldfire with a SUB/BRA combination in the for-loop-code-
generation and the assembly helpers in the RTL as DBRA is not supported by Coldfire.

git-svn-id: trunk@22740 -
2012-10-18 20:11:45 +00:00
svenbarth
6034866050 rtl/m68k: Added mathu(h).inc with dummy implementations of SetExceptionMask and GetExceptionMask
git-svn-id: trunk@22729 -
2012-10-18 20:10:48 +00:00
pierre
8469741700 + Added additional addr pointer parameter to
get_caller_frame, get_caller_addr and dump_stack
  with default NIL value to systemh.inc.
  + Added new get_addr function.
  system.inc: Use get_addr and get_frame to call
  HandleErrorAddrFrame instead of HandleErrorFrame
  in several error functions.
  Modify dump_stack to use frame and addr parameters.
  Provide a dummy get_addr function returning nil.
  i386/i386.inc, x86_64./x86_64.inc: Provide real
  implementation of get_addr function.

git-svn-id: trunk@21697 -
2012-06-24 21:22:09 +00:00
florian
24fea58b92 + initial implementation of iso style gotos in iso mode
* made setjmp/longjmp accessible to the compiler by compiler proc, they are used by the iso goto code

git-svn-id: trunk@15711 -
2010-08-05 19:20:46 +00:00
florian
d127e002d8 * use default helpers for now
git-svn-id: trunk@5556 -
2006-12-07 20:44:52 +00:00
florian
b07cd83892 * made system unit on m68k-linux compilable
git-svn-id: trunk@5266 -
2006-11-06 18:42:47 +00:00
Károly Balogh
572c8430ac + more mess to make the skeleton amiga rtl compile
git-svn-id: trunk@2393 -
2006-02-01 15:35:33 +00:00
Jonas Maebe
5b9f58ef73 * reverted r2037 because of braindead "out" semantics for refcounted
types

git-svn-id: trunk@2045 -
2005-12-24 01:06:05 +00:00
Jonas Maebe
84aab46550 * changed formal "var" paramters of move, movechar0 and fill* into
"out" parameters to avoid wrong "uninitialized" warnings

git-svn-id: trunk@2037 -
2005-12-23 20:59:08 +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
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
florian
cd81fa77ea + added currency and widestring support to TWriter and TReader 2004-05-23 12:42:42 +00:00
florian
91733f9237 * some m68k and amiga related stuff fixed 2004-05-05 21:26:34 +00:00
Jonas Maebe
6bd3eccdac + fpc_cpuinit procedure to allow cpu/fpu initialisation before any unit
initialises
  + fpu exceptions for invalid operations and division by zero enabled for
    ppc
2004-01-02 17:21:50 +00:00
carl
af2000b0f7 * make the jmp_buf record packed, just in case 2002-10-20 11:53:14 +00:00
peter
9f31783a0a * old logs removed and tabs fixed 2002-09-07 16:01:16 +00:00
peter
24384c648b * moved genrtti.inc code to rtti
* removed rttip.inc, the generic code is almost as fast and
    much easier to maintain and has less risks on bugs
2002-09-02 18:42:41 +00:00
michael
586c4cea50 + Conditionals fixed 2000-07-14 10:33:09 +00:00
michael
650fbb86aa + removed logs 2000-07-13 11:32:24 +00:00
michael
e7aca136a1 + Initial import 2000-07-13 06:29:38 +00:00
pierre
a41bd45aad * 0**n where n<>0 is 0; 0**0 generates RTE 207 2000-05-02 10:37:50 +00:00
daniel
ec29a31834 * copyright 2000 2000-01-07 16:41:28 +00:00
daniel
a79b4a404b * copyright 2000 added 2000-01-07 16:32:21 +00:00
carl
a166bd1bca * FillChar and FillObject bugfix, count was compared with byte 1998-10-17 14:34:37 +00:00
pierre
850e611770 * added code for vmt_offset in destructors 1998-10-16 13:37:45 +00:00
pierre
2312760103 + first step of variable vmt offset
offset is stored in R_EDI (R_D0)
   if objectvmtoffset is defined
1998-10-15 11:35:02 +00:00
pierre
93d5b064b0 * some bugs related to FPC_ prefix fixed
* problems with pbyte sometimes defined and sometimes not for rttip.inc solved
1998-10-13 08:00:04 +00:00
peter
4620a73a9b * FPC_ names
* Heap manager is now system independent
1998-09-14 10:48:00 +00:00
pierre
0471257bec * small modifications 1998-09-04 17:27:09 +00:00
pierre
d5df96ef6a * corrected a bug introduced by my last change
(allocating 1Mb but only using a small part !!)
1998-08-25 14:15:51 +00:00
pierre
69aed4ad5c * bug allocation of more than 1 MB failed corrected 1998-08-24 14:44:04 +00:00
carl
26319a738a * bugfix of heaperror, was pushing wrong parameter 1998-08-17 12:27:17 +00:00
carl
5093dda4d7 + simple cleanup of comments 1998-08-17 12:26:04 +00:00
michael
4e11459938 + Added support for ErrorProc variable. All internal functions are required
to call HandleError instead of runerror from now on.
  This is necessary for exception support.
1998-07-30 13:26:14 +00:00
carl
f86a9ccb28 * set_sub_sets bugfix, was not using correct operation 1998-07-30 12:16:29 +00:00
michael
11cbb1fd82 + Initial implementation 1998-07-28 20:36:41 +00:00
peter
702043e165 * support_fixed, becuase fixed is not 100% yet for the m68k 1998-07-10 11:02:38 +00:00
carl
df00344700 + reinstated hepasize function
* renamed HEAPSIZE global var to HEAP_SIZE to remove conflicts
1998-07-08 11:54:40 +00:00
michael
eb9df35117 Undid carls changes, but renamed _heapsize to _internal_heapsize. Make cycle now works 1998-07-02 14:24:08 +00:00
carl
9aeafd0cc0 - removed heapsize function, would cause conflicts with HEAPSIZE var
* GetHeapstart was misplaced
1998-07-02 12:22:38 +00:00
carl
7632ce3279 + Io-Error and overflow print erroraddr in hex now 1998-07-02 12:20:58 +00:00
carl
a218bfc8ce * LONGDIV bugfixed with signed and modulo
* LONGDIV bugfix when divisor is less then 16 bits
1998-07-01 14:28:32 +00:00
carl
14272ace40 * set_set and set_in bugfix 1998-07-01 14:27:13 +00:00
carl
daf43ca204 * strconcat was copying one byte too much
* strcopy bugfix was using signed comparison
  + STRCOPY uses register calling conventions
  * FillChar bugfix was loading a word instead of a byte
1998-07-01 14:25:57 +00:00
carl
0acb09468b * bugfix of set_in_byte, long must be used at start, same is true for
another routine
1998-06-17 13:59:08 +00:00
michael
b36e918420 + Implemented DecRef 1998-06-08 19:26:53 +00:00
michael
4b73216117 + Split rtti according to processor. Implemented optimized i386 code. 1998-06-08 15:32:08 +00:00
carl
5ad930412e * single_cmp, comparison was reversed! 1998-06-05 12:33:16 +00:00
carl
89fd9e9c5d * calculating sets is COMPLETELY different from the intel in
determining the bit number
  * new passing parameters conventions
  * misc bugfixes
1998-06-05 12:32:07 +00:00
carl
26d45eee6d * all string internal routines fixed and tested (to my knowledge)
* bugfix of missing typecast with a call to halt with a word
1998-06-05 12:28:58 +00:00
peter
d0ce4085d3 * comp,extended are only i386 added support_comp,support_extended 1998-06-04 23:45:56 +00:00
carl
57dbf2308a * strcopy bugfix
* co bugfix with stack
1998-05-25 12:18:48 +00:00
michael
dbe0135764 Changed makefile system to use -I compiler option, and streamlined i a bit 1998-05-06 09:09:07 +00:00
michael
62001bab9a + Changed Random() function. Moved from system to processor dependent files (from Pedro Gimeno) 1998-04-08 07:53:31 +00:00
carl
b170680325 * bugfix of STRCONCAT alignment problem 1998-03-27 23:48:06 +00:00
carl
1988f09fb0 * bugfix of FLAGS as return values for SET_IN_BYTE and SET_SET_BYTE 1998-03-27 23:47:35 +00:00
root
d1a1f501c8 Initial revision 1998-03-25 11:18:12 +00:00