50 lines
957 B
ArmAsm
50 lines
957 B
ArmAsm
|
#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;
|