entry.S (957B)
1 #define LOAD32(rn, name) \ 2 lis rn,name##@h; \ 3 ori rn,rn,name##@l 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 /* Do exactly as SLOF does */ 18 19 ENTRY(_start) 20 LOAD32(2, __toc_start) 21 b entry_c 22 23 ENTRY(_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 35 ENTRY(ci_entry) 36 mr 4,3 37 LOAD32(3,KVMPPC_H_VOF_CLIENT) 38 sc 1 39 blr 40 41 /* This is the actual RTAS blob copied to the OS at instantiate-rtas */ 42 ENTRY(hv_rtas) 43 mr %r4,%r3 44 LOAD32(3,KVMPPC_H_RTAS) 45 sc 1 46 blr 47 .globl hv_rtas_size 48 hv_rtas_size: 49 .long . - hv_rtas;