From: Albert H. <he...@us...> - 2009-12-09 18:40:18
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/kernel In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv21229/arch/powerpc/kernel Modified Files: cputable.c dma.c head_32.S Log Message: Forward to v2.6.32. Index: cputable.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/cputable.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** cputable.c 9 Dec 2009 18:18:06 -0000 1.14 --- cputable.c 9 Dec 2009 18:40:09 -0000 1.15 *************** *** 90,98 **** PPC_FEATURE_TRUE_LE | \ PPC_FEATURE_HAS_ALTIVEC_COMP) #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ PPC_FEATURE_BOOKE) static struct cpu_spec __initdata cpu_specs[] = { ! #ifdef CONFIG_PPC64 { /* Power3 */ .pvr_mask = 0xffff0000, --- 90,102 ---- PPC_FEATURE_TRUE_LE | \ PPC_FEATURE_HAS_ALTIVEC_COMP) + #ifdef CONFIG_PPC_BOOK3E_64 + #define COMMON_USER_BOOKE (COMMON_USER_PPC64 | PPC_FEATURE_BOOKE) + #else #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ PPC_FEATURE_BOOKE) + #endif static struct cpu_spec __initdata cpu_specs[] = { ! #ifdef CONFIG_PPC_BOOK3S_64 { /* Power3 */ .pvr_mask = 0xffff0000, *************** *** 509,513 **** .platform = "power4", } ! #endif /* CONFIG_PPC64 */ #ifdef CONFIG_PPC32 #if CLASSIC_PPC --- 513,518 ---- .platform = "power4", } ! #endif /* CONFIG_PPC_BOOK3S_64 */ ! #ifdef CONFIG_PPC32 #if CLASSIC_PPC *************** *** 707,710 **** --- 712,717 ---- .machine_check = machine_check_generic, .platform = "ppc750", + .oprofile_cpu_type = "ppc/750", + .oprofile_type = PPC_OPROFILE_G4, }, { /* 745/755 */ *************** *** 1631,1635 **** }, { /* 460EX */ ! .pvr_mask = 0xffff0002, .pvr_value = 0x13020002, .cpu_name = "460EX", --- 1638,1642 ---- }, { /* 460EX */ ! .pvr_mask = 0xffff0006, .pvr_value = 0x13020002, .cpu_name = "460EX", *************** *** 1643,1648 **** .platform = "ppc440", }, { /* 460GT */ ! .pvr_mask = 0xffff0002, .pvr_value = 0x13020000, .cpu_name = "460GT", --- 1650,1668 ---- .platform = "ppc440", }, + { /* 460EX Rev B */ + .pvr_mask = 0xffff0007, + .pvr_value = 0x13020004, + .cpu_name = "460EX Rev. B", + .cpu_features = CPU_FTRS_440x6, + .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, + .mmu_features = MMU_FTR_TYPE_44x, + .icache_bsize = 32, + .dcache_bsize = 32, + .cpu_setup = __setup_cpu_460ex, + .machine_check = machine_check_440A, + .platform = "ppc440", + }, { /* 460GT */ ! .pvr_mask = 0xffff0006, .pvr_value = 0x13020000, .cpu_name = "460GT", *************** *** 1656,1659 **** --- 1676,1692 ---- .platform = "ppc440", }, + { /* 460GT Rev B */ + .pvr_mask = 0xffff0007, + .pvr_value = 0x13020005, + .cpu_name = "460GT Rev. B", + .cpu_features = CPU_FTRS_440x6, + .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, + .mmu_features = MMU_FTR_TYPE_44x, + .icache_bsize = 32, + .dcache_bsize = 32, + .cpu_setup = __setup_cpu_460gt, + .machine_check = machine_check_440A, + .platform = "ppc440", + }, { /* 460SX */ .pvr_mask = 0xffffff00, *************** *** 1798,1801 **** --- 1831,1857 ---- #endif /* CONFIG_E500 */ #endif /* CONFIG_PPC32 */ + + #ifdef CONFIG_PPC_BOOK3E_64 + { /* This is a default entry to get going, to be replaced by + * a real one at some stage + */ + #define CPU_FTRS_BASE_BOOK3E (CPU_FTR_USE_TB | \ + CPU_FTR_PPCAS_ARCH_V2 | CPU_FTR_SMT | \ + CPU_FTR_NODSISRALIGN | CPU_FTR_NOEXECUTE) + .pvr_mask = 0x00000000, + .pvr_value = 0x00000000, + .cpu_name = "Book3E", + .cpu_features = CPU_FTRS_BASE_BOOK3E, + .cpu_user_features = COMMON_USER_PPC64, + .mmu_features = MMU_FTR_TYPE_3E | MMU_FTR_USE_TLBILX | + MMU_FTR_USE_TLBIVAX_BCAST | + MMU_FTR_LOCK_BCAST_INVAL, + .icache_bsize = 64, + .dcache_bsize = 64, + .num_pmcs = 0, + .machine_check = machine_check_generic, + .platform = "power6", + }, + #endif }; Index: dma.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/dma.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** dma.c 9 Dec 2009 18:18:06 -0000 1.6 --- dma.c 9 Dec 2009 18:40:09 -0000 1.7 *************** *** 8,11 **** --- 8,12 ---- #include <linux/device.h> #include <linux/dma-mapping.h> + #include <linux/dma-debug.h> #include <linux/lmb.h> #include <asm/bug.h> *************** *** 21,31 **** */ - unsigned long get_dma_direct_offset(struct device *dev) - { - if (dev) - return (unsigned long)dev->archdata.dma_data; - - return PCI_DRAM_OFFSET; - } void *dma_direct_alloc_coherent(struct device *dev, size_t size, --- 22,25 ---- *************** *** 37,41 **** if (ret == NULL) return NULL; ! *dma_handle += get_dma_direct_offset(dev); return ret; #else --- 31,35 ---- if (ret == NULL) return NULL; ! *dma_handle += get_dma_offset(dev); return ret; #else *************** *** 51,55 **** ret = page_address(page); memset(ret, 0, size); ! *dma_handle = virt_to_abs(ret) + get_dma_direct_offset(dev); return ret; --- 45,49 ---- ret = page_address(page); memset(ret, 0, size); ! *dma_handle = virt_to_abs(ret) + get_dma_offset(dev); return ret; *************** *** 75,79 **** for_each_sg(sgl, sg, nents, i) { ! sg->dma_address = sg_phys(sg) + get_dma_direct_offset(dev); sg->dma_length = sg->length; __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction); --- 69,73 ---- for_each_sg(sgl, sg, nents, i) { ! sg->dma_address = sg_phys(sg) + get_dma_offset(dev); sg->dma_length = sg->length; __dma_sync_page(sg_page(sg), sg->offset, sg->length, direction); *************** *** 110,114 **** BUG_ON(dir == DMA_NONE); __dma_sync_page(page, offset, size, dir); ! return page_to_phys(page) + offset + get_dma_direct_offset(dev); } --- 104,108 ---- BUG_ON(dir == DMA_NONE); __dma_sync_page(page, offset, size, dir); ! return page_to_phys(page) + offset + get_dma_offset(dev); } *************** *** 141,145 **** #endif ! struct dma_mapping_ops dma_direct_ops = { .alloc_coherent = dma_direct_alloc_coherent, .free_coherent = dma_direct_free_coherent, --- 135,139 ---- #endif ! struct dma_map_ops dma_direct_ops = { .alloc_coherent = dma_direct_alloc_coherent, .free_coherent = dma_direct_free_coherent, *************** *** 157,158 **** --- 151,162 ---- }; EXPORT_SYMBOL(dma_direct_ops); + + #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) + + static int __init dma_init(void) + { + dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); + + return 0; + } + fs_initcall(dma_init); Index: head_32.S =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/kernel/head_32.S,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** head_32.S 9 Dec 2009 18:18:06 -0000 1.15 --- head_32.S 9 Dec 2009 18:40:09 -0000 1.16 *************** *** 245,250 **** */ #define EXCEPTION_PROLOG \ ! mtspr SPRN_SPRG0,r10; \ ! mtspr SPRN_SPRG1,r11; \ mfcr r10; \ EXCEPTION_PROLOG_1; \ --- 245,250 ---- */ #define EXCEPTION_PROLOG \ ! mtspr SPRN_SPRG_SCRATCH0,r10; \ ! mtspr SPRN_SPRG_SCRATCH1,r11; \ mfcr r10; \ EXCEPTION_PROLOG_1; \ *************** *** 256,260 **** tophys(r11,r1); /* use tophys(r1) if kernel */ \ beq 1f; \ ! mfspr r11,SPRN_SPRG3; \ lwz r11,THREAD_INFO-THREAD(r11); \ addi r11,r11,THREAD_SIZE; \ --- 256,260 ---- tophys(r11,r1); /* use tophys(r1) if kernel */ \ beq 1f; \ ! mfspr r11,SPRN_SPRG_THREAD; \ lwz r11,THREAD_INFO-THREAD(r11); \ addi r11,r11,THREAD_SIZE; \ *************** *** 268,274 **** stw r12,GPR12(r11); \ stw r9,GPR9(r11); \ ! mfspr r10,SPRN_SPRG0; \ stw r10,GPR10(r11); \ ! mfspr r12,SPRN_SPRG1; \ stw r12,GPR11(r11); \ mflr r10; \ --- 268,274 ---- stw r12,GPR12(r11); \ stw r9,GPR9(r11); \ ! mfspr r10,SPRN_SPRG_SCRATCH0; \ stw r10,GPR10(r11); \ ! mfspr r12,SPRN_SPRG_SCRATCH1; \ stw r12,GPR11(r11); \ mflr r10; \ *************** *** 356,364 **** */ . = 0x200 ! mtspr SPRN_SPRG0,r10 ! mtspr SPRN_SPRG1,r11 mfcr r10 #ifdef CONFIG_PPC_CHRP ! mfspr r11,SPRN_SPRG2 cmpwi 0,r11,0 bne 7f --- 356,364 ---- */ . = 0x200 ! mtspr SPRN_SPRG_SCRATCH0,r10 ! mtspr SPRN_SPRG_SCRATCH1,r11 mfcr r10 #ifdef CONFIG_PPC_CHRP ! mfspr r11,SPRN_SPRG_RTAS cmpwi 0,r11,0 bne 7f *************** *** 368,372 **** addi r3,r1,STACK_FRAME_OVERHEAD #ifdef CONFIG_PPC_CHRP ! mfspr r4,SPRN_SPRG2 cmpwi cr1,r4,0 bne cr1,1f --- 368,372 ---- addi r3,r1,STACK_FRAME_OVERHEAD #ifdef CONFIG_PPC_CHRP ! mfspr r4,SPRN_SPRG_RTAS cmpwi cr1,r4,0 bne cr1,1f *************** *** 486,490 **** lis r1,PAGE_OFFSET@h /* check if kernel address */ cmplw 0,r1,r3 ! mfspr r2,SPRN_SPRG3 li r1,_PAGE_USER|_PAGE_PRESENT /* low addresses tested as user */ lwz r2,PGDIR(r2) --- 486,490 ---- lis r1,PAGE_OFFSET@h /* check if kernel address */ cmplw 0,r1,r3 ! mfspr r2,SPRN_SPRG_THREAD li r1,_PAGE_USER|_PAGE_PRESENT /* low addresses tested as user */ lwz r2,PGDIR(r2) *************** *** 560,564 **** lis r1,PAGE_OFFSET@h /* check if kernel address */ cmplw 0,r1,r3 ! mfspr r2,SPRN_SPRG3 li r1,_PAGE_USER|_PAGE_PRESENT /* low addresses tested as user */ lwz r2,PGDIR(r2) --- 560,564 ---- lis r1,PAGE_OFFSET@h /* check if kernel address */ cmplw 0,r1,r3 ! mfspr r2,SPRN_SPRG_THREAD li r1,_PAGE_USER|_PAGE_PRESENT /* low addresses tested as user */ lwz r2,PGDIR(r2) *************** *** 599,608 **** BEGIN_MMU_FTR_SECTION li r0,1 ! mfspr r1,SPRN_SPRG4 rlwinm r2,r3,20,27,31 /* Get Address bits 15:19 */ slw r0,r0,r2 xor r1,r0,r1 srw r0,r1,r2 ! mtspr SPRN_SPRG4,r1 mfspr r2,SPRN_SRR1 rlwimi r2,r0,31-14,14,14 --- 599,608 ---- BEGIN_MMU_FTR_SECTION li r0,1 ! mfspr r1,SPRN_SPRG_603_LRU rlwinm r2,r3,20,27,31 /* Get Address bits 15:19 */ slw r0,r0,r2 xor r1,r0,r1 srw r0,r1,r2 ! mtspr SPRN_SPRG_603_LRU,r1 mfspr r2,SPRN_SRR1 rlwimi r2,r0,31-14,14,14 *************** *** 644,648 **** lis r1,PAGE_OFFSET@h /* check if kernel address */ cmplw 0,r1,r3 ! mfspr r2,SPRN_SPRG3 li r1,_PAGE_RW|_PAGE_USER|_PAGE_PRESENT /* access flags */ lwz r2,PGDIR(r2) --- 644,648 ---- lis r1,PAGE_OFFSET@h /* check if kernel address */ cmplw 0,r1,r3 ! mfspr r2,SPRN_SPRG_THREAD li r1,_PAGE_RW|_PAGE_USER|_PAGE_PRESENT /* access flags */ lwz r2,PGDIR(r2) *************** *** 679,688 **** BEGIN_MMU_FTR_SECTION li r0,1 ! mfspr r1,SPRN_SPRG4 rlwinm r2,r3,20,27,31 /* Get Address bits 15:19 */ slw r0,r0,r2 xor r1,r0,r1 srw r0,r1,r2 ! mtspr SPRN_SPRG4,r1 mfspr r2,SPRN_SRR1 rlwimi r2,r0,31-14,14,14 --- 679,688 ---- BEGIN_MMU_FTR_SECTION li r0,1 ! mfspr r1,SPRN_SPRG_603_LRU rlwinm r2,r3,20,27,31 /* Get Address bits 15:19 */ slw r0,r0,r2 xor r1,r0,r1 srw r0,r1,r2 ! mtspr SPRN_SPRG_603_LRU,r1 mfspr r2,SPRN_SRR1 rlwimi r2,r0,31-14,14,14 *************** *** 865,871 **** addi r4,r4,THREAD /* phys address of our thread_struct */ CLR_TOP32(r4) ! mtspr SPRN_SPRG3,r4 li r3,0 ! mtspr SPRN_SPRG2,r3 /* 0 => not in RTAS */ /* enable MMU and jump to start_secondary */ --- 865,871 ---- addi r4,r4,THREAD /* phys address of our thread_struct */ CLR_TOP32(r4) ! mtspr SPRN_SPRG_THREAD,r4 li r3,0 ! mtspr SPRN_SPRG_RTAS,r3 /* 0 => not in RTAS */ /* enable MMU and jump to start_secondary */ *************** *** 948,954 **** addi r4,r4,THREAD /* init task's THREAD */ CLR_TOP32(r4) ! mtspr SPRN_SPRG3,r4 li r3,0 ! mtspr SPRN_SPRG2,r3 /* 0 => not in RTAS */ /* stack */ --- 948,954 ---- addi r4,r4,THREAD /* init task's THREAD */ CLR_TOP32(r4) ! mtspr SPRN_SPRG_THREAD,r4 li r3,0 ! mtspr SPRN_SPRG_RTAS,r3 /* 0 => not in RTAS */ /* stack */ |