Opened 8 years ago

Closed 8 years ago

#1000 closed defect (fixed)

floating-point callbacks and ARM hard-float conventions

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


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 (1)

comment:1 Changed 8 years ago by gb

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

(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


Note: See TracTickets for help on using tickets.