Hello Segher,
On 20/01/17 02:04, Segher Boessenkool wrote:
Hi,
On Thu, Jan 19, 2017 at 01:41:33PM +0100, Sebastian Huber wrote:
conftest.c:16:1: error: unrecognizable insn:
}
^
(insn/f 22 21 23 2 (parallel [
(set (reg/f:DI 1 1)
(plus:SI (reg/f:DI 1 1)
(const_int 16 [0x10])))
(set (mem:BLK (reg/f:DI 1 1) [0 A8])
(const_int 0 [0]))
(set (mem:BLK (reg/f:DI 1 1) [0 A8])
(const_int 0 [0]))
]) "conftest.c":16 -1
(expr_list:REG_CFA_DEF_CFA (reg/f:DI 1 1)
(nil)))
This is stack_restore_tie, which requires TARGET_32BIT.
It currently is only generated from rs6000_emit_stack_reset:
/* This blockage is needed so that sched doesn't decide to move
the sp change before the register restores. */
if (DEFAULT_ABI == ABI_V4
|| (TARGET_SPE_ABI
&& info->spe_64bit_regs_used != 0
&& info->first_gp_reg_save != 32))
return emit_insn (gen_stack_restore_tie (updt_reg_rtx, frame_reg_rtx,
GEN_INT (frame_off)));
so you seem to have 64-bit ABI_V4? I wonder how well tested that is,
you are likely to run into more problems. Either stack_restore_tie or
the above code will need a tweak.
thanks for your help. I would had a hard time to figure this out myself.
I am flexible in terms of the ABI choice for the 64-bit PowerPC. I guess
the ABI_ELFv2 is the way to go?
I had to provide SUBSUBTARGET_OVERRIDE_OPTIONS in rtems.h (in
config/rs6000/) to set the ABI. The sysv4.h doesn't care about
-mabi=elfv2. There seems to be some copy and paste in linux64.h and
freebsd64.h for their SUBSUBTARGET_OVERRIDE_OPTIONS. Maybe the common
stuff should move to sysv4.h?
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.