Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / clients / takeover / entry.S
1 /******************************************************************************
2  * Copyright (c) 2004, 2008 IBM Corporation
3  * All rights reserved.
4  * This program and the accompanying materials
5  * are made available under the terms of the BSD License
6  * which accompanies this distribution, and is available at
7  * http://www.opensource.org/licenses/bsd-license.php
8  *
9  * Contributors:
10  *     IBM Corporation - initial implementation
11  *****************************************************************************/
12
13 #include <macros.h>
14 #include "takeover.h"
15
16         .globl  _wrapclient
17         .section        ".start"
18         .align 3
19
20 _wrapclient:
21         bcl     20,31,over      # branch after pointer table
22 base:
23         .align  3
24 .LCgot:         .quad   _got-base+0x8000
25 over:
26         mflr    r8              # gpr 8 is the base
27         ld      r2, .LCgot-base(r8)     # load got pointer
28         add     r2, r2, r8              # add base
29         li      14, 0
30         oris    14, 14, __bssSize@h
31         ori     14, 14, __bssSize@l
32         addi 14,14,7
33         srwi 14,14,3
34         mtctr   14
35         li      14, 0
36         oris    14, 14, __bssStart@h
37         ori     14, 14, __bssStart@l
38         subi    14, 14, 8
39         li      15, 0
40 1:
41         stdu 15,8(14)
42         bdnz    1b
43
44         bl ._entry
45
46
47
48     .globl slaveLoopNoTakeover
49 slaveLoopNoTakeover:
50         mr 28,3
51
52         li      14,0
53         oris    14, 14, slaveQuitt@h
54         ori     14, 14, slaveQuitt@l
55
56         li      3,0
57         std     3,0(14)
58 1:
59         ld      3,0(14)
60         cmpld   3,28
61         bne     1b
62
63         li      3,0
64         std     3,0(14)
65
66         LOAD64(r3, (TAKEOVERBASEADDRESS+0x150))
67         mtctr   r3
68         bctr
69
70
71     .globl slaveLoop
72 slaveLoop:
73         mr 28,3
74         li r3, 0x5124
75         li r0, -1; .long 0x44000022
76         
77         li      14,0
78         oris    14, 14, slaveQuitt@h
79         ori     14, 14, slaveQuitt@l
80         li      3,0
81         std     3,0(14)
82 1:
83         ld      3,0(14)
84         cmpld   3,28
85         bne     1b
86
87         li      3,0
88         std     3,0(14)
89
90         LOAD64(r3, (TAKEOVERBASEADDRESS+0x150))
91         mtctr   r3
92         bctr
93
94
95 C_ENTRY(m_sync)
96         isync
97         sync
98         nop
99         blr