Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2012-10

Testing MIPS: newbie questions

9 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Mark Morgan Lloyd

In trunk, is there any particular reason why tbs/tb0072.pp refers to CPUSMIPS rather than CPUMIPS?

I notice that in system.pp and in linux/ptypes.inc etc., conditionals refer to CPUMIPS while in other places they refer to CPUMIPS32 and/or CPUMIPSEL32. Is this correct?

Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or colleagues]

Reply by email

Pierre Free Pascal
to Mark Morgan Lloyd
Show quoted text 9 lines
-----Message d'origine----- De : [mailto:fpc-devel- De la part de Mark Morgan Lloyd Envoyé : lundi 15 octobre 2012 15:39 À : Objet : [fpc-devel] Testing MIPS: newbie questions In trunk, is there any particular reason why tbs/tb0072.pp refers to CPUSMIPS rather than CPUMIPS?

This is probably an error on my side :(
Fixed in rev 22655,
thanks for noticing!

I notice that in system.pp and in linux/ptypes.inc etc., conditionals refer to CPUMIPS while in other places they refer to CPUMIPS32 and/or CPUMIPSEL32. Is this correct?

CPUMIPS is defined for both mips big endian and little endian targets, CPUMIPSEL is defined only for little endian mips target, CPUMIPSEB is defined only for big endian mips target.

CPUMIPS32 is here to specify that it is a 32bit system, and to possibly separate out future 64bit specific code. (Nothing ready on this side yet...)

I am not sure all of the uses in rtl are really correct (in the sense that they apply to the right sub-category of target...) Please do not hesitate to report all suspicious instances.

There are still plenty of bug in the code generator, help would be most appreciated!

Pierre Muller

Show quoted text 5 lines
-- Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or

colleagues]

_______________________________________________ fpc-devel maillist - http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply by email

Mark Morgan Lloyd
Show quoted text 7 lines
On Mon, Oct 15, 2012 at 01:39:24PM +0000, Mark Morgan Lloyd wrote: > In trunk, is there any particular reason why tbs/tb0072.pp refers to > CPUSMIPS rather than CPUMIPS? Hey, what are you testing this on? I remember you got a new box but I can't remember what it is....SGI something? Do they run big or little endian? Israel

Somebody local was clearing an office, and I've just got hold of an SGI Octane (hopefully with a decent PSU this time) and an as-new Origin 200. Neither has Linux on it yet and they're big-endian, but having some real hardware around the place is always much more of an incentive than using emulators. I also got a (small) DEC Alpha system from him, haven't a clue whether it runs.

Also I got hold of an SGI Workstation 750 a few weeks ago- nice piece of kit, shame it's IA-64 (but that suits me, since I specifically wanted to be able to look at the bundled code format for something else I'm doing, and the Ski emulator's only good for nursery slopes).

Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or colleagues]

Reply by email

Mark Morgan Lloyd
to Pierre Free Pascal: This is probably an error on my side :( thanks for noticing! CPUMIPS is defined for both…
Pierre Free Pascal wrote 31 lines
> -----Message d'origine----- > De : [mailto:fpc-devel- > De la part de Mark Morgan Lloyd > Envoyé : lundi 15 octobre 2012 15:39 > À : > Objet : [fpc-devel] Testing MIPS: newbie questions > > In trunk, is there any particular reason why tbs/tb0072.pp refers to > CPUSMIPS rather than CPUMIPS? This is probably an error on my side :( Fixed in rev 22655, thanks for noticing! > I notice that in system.pp and in linux/ptypes.inc etc., conditionals > refer to CPUMIPS while in other places they refer to CPUMIPS32 and/or > CPUMIPSEL32. Is this correct? CPUMIPS is defined for both mips big endian and little endian targets, CPUMIPSEL is defined only for little endian mips target, CPUMIPSEB is defined only for big endian mips target. CPUMIPS32 is here to specify that it is a 32bit system, and to possibly separate out future 64bit specific code. (Nothing ready on this side yet...) I am not sure all of the uses in rtl are really correct (in the sense that they apply to the right sub-category of target...) Please do not hesitate to report all suspicious instances. There are still plenty of bug in the code generator, help would be most appreciated!

Thanks for that. What I actually started with this morning was revisiting http://wiki.lazarus.freepascal.org/Native_MIPS_Systems and trying to crossbuild the RTL. I'm afraid that I didn't get very far which led me to look at the defines... should this work yet, or is a full test run a prerequisite?

Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or colleagues]

