#define LOAD32(rn, name) \ | |
lis rn,name##@h; \ | |
ori rn,rn,name##@l | |
#define ENTRY(func_name) \ | |
.text; \ | |
.align 2; \ | |
.globl .func_name; \ | |
.func_name: \ | |
.globl func_name; \ | |
func_name: | |
#define KVMPPC_HCALL_BASE 0xf000 | |
#define KVMPPC_H_RTAS (KVMPPC_HCALL_BASE + 0x0) | |
#define KVMPPC_H_VOF_CLIENT (KVMPPC_HCALL_BASE + 0x5) | |
. = 0x100 /* Do exactly as SLOF does */ | |
ENTRY(_start) | |
LOAD32(2, __toc_start) | |
b entry_c | |
ENTRY(_prom_entry) | |
LOAD32(2, __toc_start) | |
stwu %r1,-112(%r1) | |
stw %r31,104(%r1) | |
mflr %r31 | |
bl prom_entry | |
nop | |
mtlr %r31 | |
lwz %r31,104(%r1) | |
addi %r1,%r1,112 | |
blr | |
ENTRY(ci_entry) | |
mr 4,3 | |
LOAD32(3,KVMPPC_H_VOF_CLIENT) | |
sc 1 | |
blr | |
/* This is the actual RTAS blob copied to the OS at instantiate-rtas */ | |
ENTRY(hv_rtas) | |
mr %r4,%r3 | |
LOAD32(3,KVMPPC_H_RTAS) | |
sc 1 | |
blr | |
.globl hv_rtas_size | |
hv_rtas_size: | |
.long . - hv_rtas; |