Subject: Re: so what's happening...
To: Perry E. Metzger <perry@piermont.com>
From: Anders Magnusson <ragge@ludd.luth.se>
List: port-pdp10
Date: 07/05/2002 13:54:47
> 
> I note that there hasn't been much going on of late. Is the simulator
> and other tools in pkgsrc yet? I'd like to try pitching in....
> 
I have had some background processes going, among them has been writing
an assembler and a linker (which is mostly done). I have got the kernel
through the compiler and written some of the basic low-level functions
that makes the kernel at least inform of its existense.

There are some interesting aspects of how the memory management will
interact with the rest of the system though. Simple explanation:

The pdp10 can only address 36-bit words in memory in normal sense. There
are byte instructions that can address parts of a word, but they require
one (or two) extra words of address and also have a slightly different
format compared to normal words. Now, uvm wants to deal with memory in
bytes stored in vaddr_t/paddr_t, which should be a long or similar. 

Using byte addresses in vaddr_t will cause problems because
vaddr_t foo; struct bar *ka = (struct bar *)foo;
won't do any conversion and set ka to a funny pointer.

Using word addresses in vaddr_t will cause other problems, it will then
get funny sizes in things like:
vaddr_t a, b, c; a = b + c + sizeof(struct foo);
(sizeof() gives number of bytes, vaddr_t's are in words).

For now I have used byte addresses and added extra casts to really make
it convert code as it is expected to.

What actually stalls the development now is only a small number of gcc bugs
that I hope Lars gets time to work on soon. 

I must also say when writing this: The memory management (tops-20 paging)
is a real dream! Moderately sized pages (512 36-bit words), multi-level
page tables, physical page modify bits etc... Much more friendly than the
vax memory management :-)

-- Ragge