diff --git a/compiler/fpcdefs.inc b/compiler/fpcdefs.inc index 056e6101ab..d3ba0528f6 100644 --- a/compiler/fpcdefs.inc +++ b/compiler/fpcdefs.inc @@ -166,6 +166,7 @@ {$define cpufpemu} {$define cpurefshaveindexreg} {$define cpucapabilities} + {$define cpuneedsmulhelper} {$define cpuneedsdivhelper} {$define cpu_uses_separate_address_registers} {$endif m68k} diff --git a/compiler/m68k/n68kadd.pas b/compiler/m68k/n68kadd.pas index d5674a44bc..4513b37fd9 100644 --- a/compiler/m68k/n68kadd.pas +++ b/compiler/m68k/n68kadd.pas @@ -38,6 +38,7 @@ interface protected function use_generic_mul64bit: boolean; override; function use_generic_mul32to64: boolean; override; + function use_mul_helper: boolean; override; procedure second_addfloat;override; procedure second_cmpfloat;override; procedure second_addordinal;override; @@ -359,6 +360,11 @@ implementation Ordinals *****************************************************************************} + function t68kaddnode.use_mul_helper: boolean; + begin + result:=(nodetype=muln) and not (CPUM68K_HAS_32BITMUL in cpu_capabilities[current_settings.cputype]); + end; + procedure t68kaddnode.second_addordinal; const mul_op_signed: array[boolean] of tasmop = ( A_MULU, A_MULS );