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