Jeppe Johansen
60f24739fc
Fixed typo
...
git-svn-id: trunk@30238 -
2015-03-15 15:47:45 +00:00
florian
38a72f2ddb
* renamed arm->avr to match the cpu
...
git-svn-id: trunk@30237 -
2015-03-15 15:10:37 +00:00
Jonas Maebe
f633d094ee
* perform interface dispatches via R12 instead of R11 as expected for
...
indirect function calls for ELFv2 (and other ABIs don't care about
the register)
git-svn-id: trunk@30236 -
2015-03-15 14:00:32 +00:00
Jeppe Johansen
2bcef2daee
Fix break caused by r30233
...
git-svn-id: trunk@30235 -
2015-03-15 13:34:01 +00:00
Jeppe Johansen
f92f0751f4
Fix selection of LDR/STR instructions in thumb mode. Most forms don't support pre or post indexing.
...
Fix emission of offsets.
git-svn-id: trunk@30234 -
2015-03-15 12:12:13 +00:00
Jeppe Johansen
155998fe89
Support .set and .weak in internal assembler.
...
Fix problem with fpc_initialHeap getting put in .data instead of .bss.
git-svn-id: trunk@30233 -
2015-03-15 12:10:54 +00:00
Károly Balogh
2555f12394
m68k: improved handling of moves and sign/zero extensions targeting address regs
...
git-svn-id: trunk@30232 -
2015-03-15 01:44:43 +00:00
nickysn
492101df76
* fixed a race condition during parallel build on linux, when the loaders are
...
built before mkdir has created the output directory
git-svn-id: trunk@30231 -
2015-03-14 22:27:03 +00:00
Jonas Maebe
6230119140
- removed self-assignment of cur_stack_offset introduced by refactoring in
...
r30221
git-svn-id: trunk@30230 -
2015-03-14 21:55:48 +00:00
Jonas Maebe
8334597476
* a homogeneous float aggregate can maximally contain 4 elements
...
(mantis #27665 )
git-svn-id: trunk@30229 -
2015-03-14 21:46:45 +00:00
Jonas Maebe
faf3efe139
+ Linux/ppc64le test object files
...
git-svn-id: trunk@30228 -
2015-03-14 18:37:01 +00:00
Jonas Maebe
0c394eb6f4
* ensure we don't call a_load_cgparaloc_anyreg() to move an fpu register
...
into an integer register
git-svn-id: trunk@30227 -
2015-03-14 18:36:57 +00:00
Jonas Maebe
622852b8c9
* check that a_load_cgparaloc_anyreg() is not used to try to move an fpu
...
register into a non-fpu register, as this is not (yet) supported
git-svn-id: trunk@30226 -
2015-03-14 18:36:54 +00:00
Jonas Maebe
a02d52f533
* support thlcg2ll.gen_loadfpu_loc_cgpara() from LOC_REGISTER to
...
LOC_FPUREGISTER (can happen with certain ABIs due to records
having to be passed in floating point registers)
git-svn-id: trunk@30225 -
2015-03-14 18:36:52 +00:00
Jonas Maebe
c50c822e13
* fixed destination size when loading fpu temp paralocs
...
git-svn-id: trunk@30224 -
2015-03-14 18:36:49 +00:00
Jonas Maebe
6d02aedf70
* support multiple register paralocs in tcgobj.a_loadfpu_ref_cgpara()
...
git-svn-id: trunk@30223 -
2015-03-14 18:36:46 +00:00
Jonas Maebe
cea2741339
* correct paraloc size for 3-byte records passed in the lower bits of a
...
register (32 bit instead of 64 bit register)
git-svn-id: trunk@30222 -
2015-03-14 18:36:43 +00:00
Jonas Maebe
3d6fcd8815
+ ppc64le/ELFv2 ret_in_param implementation
...
* fixed ret_in_param for other ppc64 ABIs
git-svn-id: trunk@30221 -
2015-03-14 18:36:40 +00:00
Jonas Maebe
f4a580d669
* don't fail if multiple dotests try to create the same directory in parallel
...
git-svn-id: trunk@30220 -
2015-03-14 18:36:37 +00:00
Jonas Maebe
a02fb7c794
* fixed misplaced braces that caused all records to be passed by reference
...
on ppc64 with the mwpascal calling convention, instead of only the const
ones
git-svn-id: trunk@30219 -
2015-03-14 18:36:35 +00:00
Jonas Maebe
7bc66a5142
+ ELF/ppc64le resource support
...
git-svn-id: trunk@30218 -
2015-03-14 18:36:32 +00:00
Jonas Maebe
6b9b575b74
* choose between arm (little endian) and armeb for fpcres based on the
...
target_info rather than based on the source_info
git-svn-id: trunk@30217 -
2015-03-14 18:36:29 +00:00
Jonas Maebe
eee83ebb4a
* use generic code for a_load_subsetref_regs_noindex on ppc64le
...
git-svn-id: trunk@30216 -
2015-03-14 18:36:26 +00:00
Jonas Maebe
c69265a61c
* disable out big endian-specific helpers for ppc64le
...
git-svn-id: trunk@30215 -
2015-03-14 18:36:23 +00:00
Jonas Maebe
cf5b42b4b2
* use generic code for set+setelement on ppc64le
...
git-svn-id: trunk@30214 -
2015-03-14 18:36:20 +00:00
Jonas Maebe
82d92dbf50
* call seterrno instead of manually handling the setting setting the errno
...
threadvar (and having to deal with differences between the ELFv1 and ELFv2
ABIs regarding indirect function calls, + future ability to have the
compiler generate PIC for those routines)
o includes workaround for lack of linkage area size allocation in current
released PPC64 versions, remove after 3.0.2 has been released
git-svn-id: trunk@30213 -
2015-03-14 18:36:17 +00:00
Jonas Maebe
399ffb2005
* allocate enough room in assembler routines for a complete linkage area
...
so that potential callees have enough room to store their LR etc
if needed
git-svn-id: trunk@30212 -
2015-03-14 18:36:14 +00:00
Jonas Maebe
e3f451066b
* support little endian in getFPSCR/setFPSCR
...
git-svn-id: trunk@30211 -
2015-03-14 18:36:11 +00:00
Jonas Maebe
3ab62dcfed
* switched Linux/PowerPC64 to Pascal startup code so that we can used ifdefs
...
to detect whether we're compiling for ELFv1/SYSV or ELFv2
git-svn-id: trunk@30210 -
2015-03-14 18:36:08 +00:00
Jonas Maebe
53680329d3
* changed type of operatingsystem_parameter_argc from ptruint to longint,
...
as that's the type of argc in the system unit (which maps onto this
variable), and even in C it's "int argc". This fixes the use of this
variable on big endian targets
git-svn-id: trunk@30209 -
2015-03-14 18:36:05 +00:00
Jonas Maebe
d6499b4bc0
+ rldcl., rldicl., rldcr[.] and rldicr[.] opcodes (needed for new
...
bootstrapping code)
git-svn-id: trunk@30208 -
2015-03-14 18:36:02 +00:00
Jonas Maebe
5a6b9c9f16
* store/reload toc around indirect calls for ELFv2 ABI
...
* ensure that register calls happen via R12 on the ELFv2 ABI
git-svn-id: trunk@30207 -
2015-03-14 18:35:59 +00:00
Jonas Maebe
33ed32b024
* when targeting the ELFv2 ABI, don't reserve space for the (never used)
...
words in the linkage area reserved for use by the compiler and linker
git-svn-id: trunk@30206 -
2015-03-14 18:35:56 +00:00
Jonas Maebe
3d9713b9c8
* has_single_field() now looks recursively into fields that are aggregate
...
types until it finds a non-aggregate type, and then returns "true" if
that aggregate (record or array) contains one element
* it now also returns the type of that element directly rather than a
tfieldvarsym, since we only care about the type and in case of an array
there is no field
git-svn-id: trunk@30205 -
2015-03-14 18:35:53 +00:00
Jonas Maebe
2e126bb723
- removed darwin/i386 special case code from i8086 code generator
...
git-svn-id: trunk@30204 -
2015-03-14 18:35:50 +00:00
Jonas Maebe
9788b01d31
* rewrote most of the special case handling of parameter passing on ppc64,
...
documenting the pecularities of the various calling conventions and
marking what we do and don't support currently
* also handle arrays for the ELFv2 ABI when determining whether an aggregate
only contains floating values of a single type
git-svn-id: trunk@30203 -
2015-03-14 18:35:47 +00:00
Jonas Maebe
165aaea8a4
* made a separate abi entry for powerpc_darwin, as it's not exactly the same
...
as the AIX abi (especially on ppc64)
o replaced (for now) all checks for the AIX abi with a check for either the
AIX or Darwin abi
o changed the ABI of Darwin/ppc, Darwin/ppc64 and Mac OS/ppc to
abi_powerpc_darwin
git-svn-id: trunk@30202 -
2015-03-14 18:35:44 +00:00
Jonas Maebe
25340480b0
* factored out creating a single paraloc, so we can reuse it for creating
...
function return locations
git-svn-id: trunk@30201 -
2015-03-14 18:35:41 +00:00
Jonas Maebe
f0ee1a9ee3
* pass records that (recursively) only contain floating point values of the
...
same type (even in other records or in arrays), with 8 or less such
values, as if those values were passed individually on ppc64/ELFv2
git-svn-id: trunk@30200 -
2015-03-14 18:35:38 +00:00
Jonas Maebe
9a73c9a460
* avoid string truncation for ait_symbolpair in assembler writer
...
git-svn-id: trunk@30199 -
2015-03-14 18:35:34 +00:00
Jonas Maebe
fb27dff638
* generate ".abiversion 2" directive when targeting ppc64/ELFv2
...
* generate code to load the TOC register if it's required, and
emit the the ".localentry" directive to indicate to the linker
where the actual function body starts
* support the ".localentry" directive in the ppc64 assembler reader
o disable the fpc_qword_to_double() assembler implementation for
ELFv2, because we can't manually insert the .localentry directive
before the stack allocation code
* perform indirect calls on ppc64 via R12 in ncgcal, as R12 needs to
contain the function address on entry on ppc64/ELFv2 (and it's
a volatile register, so there's no problem with always using
it)
git-svn-id: trunk@30198 -
2015-03-14 18:35:31 +00:00
Jonas Maebe
8445381929
* merged ait_set and ait_thumb_set into a single tai class
...
(tai_symbolpair)
git-svn-id: trunk@30197 -
2015-03-14 18:35:28 +00:00
Jonas Maebe
1e227f78fe
* factored out the check for whether we have to generate dotted function
...
names, and disabled them for ppc64 ELFv2
* disabling those also disables the function descriptors, so use the
_CALL_ELF compiler variable to check whether there is in fact a
function descriptor
git-svn-id: trunk@30196 -
2015-03-14 18:35:25 +00:00
Jonas Maebe
cc071ded4b
* define _CALL_ELF=1 or _CALL_ELF=2 symbol when targeting ppc(64)
...
ELFv1/ELFv2, like GCC
git-svn-id: trunk@30195 -
2015-03-14 18:35:22 +00:00
Jonas Maebe
05f6660a25
* set the correct dynamic linker for the ppc64 ELFv2 abi
...
* specify the correct linker emulation to use for ppc64 ELFv2 little endian
* specify the correct default library directories to search for ELFv2 little
endian
git-svn-id: trunk@30194 -
2015-03-14 18:35:19 +00:00
Jonas Maebe
3946971c73
* default to ppc64le/elfv2 when compiling on a ppc64le platform
...
* default to elfv2 abi when targeting ppc64le and no abi has been specified
git-svn-id: trunk@30193 -
2015-03-14 18:35:16 +00:00
Jonas Maebe
0e76a84e04
+ "ELFv2" abi identifier for ppc64
...
git-svn-id: trunk@30192 -
2015-03-14 18:35:13 +00:00
Károly Balogh
918c4add06
m68k: in do_spill_replace, exclude the case where the source register would be an address and the destination is a reference
...
git-svn-id: trunk@30191 -
2015-03-14 17:19:14 +00:00
Károly Balogh
935820293c
m68k: in tm68ktypeconvnode.int_to_real, fix the reference before using it, and if the source is a register, make sure it's a data register
...
git-svn-id: trunk@30190 -
2015-03-14 17:14:10 +00:00
Károly Balogh
1121c2e6ce
m68k: before doing a reg->ref operation, make sure the source is a datareg
...
git-svn-id: trunk@30189 -
2015-03-14 16:36:02 +00:00