[TUHS] Accessing the PDP-11/70 MMU registers and the kernel's u area

Diomidis Spinellis dds at aueb.gr
Sun Jun 14 18:33:07 AEST 2020


 From the 2.11 BSD sources I understand that the PDP-11/70 MMU address 
and data registers, KDSA and KDSD, start at 0172360 and 0172320 
respectively [1].  Yet, when I read the register contents I don't get 
what I would expect to see: increasing by 0200 memory values for KDSA 
and the same constant value for KDSD [2].  I checked this by looking at 
/dev/mem.

# od -o /dev/mem 0172360 | head -1
0172360  000002 000016 001403 012700 000400 000402 012700 000200

# od /dev/mem 0172320 | head -1
0172320  101016 005064 000026 005067 175456 016467 000006 175430

I get the same results when I examine the memory through SIMH:

sim> examine 172360
172360: 000002
sim> examine 172362
172362: 000016
sim> examine 172364
172364: 001403

sim> examine 172320
172320: 101016
sim> examine 172322
172322: 005064

The MMU kernel instruction registers, KISA and KISD, contain similarly 
nonsensical values as do the registers located at a different memory 
location (077320, 0772360) indicated in another source [3].  What am I 
missing?

My goal is to access from the console the kernel's u area.  According to 
mem(4) and the symbols in /unix, this should be at address 0140000. 
Indeed, accessing it through /dev/kmem I get the expected results for 
e.g. u_comm and u_uid.  However, I have been unable to find it in the 
machine's physical memory, hence my question regarding the MMU's operation.

[1] 
https://github.com/RetroBSD/2.11BSD/blob/master/usr/sys/pdpstand/M.s#L346
[2] 
https://github.com/RetroBSD/2.11BSD/blob/master/usr/sys/pdpstand/M.s#L247
[3] https://gunkies.org/wiki/PDP-11_Memory_Management

Diomidis


More information about the TUHS mailing list