[fpc-pascal] Fcp for arm linux for EABI

Jose Pascual josepascual at almudi.com
Fri Apr 27 00:00:02 CEST 2007


Hi,

in rtl/arm/arm.inc it can read

procedure fpc_cpuinit;
begin
{$if not(defined(wince)) and not(defined(gba)) and not(defined(nds))}
  asm
    rfs r0
    and r0,r0,#0xffe0ffff
    orr r0,r0,#0x00020000
    wfs r0
  end;
{$endif}
end;

altought I'm using a toolchain EABI and Compiling for softfloat -CfSOFT I
can make ppc for arm because
rfs and wfs are fpu intruction in ARM and it's contained in this code.

is there some solution for it?

Same thing in rtl/arm/math.inc

{$if not(defined(gba)) and not(defined(nds))}
const
  _FPU_MASK_IM  =  $00010000;      { invalid operation      }
  _FPU_MASK_ZM  =  $00020000;      { divide by zero         }
  _FPU_MASK_OM  =  $00040000;      { overflow               }
  _FPU_MASK_UM  =  $00080000;      { underflow              }
  _FPU_MASK_PM  =  $00100000;      { inexact                }
  _FPU_MASK_DM  =  $00000000;      { denormalized operation }
  _FPU_MASK_ALL =  $001f0000;      { mask for all flags     }

function FPU_GetCW : dword; nostackframe; assembler;
  asm
    rfs r0
  end;


procedure FPU_SetCW(cw : dword); nostackframe; assembler;
  asm
    wfs r0
  end;
{$endif}


thanks,

Jose Pascual,


> -----Mensaje original-----
> De: fpc-pascal-bounces at lists.freepascal.org [mailto:fpc-pascal-
> bounces at lists.freepascal.org] En nombre de Henry Vermaak
> Enviado el: jueves, 26 de abril de 2007 14:54
> Para: FPC-Pascal users discussions
> Asunto: Re: [fpc-pascal] Fcp for arm linux for EABI
> 
> another thing that's important to do when you're using svn is edit
> compiler/systems/i_linux.pas.  go to the arm_linux section and remove
> the tf_smartlink_sections from the flags.  you can also edit the
> endianness of the target here (endian_little or endian_big).  see for
> example my diff for my big endian arm:
> 
> hcv at technical02:~/freepascal/latest$ svn diff -r HEAD
> compiler/systems/i_linux.pas
> Index: compiler/systems/i_linux.pas
> ===================================================================
> --- compiler/systems/i_linux.pas        (revision 7167)
> +++ compiler/systems/i_linux.pas        (working copy)
> @@ -525,7 +525,7 @@
>              name         : 'Linux for ARM';
>              shortname    : 'Linux';
>              flags        :
> [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
> -
> tf_use_function_relative_addresses,tf_requires_proper_alignment,tf_smar
> tlink_sections];
> +
> tf_use_function_relative_addresses,tf_requires_proper_alignment];
>              cpu          : cpu_arm;
>              unit_env     : 'LINUXUNITS';
>              extradefines : 'UNIX;HASUNIX';
> @@ -558,7 +558,7 @@
>              res          : res_none;
>              dbg          : dbg_stabs;
>              script       : script_unix;
> -            endian       : endian_little;
> +            endian       : endian_big;
>              alignment    :
>                (
>                  procalign       : 4;
> 
> henry
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal




More information about the fpc-pascal mailing list