- Timestamp:
- 2006-11-17T20:21:25Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f18cc64
- Parents:
- 282f2c9c
- Location:
- kernel/arch/sparc64
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/include/boot/boot.h
r282f2c9c rf2ea5d8 76 76 */ 77 77 typedef struct { 78 uintptr_t physmem_start; 78 79 taskmap_t taskmap; 79 80 memmap_t memmap; -
kernel/arch/sparc64/include/mm/page.h
r282f2c9c rf2ea5d8 49 49 #include <genarch/mm/page_ht.h> 50 50 51 #define KA2PA(x) ((uintptr_t) (x)) 52 #define PA2KA(x) ((uintptr_t) (x)) 51 extern uintptr_t physmem_base; 52 53 #define KA2PA(x) (((uintptr_t) (x)) + physmem_base) 54 #define PA2KA(x) (((uintptr_t) (x)) - physmem_base) 53 55 54 56 union page_address { -
kernel/arch/sparc64/include/trap/mmu.h
r282f2c9c rf2ea5d8 112 112 bz 0f ! page address is zero 113 113 114 or %g3, (TTE_CV|TTE_CP|TTE_P|TTE_W), %g2 ! 8K pages are the default (encoded as 0) 115 mov 1, %g3 116 sllx %g3, TTE_V_SHIFT, %g3 117 or %g2, %g3, %g2 114 sethi %hi(kernel_8k_tlb_data_template), %g2 115 ldx [%g2 + %lo(kernel_8k_tlb_data_template)], %g2 116 or %g3, %g2, %g2 118 117 stxa %g2, [%g0] ASI_DTLB_DATA_IN_REG ! identity map the kernel page 119 118 retry -
kernel/arch/sparc64/src/start.S
r282f2c9c rf2ea5d8 45 45 .section K_TEXT_START, "ax" 46 46 47 #define BSP_FLAG 1 48 47 49 /* 48 * Here is where the kernel is passed control 49 * from the boot loader. 50 * Here is where the kernel is passed control from the boot loader. 50 51 * 51 52 * The registers are expected to be in this state: 52 * - %o0 non-zero for the bootstrap processor, zero for application/secondary processors 53 * - %o1 bootinfo structure address 54 * - %o2 bootinfo structure size 53 * - %o0 starting address of physical memory + bootstrap processor flag 54 * bits 63...1: physical memory starting address / 2 55 * bit 0: non-zero on BSP processor, zero on AP processors 56 * - %o1 bootinfo structure address (BSP only) 57 * - %o2 bootinfo structure size (BSP only) 55 58 * 56 * Moreover, we depend on boot having established the 57 * following environment: 59 * Moreover, we depend on boot having established the following environment: 58 60 * - TLBs are on 59 61 * - identity mapping for the kernel image … … 62 64 .global kernel_image_start 63 65 kernel_image_start: 64 mov %o0, %l7 65 66 mov BSP_FLAG, %l0 67 and %o0, %l0, %l7 ! l7 <= bootstrap processor? 68 andn %o0, %l0, %l6 ! l6 <= start of physical memory 69 70 sethi %hi(physmem_base), %l5 71 stx %l6, [%l5 + %lo(physmem_base)] 72 73 /* 74 * Get bits 40:13 of physmem_base. 75 */ 76 sethi %hi(mask_40_13), %l4 77 sethi %hi(physmem_base_40_13), %l3 78 ldx [%l4 + %lo(mask_40_13)], %l4 79 and %l6, %l4, %l5 ! l5 <= physmem_base[40:13] 80 stx %l5, [%l3 + %lo(physmem_base_40_13)] 81 82 /* 83 * Prepare kernel 8K TLB data template. 84 */ 85 sethi %hi(kernel_8k_tlb_data_template), %l4 86 ldx [%l4 + %lo(kernel_8k_tlb_data_template)], %l3 87 or %l3, %l5, %l3 88 stx %l3, [%l4 + %lo(kernel_8k_tlb_data_template)] 89 66 90 /* 67 91 * Setup basic runtime environment. … … 116 140 #define SET_TLB_DATA(r1, r2, imm) \ 117 141 set TTE_CV | TTE_CP | TTE_P | LMA | imm, %r1; \ 118 set PAGESIZE_4M, %r2; \ 142 or %r1, %l5, %r1; \ 143 mov PAGESIZE_4M, %r2; \ 119 144 sllx %r2, TTE_SIZE_SHIFT, %r2; \ 120 145 or %r1, %r2, %r1; \ … … 303 328 304 329 .align STACK_ALIGNMENT 305 .space INITIAL_STACK_SIZE330 .space INITIAL_STACK_SIZE 306 331 .align STACK_ALIGNMENT 307 332 temporary_boot_stack: 308 .space STACK_WINDOW_SAVE_AREA_SIZE 333 .space STACK_WINDOW_SAVE_AREA_SIZE 334 335 336 .data 337 338 .align 8 339 .global physmem_base ! copy of the physical memory base address 340 physmem_base: 341 .quad 0 342 343 .global physmem_base_40_13 344 physmem_base_40_13: ! physmem_base & mask_40_13 345 .quad 0 346 347 .global mask_40_13 348 mask_40_13: ! constant with bits 40:13 set 349 .quad (((1 << 41) - 1) & ~((1 << 13) - 1)) 350 351 /* 352 * This variable is used by the fast_data_MMU_miss trap handler. 353 * It is initialized to reflect the starting address of physical 354 * memory. 355 */ 356 .global kernel_8k_tlb_data_template 357 kernel_8k_tlb_data_template: 358 .quad ((1 << TTE_V_SHIFT) | TTE_CV | TTE_CP | TTE_P | TTE_W) 359
Note:
See TracChangeset
for help on using the changeset viewer.