Re: [PATCH] C undefined behavior fix

Paul Mackerras
2002-01-03T23:55:20Z

Lars Brinkhoff writes:

> > [Linux] won't get very far on a PDP-10, I can assure you. :)
>
> Any particular reason why?

For a start, there isn't an arch/pdp10 directory. The kernel's
approach to portability is to have code tailored to each architecture,
and we don't have such code for a pdp10.

As to the question whether such code could be developed, it would
depend a lot on how gcc did things. I would expect an int * to be
just an 18-bit address but a char * to be a byte pointer, i.e. a
36-bit word with the byte offset and size in the top 18 bits and the
word address in the lower 18 bits. This would mean that casting
char * pointers to unsigned long and vice-versa wouldn't give the kind
of results we expect. The kernel assumes in a lot of places that
memory is byte-addressable and that casting a pointer to an unsigned
long gives you the byte address of the first byte of the object that
the pointer points to, and that it can do arithmetic on those byte
addresses.

Another difficulty would be in relation to the MMU. IIRC, the KA10
processor had a simple offset/limit memory management scheme, which
would not be sufficient for linux, which requires support for paged
virtual memory. I have forgotten what the KI10 and KL10 processors
did; I recall it was more complex but I don't think it amounted to
paged virtual memory.

Paul.