Port-powerpc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Processes with multiple segments



Hi,

I found out something strange investigating whether a process could use 
multiple segments on the ppc with NetBSD 1.5.1. In trap.c, the copyin() and 
copyout() routines allow to copy kernelspace <==> userspace and allow a process 
to use multiple segments by using as many bcopy()'s as necessary and modifying 
the segment register of the user process in between.

However, in trap(), a process is assumed to be in userspace if the DAR's 
segment is USER_SR (13). Worse, than that, the only other fixed segment 
register is KERNEL_SR... (14, immediately after). Unless I miss something, the 
trap mechanism assumes a userspace process can only use one segment ; since in 
user mode one cannot change the segment register value, the only way to use 
multiple segments is to use multiple segment registers.

For now my hypothesis is that the implementation, for some obscure reason, is 
only partial. But I'd like to know if it's really the case and if the obvious 
workaround I just mentioned above would be compatible with the rest of memory 
management as currently implemented.

--Martin
-- 

Get your free email from www.linuxmail.org 


Powered by Outblaze



Home | Main Index | Thread Index | Old Index