OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [pa/] [op50n-io.S] - Blame information for rev 853

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 148 jeremybenn
/* op50n-io.S -- low-level I/O routines for the Oki OP50N eval board.
2
 *
3
 * Copyright (c) 1995 Cygnus Support
4
 *
5
 * The authors hereby grant permission to use, copy, modify, distribute,
6
 * and license this software and its documentation for any purpose, provided
7
 * that existing copyright notices are retained in all copies and that this
8
 * notice is included verbatim in any distributions. No written agreement,
9
 * license, or royalty fee is required for any of the authorized uses.
10
 * Modifications to this software may be copyrighted by their authors
11
 * and need not follow the licensing terms described here, provided that
12
 * the new terms are clearly indicated on the first page of each file where
13
 * they apply.
14
 */
15
 
16
mon_start       .EQU    0xd0000000
17
where_dp        .EQU    mon_start+4*4
18
where_ci        .EQU    mon_start+14*4
19
where_co        .EQU    mon_start+15*4
20
where_read      .EQU    mon_start+22*4
21
where_write     .EQU    mon_start+23*4
22
 
23
/*
24
 *int c = inbyte(wait);
25
 */
26
        .space $TEXT$
27
        .align 4
28
        .EXPORT inbyte,CODE,ARGW0=GR,RTNVAL=GR
29
inbyte
30
        .PROC
31
        .CALLINFO CALLER,FRAME=64,SAVE_RP
32
        .ENTRY
33
        stw     %r2,-20(0,%r30)
34
        ldo     64(%r30),%r30
35
        stw     %r27,-56(0,%r30)        ; save my dp
36
        ldil    l%where_dp,%r27         ; load monitors dp
37
        ldw     r%where_dp(0,%r27),%r27
38
        ldil    l%where_ci,%r1
39
        ldw     r%where_ci(0,%r1),%r1
40
        ble     0(0,%r1)
41
        copy    %r31,%r2
42
        ldw     -56(0,%r30),%r27        ; load my dp
43
        ldw     -84(0,%r30),%r2
44
        ldo     -64(%r30),%r30
45
        bv      %r0(%r2)
46
        nop
47
        .EXIT
48
        .PROCEND
49
 
50
/* int c = outbyte(c);
51
*/
52
        .EXPORT outbyte,CODE,ARGW0=GR,RTNVAL=GR
53
outbyte
54
        .PROC
55
        .CALLINFO CALLER,FRAME=64,SAVE_RP
56
        .ENTRY
57
        stw     %r2,-20(0,%r30)
58
        ldo     64(%r30),%r30
59
        stw     %r27,-56(0,%r30)        ; save my dp
60
        ldil    l%where_dp,%r27         ; load monitors dp
61
        ldw     r%where_dp(0,%r27),%r27
62
        ldil    l%where_co,%r1
63
        ldw     r%where_co(0,%r1),%r1
64
        ble     0(0,%r1)
65
        copy    %r31,%r2
66
        ldw     -56(0,%r30),%r27        ; load my dp
67
        ldw     -84(0,%r30),%r2
68
        ldo     -64(%r30),%r30
69
        bv      %r0(%r2)
70
        nop
71
        .EXIT
72
        .PROCEND
73
 
74
#if 0
75
/* cnt = read(fd, bufp, cnt);
76
*/
77
        .EXPORT read,CODE,ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO,RTNVAL=NO
78
read
79
        .PROC
80
        .CALLINFO FRAME=64,CALLS,SAVE_RP
81
        .ENTRY
82
        stw     %r2,-20(0,%r30)
83
        ldo     64(%r30),%r30
84
        stw     %dp,-56(0,%r30) ; save my dp
85
        ldil    l%where_dp,%dp  ; load monitors dp
86
        ldw     r%where_dp(0,%dp), %dp
87
        ldil    l%where_read,%r1
88
        ldw     r%where_read(0,%r1), %r1
89
        ble     0(0,%r1)
90
        copy    %r31,%r2
91
        ldw     -56(0,%r30),%dp ; load my dp
92
        ldw     -84(0,%r30),%r2
93
        bv      %r0(%r2)
94
        ldo     -64(%r30),%r30
95
        .EXIT
96
        .PROCEND
97
 
98
/* cnt = write(fd, bufp, cnt);
99
*/
100
        .EXPORT write,CODE,ARGW0=NO,ARGW1=NO,ARGW2=NO,ARGW3=NO,RTNVAL=NO
101
write
102
        .PROC
103
        .CALLINFO FRAME=64,CALLS,SAVE_RP
104
        .ENTRY
105
        stw     %r2,-20(0,%r30)
106
        ldo     64(%r30),%r30
107
        stw     %dp,-56(0,%r30) ; save my dp
108
        ldil    l%where_dp,%dp  ; load monitors dp
109
        ldw     r%where_dp(0,%dp), %dp
110
        ldil    l%where_write,%r1
111
        ldw     r%where_write(0,%r1), %r1
112
        ble     0(0,%r1)
113
        copy    %r31,%r2
114
        ldw     -56(0,%r30),%dp ; load my dp
115
        ldw     -84(0,%r30),%r2
116
        bv      %r0(%r2)
117
        ldo     -64(%r30),%r30
118
        .EXIT
119
        .PROCEND
120
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.