Port-powerpc archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: 512M RAM support
At 06:52 AM 6/17/2002, Allen Briggs wrote:
On Mon, Jun 17, 2002 at 12:11:19AM -0700, Matt Thomas wrote:
> It's not that simple. In fact, a bunch of changes need to made.
> I'll try to get that committed sometime this week. I have those
> changes done for 1.5.
I assume these are changes to allow the kernel to occupy and use
more than 256MB, correct? I'd like to see your changes posted here
as a diff before they're committed. I expect that there are both
platform-specific and generic powerpc parts to the changes. Is
this correct?
-allen
No platform specific stuff is needed. Just a few extra defines and
changes to trap_subr.S (I've avoided trap_subr_mp.S since that really
should be merged into trap_subr.S). mpc6xx/pmap.c already has the
requisite code to initialize KERNEL2_SR.
Index: include/mpc6xx/vmparam.h
===================================================================
RCS file: /cvsroot/syssrc/sys/arch/powerpc/include/mpc6xx/vmparam.h,v
retrieving revision 1.1
diff -u -r1.1 vmparam.h
--- include/mpc6xx/vmparam.h 2001/06/06 17:36:03 1.1
+++ include/mpc6xx/vmparam.h 2002/06/25 18:52:27
@@ -106,25 +106,29 @@
*/
#if 0
/*
- * Move the SR# to the top 4 bits to make the lower 19bits entirely random
+ * Move the SR# to the top 4 bits to make the lower 20 bits entirely random
* so to give better PTE distribution.
*/
#define VSID_MAKE(sr, hash) (((sr) <<
(ADDR_SR_SHFT-4))|((hash) & 0xfffff))
#define VSID_TO_SR(vsid) (((vsid) >> (ADDR_SR_SHFT-4)) & 0xF)
#define VSID_TO_HASH(vsid) ((vsid) & 0xfffff)
+#define VSID_SR_INCREMENT 0x00100000
#else
#define VSID_MAKE(sr, hash) ((sr) | (((hash) & 0xfffff) << 4))
#define VSID_TO_SR(vsid) ((vsid) & 0xF)
#define VSID_TO_HASH(vsid) (((vsid) >> 4) & 0xfffff)
+#define VSID_SR_INCREMENT 0x00000001
#endif
/*
* Fixed segments
*/
-#define USER_SR 13
-#define KERNEL_SR 14
+#define USER_SR (KERNEL_SR-1)
+#define KERNEL_SR (KERNEL2_SR-1)
+#define KERNEL2_SR 14
#define KERNEL_VSIDBITS 0xfffff
#define KERNEL_SEGMENT VSID_MAKE(KERNEL_SR, KERNEL_VSIDBITS)
+#define KERNEL2_SEGMENT VSID_MAKE(KERNEL2_SR, KERNEL_VSIDBITS)
#define EMPTY_SEGMENT VSID_MAKE(0, KERNEL_VSIDBITS)
#define USER_ADDR ((void *)(USER_SR << ADDR_SR_SHFT))
@@ -144,7 +148,7 @@
#define VM_MAXUSER_ADDRESS ((vaddr_t) 0x7ffff000)
#define VM_MAX_ADDRESS VM_MAXUSER_ADDRESS
#define VM_MIN_KERNEL_ADDRESS ((vaddr_t) (KERNEL_SR <<
ADDR_SR_SHFT))
-#define VM_MAX_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS +
SEGMENT_LENGTH)
+#define VM_MAX_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS +
2*SEGMENT_LENGTH)
#ifndef VM_PHYSSEG_MAX
#define VM_PHYSSEG_MAX 16
Index: powerpc/trap_subr.S
===================================================================
RCS file: /cvsroot/syssrc/sys/arch/powerpc/powerpc/trap_subr.S,v
retrieving revision 1.21
diff -u -r1.21 trap_subr.S
--- powerpc/trap_subr.S 2002/05/02 16:47:49 1.21
+++ powerpc/trap_subr.S 2002/06/25 18:52:28
@@ -672,6 +672,8 @@
mtsr USER_SR,3; \
lwz 3,PM_KERNELSR(2); \
mtsr KERNEL_SR,3; \
+ lwz 3,PM_KERNEL2SR(2); \
+ mtsr KERNEL2_SR,3; \
CPU601_KERN_LEAVE(2,3); \
1: mfsprg 2,1; /* restore cr */ \
mtcr 2; \
@@ -712,6 +714,9 @@
lis 31,KERNEL_SEGMENT@h
ori 31,31,KERNEL_SEGMENT@l
mtsr KERNEL_SR,31
+ lis 31,KERNEL2_SEGMENT@h
+ ori 31,31,KERNEL2_SEGMENT@l
+ mtsr KERNEL2_SR,31
CPU601_KERN_ENTRY(30,31)
/* Obliterate SRs so BAT spills work correctly */
lis 31,EMPTY_SEGMENT@h
@@ -885,6 +890,9 @@
lis 3,(KERNEL_SEGMENT|SR_SUKEY|SR_PRKEY)@h; \
ori 3,3,(KERNEL_SEGMENT|SR_SUKEY|SR_PRKEY)@l; \
mtsr KERNEL_SR,3; \
+ lis 3,(KERNEL2_SEGMENT|SR_SUKEY|SR_PRKEY)@h; \
+ ori 3,3,(KERNEL2_SEGMENT|SR_SUKEY|SR_PRKEY)@l; \
+ mtsr KERNEL2_SR,3; \
99: mfmsr 5; \
ori 5,5,(PSL_IR|PSL_DR|PSL_RI); \
mtmsr 5; \
@@ -940,6 +948,8 @@
mtsr 7,4 /* Restore SR7 */
lwz 4,PM_KERNELSR(3)
mtsr KERNEL_SR,4 /* Restore kernel SR */
+ lwz 4,PM_KERNEL2SR(3)
+ mtsr KERNEL2_SR,4 /* Restore kernel SR2 */
CPU601_KERN_LEAVE(3,4)
lis 3,_C_LABEL(astpending)@ha /* Test AST pending */
lwz 4,_C_LABEL(astpending)@l(3)
--
Matt Thomas Internet: matt%3am-software.com@localhost
3am Software Foundry WWW URL: http://www.3am-software.com/bio/matt/
Cupertino, CA Disclaimer: I avow all knowledge of this message
Home |
Main Index |
Thread Index |
Old Index