On Wed, Apr 18, 2007 at 03:27:16PM -0700, Uhler, Mike wrote: > Note that both of these apply to pre-MIPS64 processors. In a MIPS64 > implementation, The Status.PX bit should be used to enable 64-bit > operations without enabling 64-bit addressing. The Status.XX bit is > gone and can't be set. The addressing boundary condition that Bill > mentioned is explicitly address in the Architecture for Programmer's > manual, Volume III, section 4.10 as a requirement for hardware in > exactly this case. > > I realize that Loongson is a MIPS III processor where Bill's suggestion > may apply, but it's not a general problem moving forward to MIPS64. Linux limits the address space to 0x7fff8000 for 32-bit processes. For sake of simplicity and symmetry we do this on both 32-bit and 64-bit kernels, on all processors. A 64-bit kernel always runs userspace processes with UX=1. Since a 32-bit process cannot create mappings above the low 2GB there isn't an actual need to use PX. (I think there is a small bug in this scheme though, a process that is accessing a 64-bit userspace address that isn't a 32-bit address should be sent a SIGBUS but will actually receive a SIGSEGV. But that's a subtility and also requires extrapolating from an API documents that only covers a strict 32-bit universe.) Ralf