Changes in kernel/arch/sparc64/src/sun4v/start.S [f238e86:4872160] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/sun4v/start.S
rf238e86 r4872160 75 75 * 76 76 * parameters: 77 * addr: virtual address to be mapped 78 * rphysmem_start: register containing the starting address of the 79 * physical memory 80 * rtmp1: a register to be used as temporary 81 * rtmp2: a register to be used as temporary 82 * rd: register where the result will be saved 77 * addr: virtual address to be mapped 78 * rphysmem_start: register containing the starting address 79 * of the physical memory 80 * rtmp1: a register to be used as temporary 81 * rtmp2: a register to be used as temporary 82 * rd: register where the result will be saved 83 * 83 84 */ 84 85 #define TTE_DATA(addr, rphysmem_start, rtmp1, rtmp2, rd) \ … … 90 91 /* 91 92 * Here is where the kernel is passed control from the boot loader. 92 * 93 * 93 94 * The registers are expected to be in this state: 94 * - %o0 starting address of physical memory + bootstrap processor flag95 * bits 63...1: physical memory starting address / 296 * bit 0: non-zero on BSP processor, zero on AP processors97 * - %o1 bootinfo structure address (BSP only)98 * - %o2 bootinfo structure size (BSP only)95 * - %o0 bootinfo structure address (BSP only) 96 * - %o1 starting address of physical memory 97 * + bootstrap processor flag 98 * bits 63...1: physical memory starting address / 2 99 * bit 0: non-zero on BSP processor, zero on AP processors 99 100 * 100 101 * Moreover, we depend on boot having established the following environment: 101 * - TLBs are on 102 * - identity mapping for the kernel image 102 * - TLBs are on 103 * - identity mapping for the kernel image 104 * 103 105 */ 104 106 .global kernel_image_start 105 107 kernel_image_start: 106 108 mov BSP_FLAG, %l0 107 and %o0, %l0, %l7 ! l7 <= bootstrap processor? 108 andn %o0, %l0, %l6 ! l6 <= start of physical memory 109 or %o1, %g0, %l1 110 or %o2, %g0, %l2 109 and %o1, %l0, %l7 ! l7 <= bootstrap processor? 110 andn %o1, %l0, %l6 ! l6 <= start of physical memory 111 or %o0, %g0, %l0 111 112 112 113 ! Get bits (PHYSMEM_ADDR_SIZE - 1):13 of physmem_base. … … 245 246 sub %sp, STACK_BIAS, %sp 246 247 247 or %l1, %g0, %o1 248 or %l2, %g0, %o2 249 sethi %hi(bootinfo), %o0 250 call memcpy ! copy bootinfo 251 or %o0, %lo(bootinfo), %o0 252 248 or %l0, %g0, %o0 253 249 call arch_pre_main 254 250 nop
Note:
See TracChangeset
for help on using the changeset viewer.