Changeset f2ea5d8 in mainline for kernel/arch/sparc64/src/start.S
- Timestamp:
- 2006-11-17T20:21:25Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f18cc64
- Parents:
- 282f2c9c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.