1#define LOAD32(rn, name) \
2 lis rn,name
3 ori rn,rn,name
4
5#define ENTRY(func_name) \
6 .text; \
7 .align 2; \
8 .globl .func_name; \
9 .func_name: \
10 .globl func_name; \
11 func_name:
12
13#define KVMPPC_HCALL_BASE 0xf000
14#define KVMPPC_H_RTAS (KVMPPC_HCALL_BASE + 0x0)
15#define KVMPPC_H_VOF_CLIENT (KVMPPC_HCALL_BASE + 0x5)
16
17 . = 0x100
18
19ENTRY(_start)
20 LOAD32(2, __toc_start)
21 b entry_c
22
23ENTRY(_prom_entry)
24 LOAD32(2, __toc_start)
25 stwu %r1,-112(%r1)
26 stw %r31,104(%r1)
27 mflr %r31
28 bl prom_entry
29 nop
30 mtlr %r31
31 lwz %r31,104(%r1)
32 addi %r1,%r1,112
33 blr
34
35ENTRY(ci_entry)
36 mr 4,3
37 LOAD32(3,KVMPPC_H_VOF_CLIENT)
38 sc 1
39 blr
40
41
42ENTRY(hv_rtas)
43 mr %r4,%r3
44 LOAD32(3,KVMPPC_H_RTAS)
45 sc 1
46 blr
47 .globl hv_rtas_size
48hv_rtas_size:
49 .long . - hv_rtas;
50