#define _ASM #define __ASSEMBLY__ #include "macros.h" #include "libhvcall.h" #include #include #define HVCALL .long 0x44000022 .text .align 3 ENTRY(get_print_banner) LOAD32(r4, print_version) LOAD32(r5, print_version_end) std r4,0(r3) std r5,8(r3) blr ENTRY(hv_generic) HVCALL blr /* r3 = char, r4 = hvtermno */ ENTRY(hv_putchar) sldi r6,r3,(24+32) li r3,H_PUT_TERM_CHAR li r5,1 HVCALL blr /* r3 = hvtermno */ ENTRY(hv_getchar) mflr r10 bl .hv_haschar mtlr r10 cmpwi cr0,r3,0 beqlr lis r9,inbuf@h ori r9,r9,inbuf@l lwz r4,20(r9) lbzx r3,r4,r9 addi r4,r4,1 stw r4,20(r9) blr /* r3 = hvtermno */ ENTRY(hv_haschar) mr r4,r3 li r3,-1 lis r9,inbuf@h ori r9,r9,inbuf@l lwz r5,16(r9) lwz r6,20(r9) cmplw cr0,r5,r6 bnelr li r3,H_GET_TERM_CHAR HVCALL lis r9,inbuf@h ori r9,r9,inbuf@l stw r4,16(r9) li r3,0 stw r3,20(r9) cmplwi cr0,r4,0 beqlr li r3,-1 std r5,0(r9) std r6,8(r9) blr ENTRY(hv_send_crq) ld r5,0(r4) ld r6,8(r4) mr r4,r3 li r3,H_SEND_CRQ HVCALL blr ENTRY(hv_send_logical_lan) li r11,0 /* no continue token for now */ mr r10,r9 mr r9,r8 mr r8,r7 mr r7,r6 mr r6,r5 mr r5,r4 mr r4,r3 li r3,H_SEND_LOGICAL_LAN HVCALL blr ENTRY(hv_logical_ci_load) mr r5,r4 mr r4,r3 li r3,H_LOGICAL_CI_LOAD HVCALL cmpdi cr0,r3,0 mr r3,r4 beqlr li r3,-1 blr ENTRY(hv_logical_ci_store) mr r6,r5 mr r5,r4 mr r4,r3 li r3,H_LOGICAL_CI_STORE HVCALL blr ENTRY(hv_logical_memop) mr r8,r7 mr r7,r6 mr r6,r5 mr r5,r4 mr r4,r3 lis r3,KVMPPC_H_LOGICAL_MEMOP@h ori r3,r3,KVMPPC_H_LOGICAL_MEMOP@l HVCALL blr ENTRY(hv_cas) mr r6,r5 mr r5,r4 mr r4,r3 lis r3,KVMPPC_H_CAS@h ori r3,r3,KVMPPC_H_CAS@l HVCALL blr .section ".bss" inbuf: .space 16 inlen: .space 4 inpos: .space 4 .text