[fpc-devel] fixes of the mips code

Fuxin Zhang zhangfx at lemote.com
Sat Jun 9 10:29:42 CEST 2012


Hi,

  Based on trunk r21549, I have uploaded all my patches to my branch,
please help to review and merge if possible.

svn log --stop-on-copy
http://svn.freepascal.org/svn/fpc/branches/foxsen/mips :

------------------------------------------------------------------------
r21564 | foxsen | 2012-06-09 17:01:14 +0800 (六, 2012-06-09) | 2 行

mips C_alignment is incorrect, hack for now

------------------------------------------------------------------------
r21563 | foxsen | 2012-06-09 16:52:24 +0800 (六, 2012-06-09) | 5 行

remove macros already by common code:
  FPC_HAS_TYPE_DOUBLE
  FPC_HAS_TYPE_SINGLE
  FPC_REQUIRES_PROPER_ALIGNMENT

------------------------------------------------------------------------
r21562 | foxsen | 2012-06-09 16:50:04 +0800 (六, 2012-06-09) | 2 行

make the calling convention support MIPS O32 ABI

------------------------------------------------------------------------
r21561 | foxsen | 2012-06-09 11:32:24 +0800 (六, 2012-06-09) | 3 行

fix short/smallint operations
without this test/cg/tcnvint6.pp failed at 31

------------------------------------------------------------------------
r21560 | foxsen | 2012-06-09 11:23:50 +0800 (六, 2012-06-09) | 3 行

enable softfpu, default first_int_to_real depends on int64_to_float64/32 etc.
It is needed by the patch of r21558

------------------------------------------------------------------------
r21559 | foxsen | 2012-06-09 11:12:30 +0800 (六, 2012-06-09) | 3 行

set default round mode to round nearest instead of round to zero
it fix test/cg/taddcurr.pp

------------------------------------------------------------------------
r21558 | foxsen | 2012-06-09 11:01:56 +0800 (六, 2012-06-09) | 3 行

use inherited first_int_to_real to avoid mixing doubles and singles
it fixes the failure of test/cg/taddcurr.pp

------------------------------------------------------------------------
r21557 | foxsen | 2012-06-09 10:59:32 +0800 (六, 2012-06-09) | 4 行

Make macro MIPS/CPUMIPS/MIPS32 common for big endian and little endian
mips processors
use MIPSEL* for little endian systems
use MIPSEB* for big endian systems

------------------------------------------------------------------------
r21554 | foxsen | 2012-06-08 23:56:28 +0800 (五, 2012-06-08) | 2 行

correct constant for mipsel

------------------------------------------------------------------------
r21553 | foxsen | 2012-06-08 23:50:04 +0800 (五, 2012-06-08) | 2 行

make clear what registers might need to be saved

------------------------------------------------------------------------
r21552 | foxsen | 2012-06-08 23:45:24 +0800 (五, 2012-06-08) | 3 行

use NR_R1 instead of NR_R3 for big stack adjustment temp register(R1 is
$at, more suitable)
use A_JR for register operands, although the assembler can translate J to
JR when necessary, it is more clear

------------------------------------------------------------------------
r21551 | foxsen | 2012-06-08 23:37:18 +0800 (五, 2012-06-08) | 3 行

use cpu64bitaddr instead of cpu64bit
fix wrong order of 64BIT return register(now for little endian mips)

------------------------------------------------------------------------
r21550 | foxsen | 2012-06-08 23:04:03 +0800 (五, 2012-06-08) | 2 行

merge trunk r21549






More information about the fpc-devel mailing list