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