1#define _ASM 2#define __ASSEMBLY__ 3#include "macros.h" 4#include "libhvcall.h" 5#include <termctrl.h> 6#include <product.h> 7 8#define HVCALL .long 0x44000022 9 .text 10 .align 3 11 12ENTRY(get_print_banner) 13 LOAD32(r4, print_version) 14 LOAD32(r5, print_version_end) 15 std r4,0(r3) 16 std r5,8(r3) 17 blr 18 19ENTRY(hv_generic) 20 HVCALL 21 blr 22 23/* r3 = char, r4 = hvtermno */ 24ENTRY(hv_putchar) 25 sldi r6,r3,(24+32) 26 li r3,H_PUT_TERM_CHAR 27 li r5,1 28 HVCALL 29 blr 30 31/* r3 = hvtermno */ 32ENTRY(hv_getchar) 33 mflr r10 34 bl .hv_haschar 35 mtlr r10 36 cmpwi cr0,r3,0 37 beqlr 38 lis r9,inbuf@h 39 ori r9,r9,inbuf@l 40 lwz r4,20(r9) 41 lbzx r3,r4,r9 42 addi r4,r4,1 43 stw r4,20(r9) 44 blr 45 46/* r3 = hvtermno */ 47ENTRY(hv_haschar) 48 mr r4,r3 49 li r3,-1 50 lis r9,inbuf@h 51 ori r9,r9,inbuf@l 52 lwz r5,16(r9) 53 lwz r6,20(r9) 54 cmplw cr0,r5,r6 55 bnelr 56 li r3,H_GET_TERM_CHAR 57 HVCALL 58 lis r9,inbuf@h 59 ori r9,r9,inbuf@l 60 stw r4,16(r9) 61 li r3,0 62 stw r3,20(r9) 63 cmplwi cr0,r4,0 64 beqlr 65 li r3,-1 66 std r5,0(r9) 67 std r6,8(r9) 68 blr 69 70ENTRY(hv_send_crq) 71 ld r5,0(r4) 72 ld r6,8(r4) 73 mr r4,r3 74 li r3,H_SEND_CRQ 75 HVCALL 76 blr 77 78ENTRY(hv_send_logical_lan) 79 li r11,0 /* no continue token for now */ 80 mr r10,r9 81 mr r9,r8 82 mr r8,r7 83 mr r7,r6 84 mr r6,r5 85 mr r5,r4 86 mr r4,r3 87 li r3,H_SEND_LOGICAL_LAN 88 HVCALL 89 blr 90 91ENTRY(hv_logical_ci_load) 92 mr r5,r4 93 mr r4,r3 94 li r3,H_LOGICAL_CI_LOAD 95 HVCALL 96 cmpdi cr0,r3,0 97 mr r3,r4 98 beqlr 99 li r3,-1 100 blr 101 102ENTRY(hv_logical_ci_store) 103 mr r6,r5 104 mr r5,r4 105 mr r4,r3 106 li r3,H_LOGICAL_CI_STORE 107 HVCALL 108 blr 109 110ENTRY(hv_logical_memop) 111 mr r8,r7 112 mr r7,r6 113 mr r6,r5 114 mr r5,r4 115 mr r4,r3 116 lis r3,KVMPPC_H_LOGICAL_MEMOP@h 117 ori r3,r3,KVMPPC_H_LOGICAL_MEMOP@l 118 HVCALL 119 blr 120 121ENTRY(hv_cas) 122 mr r6,r5 123 mr r5,r4 124 mr r4,r3 125 lis r3,KVMPPC_H_CAS@h 126 ori r3,r3,KVMPPC_H_CAS@l 127 HVCALL 128 blr 129 130/* This is the actual RTAS blob copied to the OS at instantiate-rtas */ 131ENTRY(hv_rtas) 132 mr r4,r3 133 lis r3,KVMPPC_H_RTAS@h 134 ori r3,r3,KVMPPC_H_RTAS@l 135 HVCALL 136 blr 137 .globl hv_rtas_size 138hv_rtas_size: 139 .long . - hv_rtas; 140 141ENTRY(hv_rtas_broken_sc1) 142 mr r4,r3 143 lis r3,KVMPPC_H_RTAS@h 144 ori r3,r3,KVMPPC_H_RTAS@l 145 .long 0x7c000268 146 blr 147 .globl hv_rtas_broken_sc1_size 148hv_rtas_broken_sc1_size: 149 .long . - hv_rtas_broken_sc1; 150 151 .section ".bss" 152inbuf: .space 16 153inlen: .space 4 154inpos: .space 4 155 .text 156