Reply by email

Pierre Free Pascal
to Mark Morgan Lloyd

I have a small batch that I use for cross-compilation from i386-win32 to mips(el)-linux.

E:\pas\trunk\fpcsrc\compiler>type mipsel-cycle.bat set CUR_FPC_VER=2.7.1
if "%1" == "cont" goto cont
make cycle OPT="-gl -al -n -O- -Ur -vw" OS_TARGET=linux CPU_TARGET=mipsel ALLOW_WARNINGS=1
if errorlevel 1 goto error
pscp -load gccmips .\ppcmipsel gcc42.fsffrance.org:bin copy ppcrossmipsel.exe \pas\fpc-%CUR_FPC_VER%\bin\i386-win32 make -C ../rtl install FPC=ppcrossmipsel.exe PREFIX=/pas/fpc-%CUR_FPC_VER% cd utils
del gppc386
make FPC=/pas/trunk/fpcsrc/compiler/ppcrossmipsel OPT=-gl clean all gppc386 pscp -load gccmips .\gppc386 gcc42.fsffrance.org:bin/gppcmipsel cd ..
goto end
:error
echo An error occurred
:end

This uploads a native mipsel compiler that
is usable (at least as long as you don't work with too recent GNU as/ld,

ppcmipsel hello.pp
Assembler messages:
Error: -march=mips2 is not compatible with the selected ABI hello.pp(14,18) Error: Error while assembling exitcode 1 hello.pp(14,18) Fatal: There were 2 errors compiling module, stopping Fatal: Compilation aborted
as --version
GNU assembler (GNU Binutils) 2.23.51.20121004

So most of the problems described in
http://wiki.lazarus.freepascal.org/Native_MIPS_Systems should not be present anymore...

Pierre

Show quoted text 51 lines
-----Message d'origine----- De : [mailto:fpc-devel- De la part de Mark Morgan Lloyd Envoyé : lundi 15 octobre 2012 17:51 À : Objet : Re: [fpc-devel] Testing MIPS: newbie questions Pierre Free Pascal wrote: >> -----Message d'origine----- >> De : [mailto:fpc-devel- >> De la part de Mark Morgan Lloyd >> Envoyé : lundi 15 octobre 2012 15:39 >> À : >> Objet : [fpc-devel] Testing MIPS: newbie questions >> >> In trunk, is there any particular reason why tbs/tb0072.pp refers to >> CPUSMIPS rather than CPUMIPS? > This is probably an error on my side :( > Fixed in rev 22655, > thanks for noticing! > >> I notice that in system.pp and in linux/ptypes.inc etc., conditionals >> refer to CPUMIPS while in other places they refer to CPUMIPS32 and/or >> CPUMIPSEL32. Is this correct? > > CPUMIPS is defined for both mips big endian and little endian targets, > CPUMIPSEL is defined only for little endian mips target, > CPUMIPSEB is defined only for big endian mips target. > > CPUMIPS32 is here to specify that it is a 32bit system, > and to possibly separate out future 64bit specific code. > (Nothing ready on this side yet...) > > I am not sure all of the uses in rtl are really correct > (in the sense that they apply to the right sub-category of target...) > Please do not hesitate to report all suspicious instances. > > There are still plenty of bug in the code generator, > help would be most appreciated! Thanks for that. What I actually started with this morning was revisiting http://wiki.lazarus.freepascal.org/Native_MIPS_Systems and trying to crossbuild the RTL. I'm afraid that I didn't get very far which led me to look at the defines... should this work yet, or is a full test run a prerequisite? -- Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or

colleagues]

_______________________________________________ fpc-devel maillist - http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply by email

Mark Morgan Lloyd
to Pierre Free Pascal
Pierre Free Pascal wrote 24 lines
I have a small batch that I use for cross-compilation from i386-win32 to mips(el)-linux. E:\pas\trunk\fpcsrc\compiler>type mipsel-cycle.bat set CUR_FPC_VER=2.7.1 if "%1" == "cont" goto cont make cycle OPT="-gl -al -n -O- -Ur -vw" OS_TARGET=linux CPU_TARGET=mipsel ALLOW_WARNINGS=1 if errorlevel 1 goto error pscp -load gccmips .\ppcmipsel gcc42.fsffrance.org:bin copy ppcrossmipsel.exe \pas\fpc-%CUR_FPC_VER%\bin\i386-win32 make -C ../rtl install FPC=ppcrossmipsel.exe PREFIX=/pas/fpc-%CUR_FPC_VER% cd utils del gppc386 make FPC=/pas/trunk/fpcsrc/compiler/ppcrossmipsel OPT=-gl clean all gppc386 pscp -load gccmips .\gppc386 gcc42.fsffrance.org:bin/gppcmipsel cd .. goto end :error echo An error occurred :end This uploads a native mipsel compiler that is usable (at least as long as you don't work with too recent GNU as/ld,

Turned out I'd still got some old symlinks from when I was tinkering with David Zhang's stuff. RTL now OK, I'll try a full build in the morning.

Show quoted text 8 lines
ppcmipsel hello.pp Assembler messages: Error: -march=mips2 is not compatible with the selected ABI hello.pp(14,18) Error: Error while assembling exitcode 1 hello.pp(14,18) Fatal: There were 2 errors compiling module, stopping Fatal: Compilation aborted as --version GNU assembler (GNU Binutils) 2.23.51.20121004

Thanks for the warning. I'm on 2.20.1, looks like the version number window is quite tight.

So most of the problems described in http://wiki.lazarus.freepascal.org/Native_MIPS_Systems should not be present anymore...

I'll update that presently. What I want to try doing first is running the compiler natively (hosted by Qemu), later I might try putting it on real hardware but I anticipate the endianness issue will take some work.

Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or colleagues]

Reply by email

Nikolai Zhubr
to Mark Morgan Lloyd

Hi,
15.10.2012 23:57, Mark Morgan Lloyd:
[...]

Show quoted text 8 lines
> So most of the problems described in > http://wiki.lazarus.freepascal.org/Native_MIPS_Systems > should not be present anymore... I'll update that presently. What I want to try doing first is running the compiler natively (hosted by Qemu), later I might try putting it on real hardware but I anticipate the endianness issue will take some work.

In case you need something for testing/debugging/documenting/whatever and encounter any problems getting your SGI boxes running - I can create an account for you here for ssh access (both big and little endian, both are up approx 24/7 anyway). Just let me know (in private).

Nikolai

Reply by email

Mark Morgan Lloyd
to Nikolai Zhubr
Nikolai Zhubr wrote 15 lines
Hi, 15.10.2012 23:57, Mark Morgan Lloyd: [...] >> So most of the problems described in >> http://wiki.lazarus.freepascal.org/Native_MIPS_Systems >> should not be present anymore... > > I'll update that presently. What I want to try doing first is running > the compiler natively (hosted by Qemu), later I might try putting it on > real hardware but I anticipate the endianness issue will take some work. > In case you need something for testing/debugging/documenting/whatever and encounter any problems getting your SGI boxes running - I can create an account for you here for ssh access (both big and little endian, both are up approx 24/7 anyway). Just let me know (in private).

Thanks Nikolai, noted. Progress will be intermittent here since I'm interleaving with much else, but I might take you up on that offer.

Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or colleagues]

Reply by email

Mark Morgan Lloyd
to Mark Morgan Lloyd: Turned out I'd still got some old symlinks from when I was tinkering with David Zhang's…
Mark Morgan Lloyd wrote 10 lines
Thanks for the warning. I'm on 2.20.1, looks like the version number window is quite tight. > So most of the problems described in > http://wiki.lazarus.freepascal.org/Native_MIPS_Systems > should not be present anymore... I'll update that presently. What I want to try doing first is running the compiler natively (hosted by Qemu), later I might try putting it on real hardware but I anticipate the endianness issue will take some work.

Copied across onto a Debian mipsel hosted by Qemu, I've just completed a make all running natively including default packages etc. The only oddity that I noticed was that I had to specify PP when running the make, I don't know whether that is still an issue now that things have cycled fully (and I'm loath to repeat the exercise on account of time/heat/noise issues- I'm using a big server as host and MIPS was still running more slowly than reasonable).

So granted that there are known problems as shown up by the test failures, but things are looking pretty good. Congratulations and thanks to all concerned :-)

Mark Morgan Lloyd markMLl .AT. telemetry.co .DOT. uk [Opinions above are the author's, not those of his employers or colleagues]

Reply by email