[fpc-pascal] some problem in SVN FPC for arm linux (v 2.3.1)

josepascual (almudi) josepascual at almudi.com
Tue May 1 13:03:32 CEST 2007


> On 01/05/07, josepascual (almudi) <josepascual at almudi.com> wrote:
> >
> > I have done it, I'm going to svn/fpc/ directory and I run fpcmake
> > -Tarm-linux.
> >
> > question:
> > a) should I run fpcmake -pw -Tarm-linux?
> > b) or should I run fpcmake -rpw -Tarm-linux? (recursive)
> > c) or only fpcmake -Tarm-linux
> >
> 
> fpcmake -rTall
> 
> you shouldn't have to do this if you haven't modified Makefile.fpc in
> any of the directories.  it doesn't hurt, though.

I have downloaded SVN version for 2.1.3. I have no patch anything as other
times before,

I'm compiling with -CfSOFT (I want to generate a ppcrossarm eabi)

make clean crossall CPU_TARGET=arm OS_TARGET=linux
CROSSBINDIR=/usr/local/arm/gcc-4.1.1-glibc-2.5-gnueabi/bin/
BINUTILSPREFIX=armv4t-crosstool-linux-gnueabi-
PP=/usr/local/lib/fpc/2.1.1/ppc386  OPT="-CfSOFT"
.
.
.
/trabajo/x86/freepascal/svn/fpc/rtl/units/arm-linux/system.s: Assembler
messages:
/trabajo/x86/freepascal/svn/fpc/rtl/units/arm-linux/system.s:12610: Error:
selected processor does not support `rfs r0'
/trabajo/x86/freepascal/svn/fpc/rtl/units/arm-linux/system.s:12613: Error:
selected processor does not support `wfs r0'
system.pp(335) Error: Error while assembling exitcode 1
system.pp(335) Fatal: There were 2 errors compiling module, stopping
Fatal: Compilation aborted
.
.
.

I resolved it other times removing assembler code in rtl/arm/mathu.inc and
rtl/arm/arm.inc for rfs and wfs arm instruction,

but Is it correct?

extracted from rtl/arm/mathu.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}
.
.
.

What is gba and nds? 

extracted from rtl/arm/arm.inc

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;








More information about the fpc-pascal mailing list