Changeset 613bc54 in mainline
- Timestamp:
- 2006-04-22T20:11:23Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c118940
- Parents:
- c7c0b89b
- Location:
- arch
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc32/Makefile.inc
rc7c0b89b r613bc54 31 31 32 32 BFD_NAME = elf32-powerpc 33 BFD_ARCH = powerpc 33 BFD_ARCH = powerpc:common 34 34 BFD = binary 35 35 TARGET = ppc-linux-gnu … … 79 79 arch/$(ARCH)/src/mm/frame.c \ 80 80 arch/$(ARCH)/src/mm/memory_init.c \ 81 arch/$(ARCH)/src/mm/page.c 81 arch/$(ARCH)/src/mm/page.c \ 82 arch/$(ARCH)/src/mm/tlb.c -
arch/ppc32/include/mm/asid.h
rc7c0b89b r613bc54 27 27 */ 28 28 29 #ifndef __ppc32_ASID_H__ 30 #define __ppc32_ASID_H__ 29 /* 30 * ia32 has no hardware support for address space identifiers. 31 * This file is provided to do nop-implementation of mm/asid.h 32 * interface. 33 */ 34 35 #ifndef __ia32_ASID_H__ 36 #define __ia32_ASID_H__ 31 37 32 38 typedef int asid_t; 33 39 34 #define ASID_MAX_ARCH 340 #define ASID_MAX_ARCH 3 35 41 36 #define asid_get() (ASID_START+1)42 #define asid_get() (ASID_START+1) 37 43 38 44 #endif -
arch/ppc32/include/mm/frame.h
rc7c0b89b r613bc54 31 31 32 32 #define FRAME_WIDTH 12 /* 4K */ 33 #define FRAME_SIZE (1 <<FRAME_WIDTH)33 #define FRAME_SIZE (1 << FRAME_WIDTH) 34 34 35 35 #ifdef KERNEL -
arch/ppc32/include/mm/page.h
rc7c0b89b r613bc54 45 45 #endif 46 46 47 #define PTL0_ENTRIES_ARCH 0 48 #define PTL1_ENTRIES_ARCH 0 49 #define PTL2_ENTRIES_ARCH 0 50 #define PTL3_ENTRIES_ARCH 0 47 /* 48 * Implementation of generic 4-level page table interface, 49 * the hardware Page Hash Table is used as cache. 50 * 51 * Page table layout: 52 * - 32-bit virtual addressess 53 * - Offset is 12 bits => pages are 4K long 54 * - PTL0 has 1024 entries (10 bits) 55 * - PTL1 is not used 56 * - PTL2 is not used 57 * - PLT3 has 1024 entries (10 bits) 58 */ 51 59 52 #define PTL0_INDEX_ARCH(vaddr) 0 53 #define PTL1_INDEX_ARCH(vaddr) 0 54 #define PTL2_INDEX_ARCH(vaddr) 0 55 #define PTL3_INDEX_ARCH(vaddr) 0 60 #define PTL0_ENTRIES_ARCH 1024 61 #define PTL1_ENTRIES_ARCH 0 62 #define PTL2_ENTRIES_ARCH 0 63 #define PTL3_ENTRIES_ARCH 1024 64 65 #define PTL0_INDEX_ARCH(vaddr) (((vaddr) >> 22) & 0x3ff) 66 #define PTL1_INDEX_ARCH(vaddr) 0 67 #define PTL2_INDEX_ARCH(vaddr) 0 68 #define PTL3_INDEX_ARCH(vaddr) (((vaddr) >> 12) & 0x3ff) 56 69 57 70 #define SET_PTL0_ADDRESS_ARCH(ptl0) 58 71 59 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) (( pte_t *) 0)60 #define GET_PTL2_ADDRESS_ARCH(ptl1, i) ( (pte_t *) 0)61 #define GET_PTL3_ADDRESS_ARCH(ptl2, i) ( (pte_t *) 0)62 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) (( pte_t *) 0)72 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) (((pte_t *) (ptl0))[(i)].pfn << 12) 73 #define GET_PTL2_ADDRESS_ARCH(ptl1, i) (ptl1) 74 #define GET_PTL3_ADDRESS_ARCH(ptl2, i) (ptl2) 75 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) (((pte_t *) (ptl3))[(i)].pfn << 12) 63 76 64 #define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) 77 #define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) (((pte_t *) (ptl0))[(i)].pfn = (a) >> 12) 65 78 #define SET_PTL2_ADDRESS_ARCH(ptl1, i, a) 66 79 #define SET_PTL3_ADDRESS_ARCH(ptl2, i, a) 67 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) 80 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) (((pte_t *) (ptl3))[(i)].pfn = (a) >> 12) 68 81 69 #define GET_PTL1_FLAGS_ARCH(ptl0, i) 070 #define GET_PTL2_FLAGS_ARCH(ptl1, i) 071 #define GET_PTL3_FLAGS_ARCH(ptl2, i) 072 #define GET_FRAME_FLAGS_ARCH(ptl3, i) 082 #define GET_PTL1_FLAGS_ARCH(ptl0, i) get_pt_flags((pte_t *) (ptl0), (index_t) (i)) 83 #define GET_PTL2_FLAGS_ARCH(ptl1, i) PAGE_PRESENT 84 #define GET_PTL3_FLAGS_ARCH(ptl2, i) PAGE_PRESENT 85 #define GET_FRAME_FLAGS_ARCH(ptl3, i) get_pt_flags((pte_t *) (ptl3), (index_t) (i)) 73 86 74 #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) 87 #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) set_pt_flags((pte_t *) (ptl0), (index_t) (i), (x)) 75 88 #define SET_PTL2_FLAGS_ARCH(ptl1, i, x) 76 89 #define SET_PTL3_FLAGS_ARCH(ptl2, i, x) 77 #define SET_FRAME_FLAGS_ARCH(ptl3, i, x) 90 #define SET_FRAME_FLAGS_ARCH(ptl3, i, x) set_pt_flags((pte_t *) (ptl3), (index_t) (i), (x)) 78 91 79 #define PTE_VALID_ARCH(p ) 180 #define PTE_PRESENT_ARCH(p ) 181 #define PTE_GET_FRAME_ARCH(p ) 092 #define PTE_VALID_ARCH(pte) (*((__u32 *) (pte)) != 0) 93 #define PTE_PRESENT_ARCH(pte) ((pte)->p != 0) 94 #define PTE_GET_FRAME_ARCH(pte) ((pte)->pfn << 12) 82 95 83 96 #ifndef __ASM__ … … 86 99 #include <arch/mm/frame.h> 87 100 #include <arch/types.h> 101 102 static inline int get_pt_flags(pte_t *pt, index_t i) 103 { 104 pte_t *p = &pt[i]; 105 106 return ( 107 (1 << PAGE_CACHEABLE_SHIFT) | 108 ((!p->p) << PAGE_PRESENT_SHIFT) | 109 (1 << PAGE_USER_SHIFT) | 110 (1 << PAGE_READ_SHIFT) | 111 (1 << PAGE_WRITE_SHIFT) | 112 (1 << PAGE_EXEC_SHIFT) 113 ); 114 } 115 116 static inline void set_pt_flags(pte_t *pt, index_t i, int flags) 117 { 118 pte_t *p = &pt[i]; 119 120 p->p = !(flags & PAGE_NOT_PRESENT); 121 p->valid = 1; 122 } 88 123 89 124 extern void page_arch_init(void); -
arch/ppc32/include/mm/tlb.h
rc7c0b89b r613bc54 1 1 /* 2 * Copyright (C) 200 5 Jakub Jermar2 * Copyright (C) 2006 Martin Decky 3 3 * All rights reserved. 4 4 * … … 30 30 #define __ppc32_TLB_H__ 31 31 32 #define tlb_arch_init() 33 #define tlb_print() 32 #include <arch/exception.h> 33 #include <typedefs.h> 34 35 extern void pht_refill(istate_t *istate); 34 36 35 37 #endif -
arch/ppc32/include/types.h
rc7c0b89b r613bc54 49 49 typedef __u32 __native; 50 50 51 typedef __u32 pte_t; 51 /** Page Table Entry. */ 52 typedef struct { 53 unsigned p : 1; /**< Present bit. */ 54 unsigned a : 1; /**< Accessed bit. */ 55 unsigned valid : 1; /**< Valid content even if not present. */ 56 unsigned pfn : 20; /**< Physical frame number. */ 57 } pte_t; 52 58 53 59 #endif -
arch/ppc32/src/exception.S
rc7c0b89b r613bc54 32 32 .section K_UNMAPPED_TEXT_START, "ax" 33 33 34 .org 0x100 35 .global exc_system_reset 36 exc_system_reset: 37 b exc_system_reset 38 39 .org 0x200 40 .global exc_machine_check 41 exc_machine_check: 42 b exc_machine_check 43 44 .org 0x300 45 .global exc_data_storage 46 exc_data_storage: 47 b exc_data_storage 48 49 .org 0x380 50 .global exc_data_segment 51 exc_data_segment: 52 b exc_data_segment 53 54 .org 0x400 55 .global exc_instruction_storage 56 exc_instruction_storage: 57 b exc_instruction_storage 58 59 .org 0x480 60 .global exc_instruction_segment 61 exc_instruction_segment: 62 b exc_instruction_segment 63 64 .org 0x500 65 .global exc_external 66 exc_external: 67 b exc_external 68 69 .org 0x600 70 .global exc_alignment 71 exc_alignment: 72 b exc_alignment 73 74 .org 0x700 75 .global exc_program 76 exc_program: 77 b exc_program 78 79 .org 0x800 80 .global exc_fp_unavailable 81 exc_fp_unavailable: 82 b exc_fp_unavailable 83 84 .org 0x900 85 .global exc_decrementer 86 exc_decrementer: 34 .macro CONTEXT_STORE 87 35 mtspr sprg1, sp 88 36 … … 139 87 mfxer r3 140 88 stw r3, 144(sp) 89 .endm 90 91 .org 0x100 92 .global exc_system_reset 93 exc_system_reset: 94 b exc_system_reset 95 96 .org 0x200 97 .global exc_machine_check 98 exc_machine_check: 99 b exc_machine_check 100 101 .org 0x300 102 .global exc_data_storage 103 exc_data_storage: 104 CONTEXT_STORE 105 106 lis r3, pht_refill@ha 107 addi r3, r3, pht_refill@l 108 mtspr srr0, r3 109 110 mfmsr r3 111 ori r3, r3, (msr_ir | msr_dr)@l 112 mtspr srr1, r3 113 114 lis r3, iret@ha 115 addi r3, r3, iret@l 116 mtlr r3 117 118 addis sp, sp, 0x8000 119 rfi 120 121 .org 0x400 122 .global exc_instruction_storage 123 exc_instruction_storage: 124 b exc_instruction_storage 125 126 .org 0x480 127 .global exc_instruction_segment 128 exc_instruction_segment: 129 b exc_instruction_segment 130 131 .org 0x500 132 .global exc_external 133 exc_external: 134 b exc_external 135 136 .org 0x600 137 .global exc_alignment 138 exc_alignment: 139 b exc_alignment 140 141 .org 0x700 142 .global exc_program 143 exc_program: 144 b exc_program 145 146 .org 0x800 147 .global exc_fp_unavailable 148 exc_fp_unavailable: 149 b exc_fp_unavailable 150 151 .org 0x900 152 .global exc_decrementer 153 exc_decrementer: 154 CONTEXT_STORE 141 155 142 156 lis r3, exc_dispatch@ha -
arch/ppc64/Makefile.inc
rc7c0b89b r613bc54 31 31 32 32 BFD_NAME = elf64-powerpc 33 BFD_ARCH = powerpc 33 BFD_ARCH = powerpc:common64 34 34 BFD = binary 35 TARGET = ppc -linux-gnu36 TOOLCHAIN_DIR = /usr/local/ppc /bin35 TARGET = ppc64-linux-gnu 36 TOOLCHAIN_DIR = /usr/local/ppc64/bin 37 37 38 38 ## Make some default assumptions
Note:
See TracChangeset
for help on using the changeset viewer.