Ticket #1000 (closed defect: fixed)

Opened 21 months ago

Last modified 21 months ago

floating-point callbacks and ARM hard-float conventions

Reported by: gb Owned by:
Priority: normal Milestone:
Component: Foreign Function Interface Version: trunk
Keywords: Cc:

Description

DEFCALLBACK expands into code which unconditionally assumes that the ARM soft-float ABI is in effect, so callbacks which accept floating-point arguments or return floating-point results won't work correctly if the hard-float ABI is in use.

DEFCALLBACK should generate code which works under either ABI, as long as the older soft-float ABI is in widespread use.

Change History

comment:1 Changed 21 months ago by gb

  • Status changed from new to closed
  • Resolution set to fixed

(In [15431]) lib/macros.lisp: DEFCALLBACK-BODY expands into LET*, not LET. (Matters

on ARM, likely doesn't for other architectures.)

compiler/ARM/arm2.lisp: unsafe optimization in ARM2-GET-FLOAT. compiler/ARM/arm-backend.lisp: handle hard-float conventions in callbacks

on ARM. Fixes ticket:1000

level-0/ARM/arm-def.lisp: in %FF-CALL-HARD-FLOAT, don't preincrement

FP-ARG-OFFSET in the :SINGLE-FLOAT case.

Note: See TracTickets for help on using tickets.