On Wed, 2005-02-02 at 14:04 -0600, Art Haas wrote:
> Hi.
>
> Here's my attempt at taking Bob Breuer's patch and adding in some of the
> BTFIXUP magic that sparc32 needs. I'm running the current BK kernel with
> this patch on my SS20, and things seem to work. The current kernel
> complains during bootup and shutdown about accessing the system clock,
> a problem I am guessing is related to changes elsewhere in the kernel.
This patch only covers sun4m. The attached patch covers all sparc32.
Signed-off-by: Tom 'spot' Callaway <[EMAIL PROTECTED]>
~spot
---
Tom "spot" Callaway <tcallawa(a)redhat*com> LCA, RHCE
Red Hat Sales Engineer || Aurora Linux Project Leader
"If you are going through hell, keep going."
-- Sir Winston Churchill
--- linux-2.6.10/arch/sparc/mm/srmmu.c.BAD 2005-01-30 13:41:29.238542766 -0500
+++ linux-2.6.10/arch/sparc/mm/srmmu.c 2005-01-30 13:45:57.034831542 -0500
@@ -2197,6 +2197,7 @@
BTFIXUPSET_CALL(free_pgd_fast, srmmu_free_pgd_fast, BTFIXUPCALL_NORM);
BTFIXUPSET_CALL(get_pgd_fast, srmmu_get_pgd_fast, BTFIXUPCALL_NORM);
+ BTFIXUPSET_HALF(pte_readi, SRMMU_NOREAD);
BTFIXUPSET_HALF(pte_writei, SRMMU_WRITE);
BTFIXUPSET_HALF(pte_dirtyi, SRMMU_DIRTY);
BTFIXUPSET_HALF(pte_youngi, SRMMU_REF);
--- linux-2.6.10/arch/sparc/mm/sun4c.c.BAD 2005-01-30 13:47:47.488040102 -0500
+++ linux-2.6.10/arch/sparc/mm/sun4c.c 2005-01-30 13:50:42.850380974 -0500
@@ -2225,6 +2225,7 @@
BTFIXUPSET_CALL(free_pgd_fast, sun4c_free_pgd_fast, BTFIXUPCALL_NORM);
BTFIXUPSET_CALL(get_pgd_fast, sun4c_get_pgd_fast, BTFIXUPCALL_NORM);
+ BTFIXUPSET_HALF(pte_readi, _SUN4C_PAGE_READ);
BTFIXUPSET_HALF(pte_writei, _SUN4C_PAGE_WRITE);
BTFIXUPSET_HALF(pte_dirtyi, _SUN4C_PAGE_MODIFIED);
BTFIXUPSET_HALF(pte_youngi, _SUN4C_PAGE_ACCESSED);
--- linux-2.6.10/include/asm-sparc/pgtsrmmu.h.BAD 2005-01-30 12:37:27.924511262 -0500
+++ linux-2.6.10/include/asm-sparc/pgtsrmmu.h 2005-01-30 12:37:35.554351350 -0500
@@ -73,6 +73,7 @@
#define SRMMU_CACHE 0x80
#define SRMMU_DIRTY 0x40
#define SRMMU_REF 0x20
+#define SRMMU_NOREAD 0x10
#define SRMMU_EXEC 0x08
#define SRMMU_WRITE 0x04
#define SRMMU_VALID 0x02 /* SRMMU_ET_PTE */
--- linux-2.6.10/include/asm-sparc/pgtable.h.BAD 2005-01-30 14:19:42.633893678 -0500
+++ linux-2.6.10/include/asm-sparc/pgtable.h 2005-01-30 14:22:17.764310270 -0500
@@ -186,10 +186,31 @@
* The following only work if pte_present() is true.
* Undefined behaviour if not..
*/
+BTFIXUPDEF_HALF(pte_readi)
BTFIXUPDEF_HALF(pte_writei)
BTFIXUPDEF_HALF(pte_dirtyi)
BTFIXUPDEF_HALF(pte_youngi)
+extern int pte_read(pte_t pte) __attribute_const__;
+extern __inline__ int pte_read(pte_t pte)
+{
+ switch (sparc_cpu_model){
+ case sun4:
+ case sun4c:
+ return pte_val(pte) & BTFIXUP_HALF(pte_readi);
+ case sun4d:
+ case sun4e:
+ case sun4m:
+ return !(pte_val(pte) & BTFIXUP_HALF(pte_readi));
+ /* pacify gcc warnings */
+ case sun4u:
+ case sun_unknown:
+ case ap1000:
+ default:
+ return 0;
+ }
+}
+
extern int pte_write(pte_t pte) __attribute_const__;
extern __inline__ int pte_write(pte_t pte)
{