diff -ru /usr/src/redhat/SOURCES/linux/arch/ppc/Makefile ./arch/ppc/Makefile --- /usr/src/redhat/SOURCES/linux/arch/ppc/Makefile Mon Jun 19 20:59:35 2000 +++ ./arch/ppc/Makefile Fri Apr 6 14:03:29 2001 @@ -23,7 +23,7 @@ CPPFLAGS := $(CPPFLAGS) -D__powerpc__ CFLAGS := $(CFLAGS) -D__powerpc__ -fsigned-char \ -msoft-float -pipe -ffixed-r2 -Wno-uninitialized \ - -mmultiple -mstring +# -mmultiple -mstring CPP = $(CC) -E $(CFLAGS) ifdef CONFIG_4xx diff -ru /usr/src/redhat/SOURCES/linux/arch/ppc/kernel/hashtable.S ./arch/ppc/kernel/hashtable.S --- /usr/src/redhat/SOURCES/linux/arch/ppc/kernel/hashtable.S Mon Jun 19 20:59:36 2000 +++ ./arch/ppc/kernel/hashtable.S Fri Apr 6 15:05:24 2001 @@ -321,7 +321,7 @@ /* Search the primary PTEG for a PTE whose 1st word matches r5 */ mtctr r2 - addi r3,r4,-8 + addi r3,r4,-4 /* Changed from -8 to -4 by me !!!! */ 1: lwzu r0,8(r3) /* get next PTE */ cmp 0,r0,r5 bdnzf 2,1b /* loop while ctr != 0 && !cr0.eq */ @@ -333,7 +333,7 @@ hash_page_patch_B: xoris r3,r4,Hash_msk>>16 /* compute secondary hash */ xori r3,r3,0xffc0 - addi r3,r3,-8 + addi r3,r3,-4 /* Changed from -8 to -4 by me !!!! */ mtctr r2 2: lwzu r0,8(r3) cmp 0,r0,r5 @@ -343,7 +343,8 @@ /* Search the primary PTEG for an empty slot */ 10: mtctr r2 - addi r3,r4,-8 /* search primary PTEG */ + addi r3,r4,-4 /* search primary PTEG */ + /* Changed from -8 to -4 by me !!!! */ 1: lwzu r0,8(r3) /* get next PTE */ rlwinm. r0,r0,0,0,0 /* only want to check valid bit */ bdnzf 2,1b /* loop while ctr != 0 && !cr0.eq */ @@ -355,7 +356,7 @@ hash_page_patch_C: xoris r3,r4,Hash_msk>>16 /* compute secondary hash */ xori r3,r3,0xffc0 - addi r3,r3,-8 + addi r3,r3,-4 /* Changed from -8 to -4 by me !!!! */ mtctr r2 2: lwzu r0,8(r3) @@ -380,6 +381,7 @@ andi. r2,r2,0x38 stw r2,next_slot@l(r3) add r3,r4,r2 + addi r3,r3,4 /* Add 4 to realign data, by me !!!! */ 11: /* update counter of evicted pages */ lis r2,htab_evicts@ha @@ -393,7 +395,7 @@ found_empty: stw r5,0(r3) found_slot: - stw r6,4(r3) + stw r6,-4(r3) /* Changed to -4 to preserve LE by me !!!! */ sync #else /* CONFIG_SMP */ @@ -543,7 +545,7 @@ lwz r6,Hash_size@l(r6) /* size in bytes */ srwi r6,r6,3 /* # PTEs */ mtctr r6 - addi r5,r5,-8 + addi r5,r5,-4 /* Changed from -8 to -4 by me !!!! */ li r0,0 1: lwzu r6,8(r5) /* get next tag word */ cmplw 0,r6,r3 @@ -642,7 +644,7 @@ add r6,r6,r7 /* address of primary PTEG */ li r8,8 mtctr r8 - addi r7,r6,-8 + addi r7,r6,-4 /* Changed from -8 to -4 by me !!!! */ 1: lwzu r0,8(r7) /* get next PTE */ cmpw 0,r0,r3 /* see if tag matches */ bdnzf 2,1b /* while --ctr != 0 && !cr0.eq */ @@ -650,7 +652,7 @@ ori r3,r3,0x40 /* set H (alt. hash) bit */ xor r6,r6,r5 /* address of secondary PTEG */ mtctr r8 - addi r7,r6,-8 + addi r7,r6,-4 /* Changed from -8 to -4 by me !!!! */ 2: lwzu r0,8(r7) /* get next PTE */ cmpw 0,r0,r3 /* see if tag matches */ bdnzf 2,2b /* while --ctr != 0 && !cr0.eq */ diff -ru /usr/src/redhat/SOURCES/linux/arch/ppc/kernel/head.S ./arch/ppc/kernel/head.S --- /usr/src/redhat/SOURCES/linux/arch/ppc/kernel/head.S Fri Apr 6 13:56:40 2001 +++ ./arch/ppc/kernel/head.S Mon Apr 23 09:10:11 2001 @@ -292,11 +299,14 @@ label: \ EXCEPTION_PROLOG; \ addi r3,r1,STACK_FRAME_OVERHEAD; \ - li r20,MSR_KERNEL; \ + lis r20,MSR_KERNEL@ha; \ + addi r20,r20,MSR_KERNEL@l; \ bl transfer_to_handler; \ .long hdlr; \ .long ret_from_except + /* Loading of MSR_KERNEL changed by me !!!! */ + /* System reset */ #ifdef CONFIG_SMP /* MVME/MTX and gemini start the secondary here */ #ifdef CONFIG_GEMINI @@ -333,7 +343,9 @@ mfspr r4,DAR stw r4,_DAR(r21) addi r3,r1,STACK_FRAME_OVERHEAD - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL*/ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */ bl transfer_to_handler .long do_page_fault @@ -347,7 +359,9 @@ mfspr r4,DAR stw r4,_DAR(r21) addi r3,r1,STACK_FRAME_OVERHEAD - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!!*/ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */ bl transfer_to_handler .long UnknownException @@ -372,7 +386,9 @@ 1: addi r3,r1,STACK_FRAME_OVERHEAD mr r4,r22 mr r5,r23 - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */ bl transfer_to_handler .long do_page_fault @@ -384,7 +400,9 @@ b InstructionSegment InstructionSegmentCont: addi r3,r1,STACK_FRAME_OVERHEAD - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */ bl transfer_to_handler .long UnknownException @@ -396,7 +414,9 @@ HardwareInterrupt: EXCEPTION_PROLOG; addi r3,r1,STACK_FRAME_OVERHEAD - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l #ifndef CONFIG_APUS li r4,0 bl transfer_to_handler @@ -417,7 +437,9 @@ mfspr r5,DSISR stw r5,_DSISR(r21) addi r3,r1,STACK_FRAME_OVERHEAD - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */ bl transfer_to_handler .long AlignmentException @@ -428,7 +450,9 @@ ProgramCheck: EXCEPTION_PROLOG addi r3,r1,STACK_FRAME_OVERHEAD - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */ bl transfer_to_handler .long ProgramCheckException @@ -438,8 +462,17 @@ . = 0x800 FPUnavailable: EXCEPTION_PROLOG bne load_up_fpu /* if from user, just load it up */ - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l bl transfer_to_handler /* if from kernel, take a trap */ .long KernelFP .long ret_from_except @@ -448,7 +481,9 @@ Decrementer: EXCEPTION_PROLOG addi r3,r1,STACK_FRAME_OVERHEAD - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l bl transfer_to_handler .globl timer_interrupt_intercept timer_interrupt_intercept: @@ -463,7 +498,9 @@ SystemCall: EXCEPTION_PROLOG stw r3,ORIG_GPR3(r21) - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l rlwimi r20,r23,0,16,16 /* copy EE bit from saved MSR */ bl transfer_to_handler .long DoSyscall @@ -484,7 +521,9 @@ b Trap_0f trap_0f_cont: addi r3,r1,STACK_FRAME_OVERHEAD - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l bl transfer_to_handler .long UnknownException .long ret_from_except @@ -706,8 +745,17 @@ #ifdef CONFIG_ALTIVEC AltiVecUnavailable: EXCEPTION_PROLOG bne load_up_altivec /* if from user, just load it up */ - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l bl transfer_to_handler /* if from kernel, take a trap */ .long KernelAltiVec .long ret_from_except @@ -785,7 +839,9 @@ addi r1,r1,TASK_UNION_SIZE-STACK_FRAME_OVERHEAD lis r24,StackOverflow@ha addi r24,r24,StackOverflow@l - li r20,MSR_KERNEL + /*li r20,MSR_KERNEL Replaced by me !!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l FIX_SRR1(r20,r22) mtspr SRR0,r24 mtspr SRR1,r20 @@ -1213,7 +1269,9 @@ stw r3,(_CCR+4)(r21); addi r3,r1,STACK_FRAME_OVERHEAD; - li r20,MSR_KERNEL; + /*li r20,MSR_KERNEL; Replaced by me !!!!! */ + lis r20,MSR_KERNEL@ha + addi r20,r20,MSR_KERNEL@l bl transfer_to_handler; .long do_IRQ; .long ret_from_except @@ -1288,7 +1346,9 @@ mtspr SPRG2,r3 /* 0 => r1 has kernel sp */ /* enable MMU and jump to start_secondary */ - li r4,MSR_KERNEL + /*li r4,MSR_KERNEL Replaced by me !!!! */ + lis r4,MSR_KERNEL@ha + addi r4,r4,MSR_KERNEL@l lis r3,start_secondary@h ori r3,r3,start_secondary@l mtspr SRR0,r3 @@ -1452,7 +1516,9 @@ lis r4,2f@h ori r4,r4,2f@l tophys(r4,r4) - li r3,MSR_KERNEL & ~(MSR_IR|MSR_DR) + /*li r3,MSR_KERNEL & ~(MSR_IR|MSR_DR) Replaced by me !!!! */ + lis r3,(MSR_KERNEL & ~(MSR_IR|MSR_DR))@ha + addi r3,r3,(MSR_KERNEL & ~(MSR_IR|MSR_DR))@l FIX_SRR1(r3,r5) mtspr SRR0,r4 mtspr SRR1,r3 @@ -1470,7 +1536,10 @@ bl load_up_mmu /* Now turn on the MMU for real! */ - li r4,MSR_KERNEL + /*li r4,MSR_KERNEL Replaced by me !!!! */ + lis r4,MSR_KERNEL@ha + addi r4,r4,MSR_KERNEL@l + FIX_SRR1(r4,r5) lis r3,start_kernel@h ori r3,r3,start_kernel@l diff -ru /usr/src/redhat/SOURCES/linux/arch/ppc/kernel/irq.c ./arch/ppc/kernel/irq.c --- /usr/src/redhat/SOURCES/linux/arch/ppc/kernel/irq.c Mon Jun 19 20:59:36 2000 +++ ./arch/ppc/kernel/irq.c Fri Apr 6 15:29:33 2001 @@ -349,7 +349,8 @@ else once++; - ppc_md.init_IRQ(); + if (ppc_md.init_IRQ) /* Added by me !!!! */ + ppc_md.init_IRQ(); } #ifdef CONFIG_SMP Only in /usr/src/redhat/SOURCES/linux/arch/ppc/mbxboot: vmlinux.lds Only in /usr/src/redhat/SOURCES/linux/drivers/pcmcia: Config.in.orig diff -ru /usr/src/redhat/SOURCES/linux/include/asm-ppc/bitops.h ./include/asm-ppc/bitops.h --- /usr/src/redhat/SOURCES/linux/include/asm-ppc/bitops.h Mon Jun 19 20:59:37 2000 +++ ./include/asm-ppc/bitops.h Wed Apr 11 13:50:25 2001 @@ -242,8 +242,12 @@ * test_and_{set,clear}_bit guarantee atomicity without * disabling interrupts. */ +#if 0 #define ext2_set_bit(nr, addr) test_and_set_bit((nr) ^ 0x18, addr) #define ext2_clear_bit(nr, addr) test_and_clear_bit((nr) ^ 0x18, addr) +#endif /* Replaced by me !!!! (to remove XOR) */ +#define ext2_set_bit(nr, addr) test_and_set_bit((nr), addr) +#define ext2_clear_bit(nr, addr) test_and_clear_bit((nr), addr) #else extern __inline__ int ext2_set_bit(int nr, void * addr) diff -ru /usr/src/redhat/SOURCES/linux/include/asm-ppc/byteorder.h ./include/asm-ppc/byteorder.h --- /usr/src/redhat/SOURCES/linux/include/asm-ppc/byteorder.h Mon Jun 19 20:59:37 2000 +++ ./include/asm-ppc/byteorder.h Fri Apr 6 14:34:22 2001 @@ -9,7 +9,7 @@ #ifdef __GNUC__ -extern __inline__ unsigned ld_le16(const volatile unsigned short *addr) +extern __inline__ unsigned ld_be16(const volatile unsigned short *addr) { unsigned val; @@ -17,12 +17,12 @@ return val; } -extern __inline__ void st_le16(volatile unsigned short *addr, const unsigned val) +extern __inline__ void st_be16(volatile unsigned short *addr, const unsigned val) { __asm__ __volatile__ ("sthbrx %1,0,%2" : "=m" (*addr) : "r" (val), "r" (addr)); } -extern __inline__ unsigned ld_le32(const volatile unsigned *addr) +extern __inline__ unsigned ld_be32(const volatile unsigned *addr) { unsigned val; @@ -30,7 +30,7 @@ return val; } -extern __inline__ void st_le32(volatile unsigned *addr, const unsigned val) +extern __inline__ void st_be32(volatile unsigned *addr, const unsigned val) { __asm__ __volatile__ ("stwbrx %1,0,%2" : "=m" (*addr) : "r" (val), "r" (addr)); } @@ -71,18 +71,21 @@ #endif /* The same, but returns converted value from the location pointer by addr. */ -#define __arch__swab16p(addr) ld_le16(addr) -#define __arch__swab32p(addr) ld_le32(addr) +#define __arch__swab16p(addr) ld_be16(addr) +#define __arch__swab32p(addr) ld_be32(addr) /* The same, but do the conversion in situ, ie. put the value back to addr. */ -#define __arch__swab16s(addr) st_le16(addr,*addr) -#define __arch__swab32s(addr) st_le32(addr,*addr) +#define __arch__swab16s(addr) st_be16(addr,*addr) +#define __arch__swab32s(addr) st_be32(addr,*addr) #endif /* __GNUC__ */ +/* All "le" changed to "be", and vice-versa, by me !!!! */ + #if defined(__GNUC__) && !defined(__STRICT_ANSI__) #define __BYTEORDER_HAS_U64__ #endif -#include +#include +/* Changed from big_endian to little_endian by me !!!! */ #endif /* _PPC_BYTEORDER_H */ diff -ru /usr/src/redhat/SOURCES/linux/include/asm-ppc/io.h ./include/asm-ppc/io.h --- /usr/src/redhat/SOURCES/linux/include/asm-ppc/io.h Mon Jun 19 20:59:37 2000 +++ ./include/asm-ppc/io.h Wed Apr 11 13:50:26 2001 @@ -231,7 +231,7 @@ __asm__ __volatile__("stb%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val)); } -extern inline int in_le16(volatile unsigned short *addr) +extern inline int in_be16(volatile unsigned short *addr) { int ret; @@ -240,7 +240,7 @@ return ret; } -extern inline int in_be16(volatile unsigned short *addr) +extern inline int in_le16(volatile unsigned short *addr) { int ret; @@ -248,18 +248,18 @@ return ret; } -extern inline void out_le16(volatile unsigned short *addr, int val) +extern inline void out_be16(volatile unsigned short *addr, int val) { __asm__ __volatile__("sthbrx %1,0,%2; eieio" : "=m" (*addr) : "r" (val), "r" (addr)); } -extern inline void out_be16(volatile unsigned short *addr, int val) +extern inline void out_le16(volatile unsigned short *addr, int val) { __asm__ __volatile__("sth%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val)); } -extern inline unsigned in_le32(volatile unsigned *addr) +extern inline unsigned in_be32(volatile unsigned *addr) { unsigned ret; @@ -268,7 +268,7 @@ return ret; } -extern inline unsigned in_be32(volatile unsigned *addr) +extern inline unsigned in_le32(volatile unsigned *addr) { unsigned ret; @@ -276,13 +276,13 @@ return ret; } -extern inline void out_le32(volatile unsigned *addr, int val) +extern inline void out_be32(volatile unsigned *addr, int val) { __asm__ __volatile__("stwbrx %1,0,%2; eieio" : "=m" (*addr) : "r" (val), "r" (addr)); } -extern inline void out_be32(volatile unsigned *addr, int val) +extern inline void out_le32(volatile unsigned *addr, int val) { __asm__ __volatile__("stw%U0%X0 %1,%0; eieio" : "=m" (*addr) : "r" (val)); } diff -ru /usr/src/redhat/SOURCES/linux/include/asm-ppc/processor.h ./include/asm-ppc/processor.h --- /usr/src/redhat/SOURCES/linux/include/asm-ppc/processor.h Fri Apr 6 13:56:37 2001 +++ ./include/asm-ppc/processor.h Wed Apr 11 13:50:25 2001 @@ -45,7 +45,8 @@ #ifdef CONFIG_APUS_FAST_EXCEPT #define MSR_ MSR_ME|MSR_IP|MSR_RI #else -#define MSR_ MSR_ME|MSR_RI +#define MSR_ MSR_ME|MSR_RI|MSR_LE|MSR_ILE +/* MSD_LE and MSR_ILE added by me !!!! */ #endif #define MSR_KERNEL MSR_|MSR_IR|MSR_DR #define MSR_USER MSR_KERNEL|MSR_PR|MSR_EE