~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/SLOF/lib/libhvcall/hvcall.S

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
12
ENTRY(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
 
 
19
ENTRY(hv_generic)
 
20
        HVCALL
 
21
        blr
 
22
 
 
23
/* r3 = char, r4 = hvtermno */
 
24
ENTRY(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 */
 
32
ENTRY(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 */
 
47
ENTRY(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
 
 
70
ENTRY(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
 
 
78
ENTRY(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
 
 
91
ENTRY(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
 
 
102
ENTRY(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
 
 
110
ENTRY(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
 
 
121
ENTRY(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
        .section ".bss"
 
131
inbuf:  .space  16
 
132
inlen:  .space  4
 
133
inpos:  .space  4
 
134
        .text