Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc: Remove support for PowerPC 601

PowerPC 601 has been retired.

Remove all associated specific code.

CPU_FTRS_PPC601 has CPU_FTR_COHERENT_ICACHE and CPU_FTR_COMMON.

CPU_FTR_COMMON is already present via other CPU_FTRS.
None of the remaining CPU selects CPU_FTR_COHERENT_ICACHE.

So CPU_FTRS_PPC601 can be removed from the possible features,
hence can be removed completely.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/60b725d55e21beec3335175c20b77903ff98284f.1601362098.git.christophe.leroy@csgroup.eu

authored by

Christophe Leroy and committed by
Michael Ellerman
8b14e1df f0ed73f3

+17 -206
+1 -14
arch/powerpc/boot/util.S
··· 18 18 19 19 .text 20 20 21 - /* udelay (on non-601 processors) needs to know the period of the 21 + /* udelay needs to know the period of the 22 22 * timebase in nanoseconds. This used to be hardcoded to be 60ns 23 23 * (period of 66MHz/4). Now a variable is used that is initialized to 24 24 * 60 for backward compatibility, but it can be overridden as necessary ··· 37 37 */ 38 38 .globl udelay 39 39 udelay: 40 - mfspr r4,SPRN_PVR 41 - srwi r4,r4,16 42 - cmpwi 0,r4,1 /* 601 ? */ 43 - bne .Ludelay_not_601 44 - 00: li r0,86 /* Instructions / microsecond? */ 45 - mtctr r0 46 - 10: addi r0,r0,0 /* NOP */ 47 - bdnz 10b 48 - subic. r3,r3,1 49 - bne 00b 50 - blr 51 - 52 - .Ludelay_not_601: 53 40 mulli r4,r3,1000 /* nanoseconds */ 54 41 /* Change r4 to be the number of ticks using: 55 42 * (nanoseconds + (timebase_period_ns - 1 )) / timebase_period_ns
+3 -9
arch/powerpc/include/asm/cputable.h
··· 295 295 #define CPU_FTR_MAYBE_CAN_NAP 0 296 296 #endif 297 297 298 - #define CPU_FTRS_PPC601 (CPU_FTR_COMMON | \ 299 - CPU_FTR_COHERENT_ICACHE) 300 298 #define CPU_FTRS_603 (CPU_FTR_COMMON | CPU_FTR_MAYBE_CAN_DOZE | \ 301 299 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_PPC_LE | CPU_FTR_NOEXECUTE) 302 300 #define CPU_FTRS_604 (CPU_FTR_COMMON | CPU_FTR_PPC_LE) ··· 510 512 #else 511 513 enum { 512 514 CPU_FTRS_POSSIBLE = 513 - #ifdef CONFIG_PPC_BOOK3S_601 514 - CPU_FTRS_PPC601 | 515 - #elif defined(CONFIG_PPC_BOOK3S_32) 516 - CPU_FTRS_PPC601 | CPU_FTRS_603 | CPU_FTRS_604 | CPU_FTRS_740_NOTAU | 515 + #ifdef CONFIG_PPC_BOOK3S_32 516 + CPU_FTRS_603 | CPU_FTRS_604 | CPU_FTRS_740_NOTAU | 517 517 CPU_FTRS_740 | CPU_FTRS_750 | CPU_FTRS_750FX1 | 518 518 CPU_FTRS_750FX2 | CPU_FTRS_750FX | CPU_FTRS_750GX | 519 519 CPU_FTRS_7400_NOTAU | CPU_FTRS_7400 | CPU_FTRS_7450_20 | ··· 586 590 #else 587 591 enum { 588 592 CPU_FTRS_ALWAYS = 589 - #ifdef CONFIG_PPC_BOOK3S_601 590 - CPU_FTRS_PPC601 & 591 - #elif defined(CONFIG_PPC_BOOK3S_32) 593 + #ifdef CONFIG_PPC_BOOK3S_32 592 594 CPU_FTRS_603 & CPU_FTRS_604 & CPU_FTRS_740_NOTAU & 593 595 CPU_FTRS_740 & CPU_FTRS_750 & CPU_FTRS_750FX1 & 594 596 CPU_FTRS_750FX2 & CPU_FTRS_750FX & CPU_FTRS_750GX &
+1 -2
arch/powerpc/include/asm/ppc_asm.h
··· 401 401 #define MFTBU(dest) mfspr dest, SPRN_TBRU 402 402 #endif 403 403 404 - /* tlbsync is not implemented on 601 */ 405 - #if !defined(CONFIG_SMP) || defined(CONFIG_PPC_BOOK3S_601) 404 + #ifndef CONFIG_SMP 406 405 #define TLBSYNC 407 406 #else 408 407 #define TLBSYNC tlbsync; sync
-4
arch/powerpc/include/asm/ptrace.h
··· 243 243 } 244 244 245 245 #define arch_has_single_step() (1) 246 - #ifndef CONFIG_PPC_BOOK3S_601 247 246 #define arch_has_block_step() (true) 248 - #else 249 - #define arch_has_block_step() (false) 250 - #endif 251 247 #define ARCH_HAS_USER_SINGLE_STEP_REPORT 252 248 253 249 /*
+1 -1
arch/powerpc/include/asm/time.h
··· 39 39 }; 40 40 41 41 /* Accessor functions for the timebase (RTC on 601) registers. */ 42 - #define __USE_RTC() (IS_ENABLED(CONFIG_PPC_BOOK3S_601)) 42 + #define __USE_RTC() (0) 43 43 44 44 #ifdef CONFIG_PPC64 45 45
-3
arch/powerpc/include/asm/timex.h
··· 17 17 18 18 static inline cycles_t get_cycles(void) 19 19 { 20 - if (IS_ENABLED(CONFIG_PPC_BOOK3S_601)) 21 - return 0; 22 - 23 20 return mftb(); 24 21 } 25 22
+1 -7
arch/powerpc/kernel/btext.c
··· 95 95 boot_text_mapped = 0; 96 96 return; 97 97 } 98 - if (PVR_VER(mfspr(SPRN_PVR)) != 1) { 98 + { 99 99 /* 603, 604, G3, G4, ... */ 100 100 lowbits = addr & ~0xFF000000UL; 101 101 addr &= 0xFF000000UL; 102 102 disp_BAT[0] = vaddr | (BL_16M<<2) | 2; 103 103 disp_BAT[1] = addr | (_PAGE_NO_CACHE | _PAGE_GUARDED | BPP_RW); 104 - } else { 105 - /* 601 */ 106 - lowbits = addr & ~0xFF800000UL; 107 - addr &= 0xFF800000UL; 108 - disp_BAT[0] = vaddr | (_PAGE_NO_CACHE | PP_RWXX) | 4; 109 - disp_BAT[1] = addr | BL_8M | 0x40; 110 104 } 111 105 logicalDisplayBase = (void *) (vaddr + lowbits); 112 106 }
-18
arch/powerpc/kernel/entry_32.S
··· 811 811 1: lis r3,exc_exit_restart_end@ha 812 812 addi r3,r3,exc_exit_restart_end@l 813 813 cmplw r12,r3 814 - #ifdef CONFIG_PPC_BOOK3S_601 815 - bge 2b 816 - #else 817 814 bge 3f 818 - #endif 819 815 lis r4,exc_exit_restart@ha 820 816 addi r4,r4,exc_exit_restart@l 821 817 cmplw r12,r4 822 - #ifdef CONFIG_PPC_BOOK3S_601 823 - blt 2b 824 - #else 825 818 blt 3f 826 - #endif 827 819 lis r3,fee_restarts@ha 828 820 tophys(r3,r3) 829 821 lwz r5,fee_restarts@l(r3) ··· 832 840 833 841 /* aargh, a nonrecoverable interrupt, panic */ 834 842 /* aargh, we don't know which trap this is */ 835 - /* but the 601 doesn't implement the RI bit, so assume it's OK */ 836 843 3: 837 844 li r10,-1 838 845 stw r10,_TRAP(r11) ··· 1293 1302 lis r10,exc_exit_restart_end@ha 1294 1303 addi r10,r10,exc_exit_restart_end@l 1295 1304 cmplw r12,r10 1296 - #ifdef CONFIG_PPC_BOOK3S_601 1297 - bgelr 1298 - #else 1299 1305 bge 3f 1300 - #endif 1301 1306 lis r11,exc_exit_restart@ha 1302 1307 addi r11,r11,exc_exit_restart@l 1303 1308 cmplw r12,r11 1304 - #ifdef CONFIG_PPC_BOOK3S_601 1305 - bltlr 1306 - #else 1307 1309 blt 3f 1308 - #endif 1309 1310 lis r10,ee_restarts@ha 1310 1311 lwz r12,ee_restarts@l(r10) 1311 1312 addi r12,r12,1 ··· 1305 1322 mr r12,r11 /* restart at exc_exit_restart */ 1306 1323 blr 1307 1324 3: /* OK, we can't recover, kill this process */ 1308 - /* but the 601 doesn't implement the RI bit, so assume it's OK */ 1309 1325 lwz r3,_TRAP(r1) 1310 1326 andi. r0,r3,1 1311 1327 beq 5f
+3 -41
arch/powerpc/kernel/head_32.S
··· 34 34 35 35 #include "head_32.h" 36 36 37 - /* 601 only have IBAT */ 38 - #ifdef CONFIG_PPC_BOOK3S_601 39 - #define LOAD_BAT(n, reg, RA, RB) \ 40 - li RA,0; \ 41 - mtspr SPRN_IBAT##n##U,RA; \ 42 - lwz RA,(n*16)+0(reg); \ 43 - lwz RB,(n*16)+4(reg); \ 44 - mtspr SPRN_IBAT##n##U,RA; \ 45 - mtspr SPRN_IBAT##n##L,RB 46 - #else 47 37 #define LOAD_BAT(n, reg, RA, RB) \ 48 38 /* see the comment for clear_bats() -- Cort */ \ 49 39 li RA,0; \ ··· 47 57 lwz RB,(n*16)+12(reg); \ 48 58 mtspr SPRN_DBAT##n##U,RA; \ 49 59 mtspr SPRN_DBAT##n##L,RB 50 - #endif 51 60 52 61 __HEAD 53 62 .stabs "arch/powerpc/kernel/",N_SO,0,0,0f ··· 421 432 SystemCall: 422 433 SYSCALL_ENTRY 0xc00 423 434 424 - /* Single step - not used on 601 */ 425 435 EXCEPTION(0xd00, SingleStep, single_step_exception, EXC_XFER_STD) 426 436 EXCEPTION(0xe00, Trap_0e, unknown_exception, EXC_XFER_STD) 427 437 ··· 962 974 lwz r6,_SDR1@l(r6) 963 975 mtspr SPRN_SDR1,r6 964 976 965 - /* Load the BAT registers with the values set up by MMU_init. 966 - MMU_init takes care of whether we're on a 601 or not. */ 977 + /* Load the BAT registers with the values set up by MMU_init. */ 967 978 lis r3,BATS@ha 968 979 addi r3,r3,BATS@l 969 980 tophys(r3,r3) ··· 1139 1152 clear_bats: 1140 1153 li r10,0 1141 1154 1142 - #ifndef CONFIG_PPC_BOOK3S_601 1143 1155 mtspr SPRN_DBAT0U,r10 1144 1156 mtspr SPRN_DBAT0L,r10 1145 1157 mtspr SPRN_DBAT1U,r10 ··· 1147 1161 mtspr SPRN_DBAT2L,r10 1148 1162 mtspr SPRN_DBAT3U,r10 1149 1163 mtspr SPRN_DBAT3L,r10 1150 - #endif 1151 1164 mtspr SPRN_IBAT0U,r10 1152 1165 mtspr SPRN_IBAT0L,r10 1153 1166 mtspr SPRN_IBAT1U,r10 ··· 1237 1252 sync 1238 1253 RFI 1239 1254 1240 - /* 1241 - * On 601, we use 3 BATs to map up to 24M of RAM at _PAGE_OFFSET 1242 - * (we keep one for debugging) and on others, we use one 256M BAT. 1243 - */ 1255 + /* We use one BAT to map up to 256M of RAM at _PAGE_OFFSET */ 1244 1256 initial_bats: 1245 1257 lis r11,PAGE_OFFSET@h 1246 - #ifdef CONFIG_PPC_BOOK3S_601 1247 - ori r11,r11,4 /* set up BAT registers for 601 */ 1248 - li r8,0x7f /* valid, block length = 8MB */ 1249 - mtspr SPRN_IBAT0U,r11 /* N.B. 601 has valid bit in */ 1250 - mtspr SPRN_IBAT0L,r8 /* lower BAT register */ 1251 - addis r11,r11,0x800000@h 1252 - addis r8,r8,0x800000@h 1253 - mtspr SPRN_IBAT1U,r11 1254 - mtspr SPRN_IBAT1L,r8 1255 - addis r11,r11,0x800000@h 1256 - addis r8,r8,0x800000@h 1257 - mtspr SPRN_IBAT2U,r11 1258 - mtspr SPRN_IBAT2L,r8 1259 - #else 1260 1258 tophys(r8,r11) 1261 1259 #ifdef CONFIG_SMP 1262 1260 ori r8,r8,0x12 /* R/W access, M=1 */ ··· 1248 1280 #endif /* CONFIG_SMP */ 1249 1281 ori r11,r11,BL_256M<<2|0x2 /* set up BAT registers for 604 */ 1250 1282 1251 - mtspr SPRN_DBAT0L,r8 /* N.B. 6xx (not 601) have valid */ 1283 + mtspr SPRN_DBAT0L,r8 /* N.B. 6xx have valid */ 1252 1284 mtspr SPRN_DBAT0U,r11 /* bit in upper BAT register */ 1253 1285 mtspr SPRN_IBAT0L,r8 1254 1286 mtspr SPRN_IBAT0U,r11 1255 - #endif 1256 1287 isync 1257 1288 blr 1258 1289 ··· 1269 1302 beqlr 1270 1303 lwz r11,0(r8) 1271 1304 lwz r8,4(r8) 1272 - #ifndef CONFIG_PPC_BOOK3S_601 1273 1305 mtspr SPRN_DBAT3L,r8 1274 1306 mtspr SPRN_DBAT3U,r11 1275 - #else 1276 - mtspr SPRN_IBAT3L,r8 1277 - mtspr SPRN_IBAT3U,r11 1278 - #endif 1279 1307 blr 1280 1308 #endif /* CONFIG_BOOTX_TEXT */ 1281 1309
+1 -1
arch/powerpc/kernel/setup_32.c
··· 223 223 dcache_bsize = cur_cpu_spec->dcache_bsize; 224 224 icache_bsize = cur_cpu_spec->icache_bsize; 225 225 ucache_bsize = 0; 226 - if (IS_ENABLED(CONFIG_PPC_BOOK3S_601) || IS_ENABLED(CONFIG_E200)) 226 + if (IS_ENABLED(CONFIG_E200)) 227 227 ucache_bsize = icache_bsize = dcache_bsize; 228 228 }
-4
arch/powerpc/kernel/traps.c
··· 529 529 * Check if the NIP corresponds to the address of a sync 530 530 * instruction for which there is an entry in the exception 531 531 * table. 532 - * Note that the 601 only takes a machine check on TEA 533 - * (transfer error ack) signal assertion, and does not 534 - * set any of the top 16 bits of SRR1. 535 532 * -- paulus. 536 533 */ 537 534 static inline int check_io_access(struct pt_regs *regs) ··· 793 796 case 0x80000: 794 797 pr_cont("Machine check signal\n"); 795 798 break; 796 - case 0: /* for 601 */ 797 799 case 0x40000: 798 800 case 0x140000: /* 7450 MSS error and TEA */ 799 801 pr_cont("Transfer error ack signal\n");
-2
arch/powerpc/kernel/vdso32/datapage.S
··· 47 47 * 48 48 * returns the timebase frequency in HZ 49 49 */ 50 - #ifndef CONFIG_PPC_BOOK3S_601 51 50 V_FUNCTION_BEGIN(__kernel_get_tbfreq) 52 51 .cfi_startproc 53 52 mflr r12 ··· 59 60 blr 60 61 .cfi_endproc 61 62 V_FUNCTION_END(__kernel_get_tbfreq) 62 - #endif
-2
arch/powerpc/kernel/vdso32/vdso32.lds.S
··· 144 144 __kernel_datapage_offset; 145 145 146 146 __kernel_get_syscall_map; 147 - #ifndef CONFIG_PPC_BOOK3S_601 148 147 __kernel_gettimeofday; 149 148 __kernel_clock_gettime; 150 149 __kernel_clock_getres; 151 150 __kernel_time; 152 151 __kernel_get_tbfreq; 153 - #endif 154 152 __kernel_sync_dicache; 155 153 __kernel_sync_dicache_p5; 156 154 __kernel_sigtramp32;
+5 -34
arch/powerpc/mm/book3s32/mmu.c
··· 74 74 { 75 75 int b; 76 76 77 - if (IS_ENABLED(CONFIG_PPC_BOOK3S_601)) { 78 - for (b = 0; b < 4; b++) { 79 - struct ppc_bat *bat = BATS[b]; 80 - 81 - if (!(bat[0].batl & 0x40)) 82 - return b; 83 - } 84 - } else { 77 + { 85 78 int n = mmu_has_feature(MMU_FTR_USE_HIGH_BATS) ? 8 : 4; 86 79 87 80 for (b = 0; b < n; b++) { ··· 90 97 /* 91 98 * This function calculates the size of the larger block usable to map the 92 99 * beginning of an area based on the start address and size of that area: 93 - * - max block size is 8M on 601 and 256 on other 6xx. 100 + * - max block size is 256 on 6xx. 94 101 * - base address must be aligned to the block size. So the maximum block size 95 102 * is identified by the lowest bit set to 1 in the base address (for instance 96 103 * if base is 0x16000000, max size is 0x02000000). ··· 99 106 */ 100 107 static unsigned int block_size(unsigned long base, unsigned long top) 101 108 { 102 - unsigned int max_size = IS_ENABLED(CONFIG_PPC_BOOK3S_601) ? SZ_8M : SZ_256M; 109 + unsigned int max_size = SZ_256M; 103 110 unsigned int base_shift = (ffs(base) - 1) & 31; 104 111 unsigned int block_shift = (fls(top - base) - 1) & 31; 105 112 ··· 110 117 * Set up one of the IBAT (block address translation) register pairs. 111 118 * The parameters are not checked; in particular size must be a power 112 119 * of 2 between 128k and 256M. 113 - * Only for 603+ ... 114 120 */ 115 121 static void setibat(int index, unsigned long virt, phys_addr_t phys, 116 122 unsigned int size, pgprot_t prot) ··· 206 214 unsigned long border = (unsigned long)__init_begin - PAGE_OFFSET; 207 215 unsigned long size; 208 216 209 - if (IS_ENABLED(CONFIG_PPC_BOOK3S_601)) 210 - return; 211 - 212 217 for (i = 0; i < nb - 1 && base < top && top - base > (128 << 10);) { 213 218 size = block_size(base, top); 214 219 setibat(i++, PAGE_OFFSET + base, base, size, PAGE_KERNEL_TEXT); ··· 241 252 { 242 253 int nb = mmu_has_feature(MMU_FTR_USE_HIGH_BATS) ? 8 : 4; 243 254 int i; 244 - 245 - if (IS_ENABLED(CONFIG_PPC_BOOK3S_601)) 246 - return; 247 255 248 256 for (i = 0; i < nb; i++) { 249 257 struct ppc_bat *bat = BATS[i]; ··· 280 294 flags &= ~_PAGE_COHERENT; 281 295 282 296 bl = (size >> 17) - 1; 283 - if (!IS_ENABLED(CONFIG_PPC_BOOK3S_601)) { 284 - /* 603, 604, etc. */ 297 + { 285 298 /* Do DBAT first */ 286 299 wimgxpp = flags & (_PAGE_WRITETHRU | _PAGE_NO_CACHE 287 300 | _PAGE_COHERENT | _PAGE_GUARDED); ··· 297 312 bat[0] = bat[1]; 298 313 else 299 314 bat[0].batu = bat[0].batl = 0; 300 - } else { 301 - /* 601 cpu */ 302 - if (bl > BL_8M) 303 - bl = BL_8M; 304 - wimgxpp = flags & (_PAGE_WRITETHRU | _PAGE_NO_CACHE 305 - | _PAGE_COHERENT); 306 - wimgxpp |= (flags & _PAGE_RW)? 307 - ((flags & _PAGE_USER)? PP_RWRW: PP_RWXX): PP_RXRX; 308 - bat->batu = virt | wimgxpp | 4; /* Ks=0, Ku=1 */ 309 - bat->batl = phys | bl | 0x40; /* V=1 */ 310 315 } 311 316 312 317 bat_addrs[index].start = virt; ··· 449 474 */ 450 475 BUG_ON(first_memblock_base != 0); 451 476 452 - /* 601 can only access 16MB at the moment */ 453 - if (IS_ENABLED(CONFIG_PPC_BOOK3S_601)) 454 - memblock_set_current_limit(min_t(u64, first_memblock_size, 0x01000000)); 455 - else /* Anything else has 256M mapped */ 456 - memblock_set_current_limit(min_t(u64, first_memblock_size, 0x10000000)); 477 + memblock_set_current_limit(min_t(u64, first_memblock_size, SZ_256M)); 457 478 } 458 479 459 480 void __init print_system_hash_info(void)
-59
arch/powerpc/mm/ptdump/bats.c
··· 12 12 13 13 #include "ptdump.h" 14 14 15 - static char *pp_601(int k, int pp) 16 - { 17 - if (pp == 0) 18 - return k ? " " : "rwx"; 19 - if (pp == 1) 20 - return k ? "r x" : "rwx"; 21 - if (pp == 2) 22 - return "rwx"; 23 - return "r x"; 24 - } 25 - 26 - static void bat_show_601(struct seq_file *m, int idx, u32 lower, u32 upper) 27 - { 28 - u32 blpi = upper & 0xfffe0000; 29 - u32 k = (upper >> 2) & 3; 30 - u32 pp = upper & 3; 31 - phys_addr_t pbn = PHYS_BAT_ADDR(lower); 32 - u32 bsm = lower & 0x3ff; 33 - u32 size = (bsm + 1) << 17; 34 - 35 - seq_printf(m, "%d: ", idx); 36 - if (!(lower & 0x40)) { 37 - seq_puts(m, " -\n"); 38 - return; 39 - } 40 - 41 - seq_printf(m, "0x%08x-0x%08x ", blpi, blpi + size - 1); 42 - #ifdef CONFIG_PHYS_64BIT 43 - seq_printf(m, "0x%016llx ", pbn); 44 - #else 45 - seq_printf(m, "0x%08x ", pbn); 46 - #endif 47 - pt_dump_size(m, size); 48 - 49 - seq_printf(m, "Kernel %s User %s", pp_601(k & 2, pp), pp_601(k & 1, pp)); 50 - 51 - seq_puts(m, lower & _PAGE_WRITETHRU ? "w " : " "); 52 - seq_puts(m, lower & _PAGE_NO_CACHE ? "i " : " "); 53 - seq_puts(m, lower & _PAGE_COHERENT ? "m " : " "); 54 - seq_puts(m, "\n"); 55 - } 56 - 57 - #define BAT_SHOW_601(_m, _n, _l, _u) bat_show_601(_m, _n, mfspr(_l), mfspr(_u)) 58 - 59 - static int bats_show_601(struct seq_file *m, void *v) 60 - { 61 - seq_puts(m, "---[ Block Address Translation ]---\n"); 62 - 63 - BAT_SHOW_601(m, 0, SPRN_IBAT0L, SPRN_IBAT0U); 64 - BAT_SHOW_601(m, 1, SPRN_IBAT1L, SPRN_IBAT1U); 65 - BAT_SHOW_601(m, 2, SPRN_IBAT2L, SPRN_IBAT2U); 66 - BAT_SHOW_601(m, 3, SPRN_IBAT3L, SPRN_IBAT3U); 67 - 68 - return 0; 69 - } 70 - 71 15 static void bat_show_603(struct seq_file *m, int idx, u32 lower, u32 upper, bool is_d) 72 16 { 73 17 u32 bepi = upper & 0xfffe0000; ··· 90 146 91 147 static int bats_open(struct inode *inode, struct file *file) 92 148 { 93 - if (IS_ENABLED(CONFIG_PPC_BOOK3S_601)) 94 - return single_open(file, bats_show_601, NULL); 95 - 96 149 return single_open(file, bats_show_603, NULL); 97 150 } 98 151
+1 -1
arch/powerpc/platforms/powermac/setup.c
··· 284 284 /* 604, G3, G4 etc. */ 285 285 loops_per_jiffy = *fp / HZ; 286 286 else 287 - /* 601, 603, etc. */ 287 + /* 603, etc. */ 288 288 loops_per_jiffy = *fp / (2 * HZ); 289 289 of_node_put(cpu); 290 290 break;
-4
arch/powerpc/platforms/powermac/smp.c
··· 270 270 int i, ncpus; 271 271 struct device_node *dn; 272 272 273 - /* We don't do SMP on the PPC601 -- paulus */ 274 - if (PVR_VER(mfspr(SPRN_PVR)) == 1) 275 - return; 276 - 277 273 /* 278 274 * The powersurge cpu board can be used in the generation 279 275 * of powermacs that have a socket for an upgradeable cpu card,