[comp.os.minix] Where to start for 68010 port?

john@chance.UUCP (John R. MacMillan) (12/29/90)

A friend and I are thinking of porting Minix to a spare AT&T
UNIX PC that's lying around, and we wanted to know which port
we should start with.

The UNIX PC is a 68010 box; if you're not familiar with the
68010, it's (not surprisingly) between the 68020 and 68000.  It
has memory protection.  Is it worth starting from a 386 version
for the memory protection, and 32-bit stuff, or should we start
from a 68000 version and add on?  And if the latter, which one?
We want the machine to boot Minix, not run it under the
existing OS.

Comments, suggestions, etc. welcome (hey, that's why I'm
posting here, right? :-) ) by posting or email.

Thanks!
-- 
John R. MacMillan       | I wish I had a nickname like Crusher, Snake or Dennis
john@chance.UUCP        | Because guys with nicknames always get the gal.
...!scocan!chance!john  |       -- barenaked ladies

eesrajm@cc.brunel.ac.uk (Andrew J Michael) (01/07/91)

In article <1990Dec29.014903.12192@chance.UUCP>, john@chance.UUCP (John R. MacMillan) writes:
> 
> A friend and I are thinking of porting Minix to a spare AT&T
> UNIX PC that's lying around, and we wanted to know which port
> we should start with.
> 

(Stuff deleted)

> Is it worth starting from a 386 version
> for the memory protection, and 32-bit stuff, or should we start
> from a 68000 version and add on?  And if the latter, which one?
> We want the machine to boot Minix, not run it under the
> existing OS.
> 
> -- 
> John R. MacMillan       | I wish I had a nickname like Crusher, Snake or Dennis
> john@chance.UUCP        | Because guys with nicknames always get the gal.
> ...!scocan!chance!john  |       -- barenaked ladies


I'd strongly suggest using MINIX-ST as a starting point, because you can use
the existing ACK compiler to get a running system pretty quickly.  Use the
ST shadowing method until you have got something running, then try playing 
with the MMU on the AT&T box.  Trying to get it all working, MMU and all in
one go could be rather awkward.  (Anyway, I like the divide and conquer
approach personally !)

Your main problem will be finding a host machine to compile your new version
of MINIX in the first place.  If you can find an ST/Mac/Amiga lying around
then you should be OK.  If not, you will need to cross-compile with gcc on a
Sun or similar.  The problem here is that gcc won't compile the out-of-the-box
sources without some  modifications.

Regardless of the method used, beware the stack frame in kernel/stmpx.s at the
point where it is set up around label L5 (if I remember correctly).  The code
assumes the use of a 68000, and therefore doesn't set up the format word. 
This is instant death on a 68010 or 68020.

(I've posted this rather than emailed because people keep asking me about
MINIX on 68010 and 68020.  Perhaps I should do a FAQ ....)

Regards
Andy Michael



-- 
Andy Michael (eesrajm@cc.brunel.ac.uk)      " Emulation is the sincerest
85 Hawthorne Crescent                         form of pottery."
West Drayton
Middlesex                                    - William Frend De Morgan
UB7 9PA   

HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (01/09/91)

Why do people always say gcc does not compile out-of-the-box MINIX 1.5
correctly?
I remember I once patched gcc to make sizeof int (not long) and to pass
unsigned 8-bit items correctly, but since then,
I can cross-compile MINIX on this Sun without modification and without
problems, so

what the hell do you mean should be modified?

C.v.W.

eesrajm@cc.brunel.ac.uk (Andrew J Michael) (01/13/91)

In article <41242@nigel.ee.udel.edu>, HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) writes:
> Why do people always say gcc does not compile out-of-the-box MINIX 1.5
> correctly?

(Stuff deleted)

> what the hell do you mean should be modified?
> 
> C.v.W.

The problem here is what you mean by gcc.  In the MINIX-68k world, I take this
to mean the port carried out by Jhawar Bammi, or variants thereof.  This port
can compile with either 16 or 32-bit ints.  Since it is actually a 32-bit
compiler internally, you need some casts to sizeof() in the MINIX-1.5 source
to get it to compile properly.

More importantly, this version of gcc uses gas, and gas only understands MIT
syntax for 68k assembler.  The assembler files in MINIX-68k are written in
Motorola syntax, and need converting before gcc/gas can cope with them.

Andy Michael


-- 
Andy Michael (eesrajm@cc.brunel.ac.uk)      " Emulation is the sincerest
85 Hawthorne Crescent                         form of pottery."
West Drayton
Middlesex                                    - William Frend De Morgan
UB7 9PA   

) (01/14/91)

Andrew J Michael <eesrajm@CC.BRUNEL.AC.UK> writes:
>More importantly, this version of gcc uses gas, and gas only understands MIT
>syntax for 68k assembler.  The assembler files in MINIX-68k are written in
>Motorola syntax, and need converting before gcc/gas can cope with them.

I am compiling a modified version of minix-st 1.5.10 with gcc. To circumvent
the gas/mot assembler syntax problem i wrote a tool called cv68 which converts
motorola syntax to gas syntax. The tool is written using flex which was ported
to minix times ago. Since i used flex and not yacc everything is quite simple-
minded. Some very special addressing mode (absolute address with short/long
specification - used in tools/boot.s) confuses it, but every other asm file
coming with 1.5.10 can be converted and compiled by gas correctly.

As far as i know R.Orth (ro@thp.uni-koeln.de) is preparing a new gcc kit
which will contain my cv68 tool. However, i can post it now if there's enough
interest.

=========================================================================
              " This space intentionally left blank "

Kai-Uwe Bloem, I5110401@DBSTU1.BitNet, ...!unido!dbstu1.bitnet!i5110401,
I5110401%DBSTU1.BITNET@CORNELLC.CCS.CORNELL.EDU (or other known gateways)
           Technische Universitaet Braunschweig / germany