locore.S (224617) | locore.S (235932) |
---|---|
1/*- 2 * Copyright (C) 2007-2009 Semihalf, Rafal Jaworowski <raj@semihalf.com> 3 * Copyright (C) 2006 Semihalf, Marian Balakowicz <m8@semihalf.com> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 9 unchanged lines hidden (view full) --- 18 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 19 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 20 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 22 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 23 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (C) 2007-2009 Semihalf, Rafal Jaworowski <raj@semihalf.com> 3 * Copyright (C) 2006 Semihalf, Marian Balakowicz <m8@semihalf.com> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 9 unchanged lines hidden (view full) --- 18 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 19 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 20 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 22 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 23 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * |
26 * $FreeBSD: head/sys/powerpc/booke/locore.S 224617 2011-08-02 23:33:44Z marcel $ | 26 * $FreeBSD: head/sys/powerpc/booke/locore.S 235932 2012-05-24 20:58:40Z marcel $ |
27 */ 28 29#include "assym.s" 30 31#include <machine/asm.h> 32#include <machine/hid.h> 33#include <machine/param.h> 34#include <machine/spr.h> --- 202 unchanged lines hidden (view full) --- 237/* AP Boot page */ 238/************************************************************************/ 239 .text 240 .globl __boot_page 241 .align 12 242__boot_page: 243 bl 1f 244 | 27 */ 28 29#include "assym.s" 30 31#include <machine/asm.h> 32#include <machine/hid.h> 33#include <machine/param.h> 34#include <machine/spr.h> --- 202 unchanged lines hidden (view full) --- 237/* AP Boot page */ 238/************************************************************************/ 239 .text 240 .globl __boot_page 241 .align 12 242__boot_page: 243 bl 1f 244 |
245 .globl kernload_ap 246kernload_ap: | 245 .globl bp_trace 246bp_trace: |
247 .long 0 248 | 247 .long 0 248 |
249 .globl bp_kernload 250bp_kernload: 251 .long 0 252 |
|
249/* 250 * Initial configuration 251 */ 2521: | 253/* 254 * Initial configuration 255 */ 2561: |
257 mflr %r31 /* r31 hold the address of bp_trace */ 258 |
|
253 /* Set HIDs */ 254 lis %r3, HID0_E500_DEFAULT_SET@h 255 ori %r3, %r3, HID0_E500_DEFAULT_SET@l 256 mtspr SPR_HID0, %r3 257 isync 258 lis %r3, HID1_E500_DEFAULT_SET@h 259 ori %r3, %r3, HID1_E500_DEFAULT_SET@l 260 mtspr SPR_HID1, %r3 --- 52 unchanged lines hidden (view full) --- 313 isync 314 315 lis %r3, KERNBASE@h 316 ori %r3, %r3, KERNBASE@l /* EPN = KERNBASE */ 317 ori %r3, %r3, MAS2_M@l /* WIMGE = 0b00100 */ 318 mtspr SPR_MAS2, %r3 319 isync 320 | 259 /* Set HIDs */ 260 lis %r3, HID0_E500_DEFAULT_SET@h 261 ori %r3, %r3, HID0_E500_DEFAULT_SET@l 262 mtspr SPR_HID0, %r3 263 isync 264 lis %r3, HID1_E500_DEFAULT_SET@h 265 ori %r3, %r3, HID1_E500_DEFAULT_SET@l 266 mtspr SPR_HID1, %r3 --- 52 unchanged lines hidden (view full) --- 319 isync 320 321 lis %r3, KERNBASE@h 322 ori %r3, %r3, KERNBASE@l /* EPN = KERNBASE */ 323 ori %r3, %r3, MAS2_M@l /* WIMGE = 0b00100 */ 324 mtspr SPR_MAS2, %r3 325 isync 326 |
321 /* Retrieve kernel load [physical] address from kernload_ap */ | 327 /* Retrieve kernel load [physical] address from bp_kernload */ |
322 bl 4f 3234: mflr %r3 324 rlwinm %r3, %r3, 0, 0, 19 | 328 bl 4f 3294: mflr %r3 330 rlwinm %r3, %r3, 0, 0, 19 |
325 lis %r4, kernload_ap@h 326 ori %r4, %r4, kernload_ap@l | 331 lis %r4, bp_kernload@h 332 ori %r4, %r4, bp_kernload@l |
327 lis %r5, __boot_page@h 328 ori %r5, %r5, __boot_page@l | 333 lis %r5, __boot_page@h 334 ori %r5, %r5, __boot_page@l |
329 sub %r4, %r4, %r5 /* offset of kernload_ap within __boot_page */ | 335 sub %r4, %r4, %r5 /* offset of bp_kernload within __boot_page */ |
330 lwzx %r3, %r4, %r3 331 332 /* Set RPN and protection */ 333 ori %r3, %r3, (MAS3_SX | MAS3_SW | MAS3_SR)@l 334 mtspr SPR_MAS3, %r3 335 isync 336 tlbwe 337 isync --- 448 unchanged lines hidden --- | 336 lwzx %r3, %r4, %r3 337 338 /* Set RPN and protection */ 339 ori %r3, %r3, (MAS3_SX | MAS3_SW | MAS3_SR)@l 340 mtspr SPR_MAS3, %r3 341 isync 342 tlbwe 343 isync --- 448 unchanged lines hidden --- |