Changeset b8230b9 in mainline
- Timestamp:
- 2010-05-22T22:20:37Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- d354d57
- Parents:
- 3d6beaa
- Location:
- kernel/arch
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/amd64/include/ddi/ddi.h
r3d6beaa rb8230b9 33 33 /** 34 34 * @file 35 * @brief 35 * @brief amd64 specific DDI declarations and macros. 36 36 */ 37 37 -
kernel/arch/ia32/include/ddi/ddi.h
r3d6beaa rb8230b9 32 32 /** 33 33 * @file 34 * @brief 34 * @brief ia32 specific DDI declarations and macros. 35 35 */ 36 36 -
kernel/arch/ia32/src/asm.S
r3d6beaa rb8230b9 198 198 #define INTERRUPT_ALIGN 64 199 199 .macro handler i n 200 201 .ifeq \i - 0x30 # Syscall handler 202 pushl %ds 203 pushl %es 204 pushl %fs 205 pushl %gs 206 207 # 208 # Push syscall arguments onto the stack 209 # 210 # NOTE: The idea behind the order of arguments passed in registers is to 211 # use all scratch registers first and preserved registers next. 212 # An optimized libc syscall wrapper can make use of this setup. 213 # 214 pushl %eax 215 pushl %ebp 216 pushl %edi 217 pushl %esi 218 pushl %ebx 219 pushl %ecx 220 pushl %edx 221 222 # we must fill the data segment registers 223 movw $16, %ax 224 movw %ax, %ds 225 movw %ax, %es 226 227 cld 228 sti 229 # syscall_handler(edx, ecx, ebx, esi, edi, ebp, eax) 230 call syscall_handler 231 cli 232 addl $28, %esp # clean-up of parameters 233 234 popl %gs 235 popl %fs 236 popl %es 237 popl %ds 238 239 CLEAR_NT_FLAG 240 iret 241 .else 242 /* 243 * This macro distinguishes between two versions of ia32 exceptions. 244 * One version has error word and the other does not have it. 245 * The latter version fakes the error word on the stack so that the 246 * handlers and istate_t can be the same for both types. 247 */ 248 .iflt \i - 32 249 .if (1 << \i) & ERROR_WORD_INTERRUPT_LIST 250 /* 251 * With error word, do nothing 200 201 .ifeq \i - 0x30 # Syscall handler 202 pushl %ds 203 pushl %es 204 pushl %fs 205 pushl %gs 206 207 # 208 # Push syscall arguments onto the stack 209 # 210 # NOTE: The idea behind the order of arguments passed in registers is to 211 # use all scratch registers first and preserved registers next. 212 # An optimized libc syscall wrapper can make use of this setup. 213 # 214 pushl %eax 215 pushl %ebp 216 pushl %edi 217 pushl %esi 218 pushl %ebx 219 pushl %ecx 220 pushl %edx 221 222 # we must fill the data segment registers 223 movw $16, %ax 224 movw %ax, %ds 225 movw %ax, %es 226 227 cld 228 sti 229 # syscall_handler(edx, ecx, ebx, esi, edi, ebp, eax) 230 call syscall_handler 231 cli 232 addl $28, %esp # clean-up of parameters 233 234 popl %gs 235 popl %fs 236 popl %es 237 popl %ds 238 239 CLEAR_NT_FLAG 240 iret 241 .else 242 /* 243 * This macro distinguishes between two versions of ia32 exceptions. 244 * One version has error word and the other does not have it. 245 * The latter version fakes the error word on the stack so that the 246 * handlers and istate_t can be the same for both types. 247 */ 248 .iflt \i - 32 249 .if (1 << \i) & ERROR_WORD_INTERRUPT_LIST 250 /* 251 * With error word, do nothing 252 */ 253 .else 254 /* 255 * Version without error word 256 */ 257 subl $4, %esp 258 .endif 259 .else 260 /* 261 * Version without error word 252 262 */ 253 .else254 /*255 * Version without error word,256 */257 263 subl $4, %esp 258 .endif 259 .else 260 /* 261 * Version without error word, 262 */ 263 subl $4, %esp 264 .endif 265 266 pushl %ds 267 pushl %es 268 pushl %fs 269 pushl %gs 270 271 pushl %ebp 272 pushl %edx 273 pushl %ecx 274 pushl %eax 275 276 # we must fill the data segment registers 277 278 movw $16, %ax 279 movw %ax, %ds 280 movw %ax, %es 281 282 # stop stack traces here 283 xorl %ebp, %ebp 284 285 pushl %esp # *istate 286 pushl $(\i) # intnum 287 call exc_dispatch # exc_dispatch(intnum, *istate) 288 addl $8, %esp # Clear arguments from stack 289 290 CLEAR_NT_FLAG # Modifies %ecx 291 292 popl %eax 293 popl %ecx 294 popl %edx 295 popl %ebp 296 297 popl %gs 298 popl %fs 299 popl %es 300 popl %ds 301 302 # skip error word, no matter whether real or fake 303 addl $4, %esp 304 iret 264 305 .endif 265 306 266 pushl %ds267 pushl %es268 pushl %fs269 pushl %gs270 271 pushl %ebp272 pushl %edx273 pushl %ecx274 pushl %eax275 276 # we must fill the data segment registers277 movw $16, %ax278 movw %ax, %ds279 movw %ax, %es280 281 # stop stack traces here282 xorl %ebp, %ebp283 284 pushl %esp # *istate285 pushl $(\i) # intnum286 call exc_dispatch # excdispatch(intnum, *istate)287 addl $8, %esp # Clear arguments from stack288 289 CLEAR_NT_FLAG # Modifies %ecx290 291 popl %eax292 popl %ecx293 popl %edx294 popl %ebp295 296 popl %gs297 popl %fs298 popl %es299 popl %ds300 301 addl $4, %esp # Skip error word, no matter whether real or fake.302 iret303 .endif304 305 307 .align INTERRUPT_ALIGN 306 308 .if (\n- \i) - 1 307 handler "(\i + 1)", \n309 handler "(\i + 1)", \n 308 310 .endif 309 311 .endm -
kernel/arch/ia32/src/proc/scheduler.c
r3d6beaa rb8230b9 38 38 #include <proc/thread.h> 39 39 #include <arch.h> 40 #include <arch/context.h> 40 #include <arch/context.h> /* SP_DELTA */ 41 41 #include <arch/pm.h> 42 42 #include <arch/asm.h> -
kernel/arch/mips32/include/asm.h
r3d6beaa rb8230b9 27 27 */ 28 28 29 /** @addtogroup mips32 29 /** @addtogroup mips32 30 30 * @{ 31 31 */ -
kernel/arch/mips32/include/debug.h
r3d6beaa rb8230b9 36 36 #define KERN_mips23_DEBUG_H_ 37 37 38 /** simulator enters the trace mode */ 39 #define ___traceon() asm volatile ( "\t.word\t0x39\n"); 40 /** simulator leaves the trace mode */ 41 #define ___traceoff() asm volatile ( "\t.word\t0x3d\n"); 42 /** register dump */ 43 #define ___regview() asm volatile ( "\t.word\t0x37\n"); 44 /** halt the simulator */ 45 #define ___halt() asm volatile ( "\t.word\t0x28\n"); 46 /** simulator enters interactive mode */ 47 #define ___intmode() asm volatile ( "\t.word\t0x29\n"); 38 /** Enter the simulator trace mode */ 39 #define ___traceon() asm volatile ( "\t.word\t0x39\n"); 40 41 /** Leave the simulator trace mode */ 42 #define ___traceoff() asm volatile ( "\t.word\t0x3d\n"); 43 44 /** Ask the simulator to dump registers */ 45 #define ___regview() asm volatile ( "\t.word\t0x37\n"); 46 47 /** Halt the simulator */ 48 #define ___halt() asm volatile ( "\t.word\t0x28\n"); 49 50 /** Enter the simulator interactive mode */ 51 #define ___intmode() asm volatile ( "\t.word\t0x29\n"); 48 52 49 53 #endif -
kernel/arch/mips32/src/context.S
r3d6beaa rb8230b9 28 28 29 29 #include <arch/context_offset.h> 30 31 .text 30 31 .text 32 32 33 33 .set noat … … 38 38 .global context_restore_arch 39 39 40 41 40 context_save_arch: 42 41 CONTEXT_SAVE_ARCH_CORE $a0 43 42 44 43 # context_save returns 1 45 44 j $31 46 li $2, 1 47 45 li $2, 1 46 48 47 context_restore_arch: 49 48 CONTEXT_RESTORE_ARCH_CORE $a0 50 49 51 50 # context_restore returns 0 52 51 j $31 53 xor $2, $2 52 xor $2, $2 -
kernel/arch/ppc32/include/elf.h
r3d6beaa rb8230b9 27 27 */ 28 28 29 /** @addtogroup ppc32 29 /** @addtogroup ppc32 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ppc32_ELF_H_ 37 37 38 #define ELF_MACHINEEM_PPC39 #define ELF_DATA_ENCODING 40 #define ELF_CLASS 38 #define ELF_MACHINE EM_PPC 39 #define ELF_DATA_ENCODING ELFDATA2MSB 40 #define ELF_CLASS ELFCLASS32 41 41 42 42 #endif -
kernel/arch/ppc32/include/faddr.h
r3d6beaa rb8230b9 27 27 */ 28 28 29 /** @addtogroup ppc32 29 /** @addtogroup ppc32 30 30 * @{ 31 31 */ … … 38 38 #include <typedefs.h> 39 39 40 #define FADDR(fptr) 40 #define FADDR(fptr) ((uintptr_t) (fptr)) 41 41 42 42 #endif -
kernel/arch/ppc32/include/fpu_context.h
r3d6beaa rb8230b9 27 27 */ 28 28 29 /** @addtogroup ppc32 29 /** @addtogroup ppc32 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ppc32_FPU_CONTEXT_H_ 37 37 38 #ifndef KERN_ppc32_TYPES_H_ 39 #include <typedefs.h> 40 #endif 38 #include <typedefs.h> 41 39 42 40 typedef struct { -
kernel/arch/ppc32/include/interrupt.h
r3d6beaa rb8230b9 38 38 #include <arch/exception.h> 39 39 40 #define IVT_ITEMS 1641 #define IVT_FIRST 040 #define IVT_ITEMS 16 41 #define IVT_FIRST 0 42 42 43 #define VECTOR_DATA_STORAGE 244 #define VECTOR_INSTRUCTION_STORAGE 345 #define VECTOR_EXTERNAL 446 #define VECTOR_DECREMENTER 843 #define VECTOR_DATA_STORAGE 2 44 #define VECTOR_INSTRUCTION_STORAGE 3 45 #define VECTOR_EXTERNAL 4 46 #define VECTOR_DECREMENTER 8 47 47 48 48 extern void start_decrementer(void); 49 49 extern void interrupt_init(void); 50 extern void extint_handler(int n, istate_t *istate);50 extern void extint_handler(int, istate_t *); 51 51 52 52 #endif -
kernel/arch/ppc32/include/mm/as.h
r3d6beaa rb8230b9 27 27 */ 28 28 29 /** @addtogroup ppc32mm 29 /** @addtogroup ppc32mm 30 30 * @{ 31 31 */ … … 36 36 #define KERN_ppc32_AS_H_ 37 37 38 #define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH 38 #define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH 0 39 39 40 #define KERNEL_ADDRESS_SPACE_START_ARCH 41 #define KERNEL_ADDRESS_SPACE_END_ARCH 42 #define USER_ADDRESS_SPACE_START_ARCH 43 #define USER_ADDRESS_SPACE_END_ARCH 40 #define KERNEL_ADDRESS_SPACE_START_ARCH ((unsigned long) 0x80000000) 41 #define KERNEL_ADDRESS_SPACE_END_ARCH ((unsigned long) 0xffffffff) 42 #define USER_ADDRESS_SPACE_START_ARCH ((unsigned long) 0x00000000) 43 #define USER_ADDRESS_SPACE_END_ARCH ((unsigned long) 0x7fffffff) 44 44 45 #define USTACK_ADDRESS_ARCH 45 #define USTACK_ADDRESS_ARCH (0x7fffffff - (PAGE_SIZE - 1)) 46 46 47 47 typedef struct { … … 50 50 #include <genarch/mm/as_pt.h> 51 51 52 #define as_constructor_arch(as, flags) 53 #define as_destructor_arch(as) 54 #define as_create_arch(as, flags) 52 #define as_constructor_arch(as, flags) (as != as) 53 #define as_destructor_arch(as) (as != as) 54 #define as_create_arch(as, flags) (as != as) 55 55 #define as_deinstall_arch(as) 56 56 #define as_invalidate_translation_cache(as, page, cnt) -
kernel/arch/ppc32/include/mm/asid.h
r3d6beaa rb8230b9 27 27 */ 28 28 29 /** @addtogroup ppc32mm 29 /** @addtogroup ppc32mm 30 30 * @{ 31 31 */ … … 38 38 #include <typedefs.h> 39 39 40 #define ASID_MAX_ARCH 40 #define ASID_MAX_ARCH 4096 41 41 42 42 typedef uint32_t asid_t; -
kernel/arch/ppc32/include/mm/page.h
r3d6beaa rb8230b9 27 27 */ 28 28 29 /** @addtogroup ppc32mm 29 /** @addtogroup ppc32mm 30 30 * @{ 31 31 */ … … 38 38 #include <arch/mm/frame.h> 39 39 40 #define PAGE_WIDTH 41 #define PAGE_SIZE 40 #define PAGE_WIDTH FRAME_WIDTH 41 #define PAGE_SIZE FRAME_SIZE 42 42 43 43 #ifdef KERNEL 44 44 45 45 #ifndef __ASM__ 46 # define KA2PA(x)(((uintptr_t) (x)) - 0x80000000)47 # define PA2KA(x)(((uintptr_t) (x)) + 0x80000000)46 #define KA2PA(x) (((uintptr_t) (x)) - 0x80000000) 47 #define PA2KA(x) (((uintptr_t) (x)) + 0x80000000) 48 48 #else 49 # define KA2PA(x)((x) - 0x80000000)50 # define PA2KA(x)((x) + 0x80000000)49 #define KA2PA(x) ((x) - 0x80000000) 50 #define PA2KA(x) ((x) + 0x80000000) 51 51 #endif 52 52 … … 65 65 66 66 /* Number of entries in each level. */ 67 #define PTL0_ENTRIES_ARCH 68 #define PTL1_ENTRIES_ARCH 69 #define PTL2_ENTRIES_ARCH 70 #define PTL3_ENTRIES_ARCH 67 #define PTL0_ENTRIES_ARCH 1024 68 #define PTL1_ENTRIES_ARCH 0 69 #define PTL2_ENTRIES_ARCH 0 70 #define PTL3_ENTRIES_ARCH 1024 71 71 72 72 /* Page table sizes for each level. */ 73 #define PTL0_SIZE_ARCH 74 #define PTL1_SIZE_ARCH 75 #define PTL2_SIZE_ARCH 76 #define PTL3_SIZE_ARCH 73 #define PTL0_SIZE_ARCH ONE_FRAME 74 #define PTL1_SIZE_ARCH 0 75 #define PTL2_SIZE_ARCH 0 76 #define PTL3_SIZE_ARCH ONE_FRAME 77 77 78 78 /* Macros calculating indices into page tables on each level. */ 79 #define PTL0_INDEX_ARCH(vaddr) 80 #define PTL1_INDEX_ARCH(vaddr) 81 #define PTL2_INDEX_ARCH(vaddr) 82 #define PTL3_INDEX_ARCH(vaddr) 79 #define PTL0_INDEX_ARCH(vaddr) (((vaddr) >> 22) & 0x3ff) 80 #define PTL1_INDEX_ARCH(vaddr) 0 81 #define PTL2_INDEX_ARCH(vaddr) 0 82 #define PTL3_INDEX_ARCH(vaddr) (((vaddr) >> 12) & 0x3ff) 83 83 84 84 /* Get PTE address accessors for each level. */ 85 85 #define GET_PTL1_ADDRESS_ARCH(ptl0, i) \ 86 86 (((pte_t *) (ptl0))[(i)].pfn << 12) 87 87 88 #define GET_PTL2_ADDRESS_ARCH(ptl1, i) \ 88 89 (ptl1) 90 89 91 #define GET_PTL3_ADDRESS_ARCH(ptl2, i) \ 90 92 (ptl2) 91 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) \ 93 94 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) \ 92 95 (((pte_t *) (ptl3))[(i)].pfn << 12) 93 96 94 97 /* Set PTE address accessors for each level. */ 95 98 #define SET_PTL0_ADDRESS_ARCH(ptl0) 99 96 100 #define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) \ 97 101 (((pte_t *) (ptl0))[(i)].pfn = (a) >> 12) 102 98 103 #define SET_PTL2_ADDRESS_ARCH(ptl1, i, a) 99 104 #define SET_PTL3_ADDRESS_ARCH(ptl2, i, a) 105 100 106 #define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) \ 101 107 (((pte_t *) (ptl3))[(i)].pfn = (a) >> 12) … … 104 110 #define GET_PTL1_FLAGS_ARCH(ptl0, i) \ 105 111 get_pt_flags((pte_t *) (ptl0), (size_t) (i)) 112 106 113 #define GET_PTL2_FLAGS_ARCH(ptl1, i) \ 107 114 PAGE_PRESENT 115 108 116 #define GET_PTL3_FLAGS_ARCH(ptl2, i) \ 109 117 PAGE_PRESENT 118 110 119 #define GET_FRAME_FLAGS_ARCH(ptl3, i) \ 111 120 get_pt_flags((pte_t *) (ptl3), (size_t) (i)) 112 121 113 122 /* Set PTE flags accessors for each level. */ 114 #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) 123 #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) \ 115 124 set_pt_flags((pte_t *) (ptl0), (size_t) (i), (x)) 125 116 126 #define SET_PTL2_FLAGS_ARCH(ptl1, i, x) 117 127 #define SET_PTL3_FLAGS_ARCH(ptl2, i, x) 128 118 129 #define SET_FRAME_FLAGS_ARCH(ptl3, i, x) \ 119 130 set_pt_flags((pte_t *) (ptl3), (size_t) (i), (x)) 120 131 121 132 /* Macros for querying the last-level PTEs. */ 122 #define PTE_VALID_ARCH(pte) 123 #define PTE_PRESENT_ARCH(pte) 124 #define PTE_GET_FRAME_ARCH(pte) 125 #define PTE_WRITABLE_ARCH(pte) 126 #define PTE_EXECUTABLE_ARCH(pte) 133 #define PTE_VALID_ARCH(pte) (*((uint32_t *) (pte)) != 0) 134 #define PTE_PRESENT_ARCH(pte) ((pte)->present != 0) 135 #define PTE_GET_FRAME_ARCH(pte) ((pte)->pfn << 12) 136 #define PTE_WRITABLE_ARCH(pte) 1 137 #define PTE_EXECUTABLE_ARCH(pte) 1 127 138 128 139 #ifndef __ASM__ … … 133 144 /** Page Table Entry. */ 134 145 typedef struct { 135 unsigned present : 1; /**< Present bit. */136 unsigned page_write_through : 1; /**< Write thought caching. */137 unsigned page_cache_disable : 1; /**< No caching. */138 unsigned accessed : 1; /**< Accessed bit. */139 unsigned global : 1; /**< Global bit. */140 unsigned valid : 1; /**< Valid content even if not present. */141 unsigned pfn : 20; /**< Physical frame number. */146 unsigned int present : 1; /**< Present bit. */ 147 unsigned int page_write_through : 1; /**< Write thought caching. */ 148 unsigned int page_cache_disable : 1; /**< No caching. */ 149 unsigned int accessed : 1; /**< Accessed bit. */ 150 unsigned int global : 1; /**< Global bit. */ 151 unsigned int valid : 1; /**< Valid content even if not present. */ 152 unsigned int pfn : 20; /**< Physical frame number. */ 142 153 } pte_t; 143 154 144 155 static inline unsigned int get_pt_flags(pte_t *pt, size_t i) 145 156 { 146 pte_t * p= &pt[i];157 pte_t *entry = &pt[i]; 147 158 148 return (((! p->page_cache_disable) << PAGE_CACHEABLE_SHIFT) |149 ((! p->present) << PAGE_PRESENT_SHIFT) |159 return (((!entry->page_cache_disable) << PAGE_CACHEABLE_SHIFT) | 160 ((!entry->present) << PAGE_PRESENT_SHIFT) | 150 161 (1 << PAGE_USER_SHIFT) | 151 162 (1 << PAGE_READ_SHIFT) | 152 163 (1 << PAGE_WRITE_SHIFT) | 153 164 (1 << PAGE_EXEC_SHIFT) | 154 ( p->global << PAGE_GLOBAL_SHIFT));165 (entry->global << PAGE_GLOBAL_SHIFT)); 155 166 } 156 167 157 168 static inline void set_pt_flags(pte_t *pt, size_t i, int flags) 158 169 { 159 pte_t * p= &pt[i];170 pte_t *entry = &pt[i]; 160 171 161 p->page_cache_disable = !(flags & PAGE_CACHEABLE);162 p->present = !(flags & PAGE_NOT_PRESENT);163 p->global = (flags & PAGE_GLOBAL) != 0;164 p->valid = 1;172 entry->page_cache_disable = !(flags & PAGE_CACHEABLE); 173 entry->present = !(flags & PAGE_NOT_PRESENT); 174 entry->global = (flags & PAGE_GLOBAL) != 0; 175 entry->valid = 1; 165 176 } 166 177 -
kernel/arch/ppc32/include/mm/tlb.h
r3d6beaa rb8230b9 27 27 */ 28 28 29 /** @addtogroup ppc32mm 29 /** @addtogroup ppc32mm 30 30 * @{ 31 31 */ … … 45 45 46 46 typedef struct { 47 unsigned v : 1; /**< Valid */48 unsigned vsid : 24; /**< Virtual Segment ID */49 unsigned h : 1; /**< Primary/secondary hash */50 unsigned api : 6; /**< Abbreviated Page Index */51 unsigned rpn : 20; /**< Real Page Number */52 unsigned reserved0 : 3;53 unsigned r : 1; /**< Reference */54 unsigned c : 1; /**< Change */55 unsigned wimg : 4; /**< Access control */56 unsigned reserved1 : 1;57 unsigned pp : 2; /**< Page protection */47 unsigned int v : 1; /**< Valid */ 48 unsigned int vsid : 24; /**< Virtual Segment ID */ 49 unsigned int h : 1; /**< Primary/secondary hash */ 50 unsigned int api : 6; /**< Abbreviated Page Index */ 51 unsigned int rpn : 20; /**< Real Page Number */ 52 unsigned int reserved0 : 3; 53 unsigned int r : 1; /**< Reference */ 54 unsigned int c : 1; /**< Change */ 55 unsigned int wimg : 4; /**< Access control */ 56 unsigned int reserved1 : 1; 57 unsigned int pp : 2; /**< Page protection */ 58 58 } phte_t; 59 59 60 60 typedef struct { 61 unsigned v : 1;62 unsigned vsid : 24;63 unsigned reserved0 : 1;64 unsigned api : 6;61 unsigned int v : 1; 62 unsigned int vsid : 24; 63 unsigned int reserved0 : 1; 64 unsigned int api : 6; 65 65 } ptehi_t; 66 66 67 67 typedef struct { 68 unsigned rpn : 20;69 unsigned xpn : 3;70 unsigned reserved0 : 1;71 unsigned c : 1;72 unsigned wimg : 4;73 unsigned x : 1;74 unsigned pp : 2;68 unsigned int rpn : 20; 69 unsigned int xpn : 3; 70 unsigned int reserved0 : 1; 71 unsigned int c : 1; 72 unsigned int wimg : 4; 73 unsigned int x : 1; 74 unsigned int pp : 2; 75 75 } ptelo_t; 76 76 77 77 extern void pht_init(void); 78 extern void pht_refill(int n, istate_t *istate); 79 extern bool pht_refill_real(int n, istate_t *istate) __attribute__ ((section("K_UNMAPPED_TEXT_START"))); 80 extern void tlb_refill_real(int n, uint32_t tlbmiss, ptehi_t ptehi, ptelo_t ptelo, istate_t *istate) __attribute__ ((section("K_UNMAPPED_TEXT_START"))); 78 extern void pht_refill(int, istate_t *); 79 80 extern bool pht_refill_real(int, istate_t *) 81 __attribute__ ((section("K_UNMAPPED_TEXT_START"))); 82 extern void tlb_refill_real(int, uint32_t, ptehi_t, ptelo_t, istate_t *) 83 __attribute__ ((section("K_UNMAPPED_TEXT_START"))); 81 84 82 85 #endif -
kernel/arch/ppc32/src/context.S
r3d6beaa rb8230b9 29 29 #include <arch/context_offset.h> 30 30 31 .text 31 .text 32 32 33 33 .global context_save_arch … … 46 46 li r3, 1 47 47 blr 48 48 49 49 context_restore_arch: 50 50 CONTEXT_RESTORE_ARCH_CORE r3 -
kernel/arch/ppc32/src/ddi/ddi.c
r3d6beaa rb8230b9 46 46 * 47 47 * @return 0 on success or an error code from errno.h. 48 * 48 49 */ 49 50 int ddi_iospace_enable_arch(task_t *task, uintptr_t ioaddr, size_t size) -
kernel/arch/ppc32/src/debug/panic.s
r3d6beaa rb8230b9 35 35 lis %r14, halt@ha 36 36 addi %r14, %r14, halt@l 37 mtlr %r14 37 mtlr %r14 # fake stack to make printf return to halt 38 38 b printf -
kernel/arch/ppc32/src/fpu_context.S
r3d6beaa rb8230b9 30 30 #include <arch/context_offset.h> 31 31 32 .text 32 .text 33 33 34 34 .global fpu_context_save … … 87 87 88 88 blr 89 89 90 90 fpu_context_restore: 91 91 // FPU_CONTEXT_LOAD r3
Note:
See TracChangeset
for help on using the changeset viewer.