I modified the vm module for the sun3 so the kernel code and data area can grow to 8 megabytes (on machines with at least 8 meg of memory). I've tested the change and it appears to work. I'll run it for a while to make sure everything works before I installed it. Rather than moving the kernel down in the virtual address space and having to change everyone's Makefile I stole the additional 4 meg from the file system block cache. With this change the maximum size block cache is 20096 Kbytes which is still more than the amount for physical memory on any of our sun3's. Just for reference I made a map of the virtual address space of the sun3 and sun4. Mendel Virtual address space on the sun3: e61c000 = vmMapEndAddr on 3/50 e660000 = vmBlockCacheBaseAddr on 3/50 e3fc000 = vmStackBaseAddr on 3/50 ea20000 = vmMapEndAddr on paprika ea60000 = vmBlockCacheBaseAddr on paprika e800000 = vmStackBaseAddr on paprika 0800000 = vmKernMemSize on paprika Address 0xFFFFFFFF - Not valid in the sun3 MMU. 3840 Meg 0x0FFFFFFF - Used for weird IE, LE device mapping. 256 Kbytes (VMMACH_NET_MEM_START = 0xFFE0000) 0x0FFC0000 = VMMACH_NET_MAP_START - VDMA mapping addresses. 768 Kbytes 0x0FF00000 = VMMACH_DMA_START_ADDR - Device mapping area. 1024 Kbytes (VMMACH_DEV_END_ADDR = 0xFEFFFFF) 0x0FE00000 = VMMACH_DEV_START_ADDR = MACH_KERN_END - File system block cache. 20096 Kbytes (19.63 Meg) 0x0EA60000 - Hardware segments used to access PMEGs. 256 Kbytes 0x0EA20000 - Area used to map user pages into kernel. 128 KBytes 0x0EA00000 = vmBlockCacheBaseAddr = VmMach_AllocKernSpace(vmMapEndAddr) vmMachEndAddr = vmMapBaseAddr +vmNumMappedPages * vm_PageSize; vmBlockCacheEndAddr = mach_KernEnd = MACH_KERN_END - Kernel Stacks (128 processes). 2048 Kbytes. (stacks = 128 procs * (MACH_CODE_START - MACH_STACK_BOTTOM)) 0x0E800000 - Kernel Code and Data. 8192 Kbytes. (MACH_CODE_START = 0xE004000) 0x0E000000 - mach_KernStart = MACH_KERN_START = MACH_STACK_BOTTOM - Area for mapping between user's segment. 128 KBytes (0xE000000 - VMMACH_SEG_SIZE = VMMACH_MAP_SEG_ADDR) 0x0DFE0000 - User's virtual address space. 229240 Kbytes (223.9 Meg) 0x00002000 - Invalid page - 8 Kbytes. 0x00000000 New sun4 mapping: Address 0xFFFFFFFF - Net memory allocation area. 0xFFFC0000 - VDMA mapping addresses. 768 Kbytes 0xFFF00000 - Device mapping area. 2048 Kbytes 0xFFD00000 - Used for IE device mapping and such. Contains enough space to avoid cache flushes for mapping scatter gather arrays. 0xFFB80000 - File system block cache. 124160 Kbytes (121.25 Meg) 0xF83C0000 - Hardware segments used to access PMEGs. 512 Kbytes 0xF8340000 - Lost due to rounding. 128 Kbytes 0xF8320000 - Area used to map user pages into kernel. 128 KBytes 0xF8300000 - Kernel Stacks (128 processes). 3072 Kbytes. 0xF8000000 - Kernel Code and Data. 40 Meg (Was 32 Meg). 0xF6000000 - Area for mapping between user's segment. 256 KBytes 0xF5FC0000 - Not currently in use. 352000 Kbytes (343.75 Meg) 0xE0000000 - The Hole!! (3072 Meg) 0x20000000 - User's virtual address space. 524280 Kbytes (511.99 Meg) 0x00002000 - Invalid page - 8 Kbytes. 0x00000000