romcalls.S revision 1.5 1 /* $NetBSD: romcalls.S,v 1.5 2003/04/18 18:52:27 tsutsui Exp $ */
2
3 /*-
4 * Copyright (C) 1999 Tsubai Masanari. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #include <mips/asm.h>
30 #include <mips/cpuregs.h>
31 #include <machine/romcall.h>
32
33 .text
34 .align 2
35 .set noreorder
36
37 LEAF_NOPROFILE(rom_halt)
38 addu sp, sp, -16
39 li a0, 8 # RB_HALT
40 sw a0, 0(sp)
41 li a0, SYS_reboot
42 move a1, sp
43 syscall
44 nop
45 END(rom_halt)
46
47 LEAF_NOPROFILE(rom_open)
48 addu sp, sp, -32
49 sw ra, 28(sp)
50
51 sw a0, 16(sp)
52 sw a1, 20(sp)
53
54 li a0, SYS_open
55 addu a1, sp, 16
56 syscall
57 nop
58
59 lw ra, 28(sp)
60 addu sp, sp, 32
61 j ra
62 nop
63 END(rom_open)
64
65 LEAF_NOPROFILE(rom_close)
66 addu sp, sp, -32
67 sw ra, 28(sp)
68
69 sw a0, 16(sp)
70
71 li a0, SYS_close
72 addu a1, sp, 16
73 syscall
74 nop
75
76 lw ra, 28(sp)
77 addu sp, sp, 32
78 j ra
79 nop
80 END(rom_close)
81
82 LEAF_NOPROFILE(rom_read)
83 addu sp, sp, -32
84 sw ra, 28(sp)
85
86 sw a0, 16(sp)
87 sw a1, 20(sp)
88 sw a2, 24(sp)
89
90 li a0, SYS_read
91 addu a1, sp, 16
92 syscall
93 nop
94
95 lw ra, 28(sp)
96 addu sp, sp, 32
97 j ra
98 nop
99 END(rom_read)
100
101 LEAF_NOPROFILE(rom_write)
102 addu sp, sp, -32
103 sw ra, 28(sp)
104
105 sw a0, 16(sp)
106 sw a1, 20(sp)
107 sw a2, 24(sp)
108
109 li a0, SYS_write
110 addu a1, sp, 16
111 syscall
112 nop
113
114 lw ra, 28(sp)
115 addu sp, sp, 32
116 j ra
117 nop
118 END(rom_write)
119
120 LEAF_NOPROFILE(rom_lseek)
121 addu sp, sp, -32
122 sw ra, 28(sp)
123
124 sw a0, 16(sp)
125 sw a1, 20(sp)
126 sw a2, 24(sp)
127
128 li a0, SYS_lseek
129 addu a1, sp, 16
130 syscall
131 nop
132
133 lw ra, 28(sp)
134 addu sp, sp, 32
135 j ra
136 nop
137 END(rom_lseek)
138
139 LEAF_NOPROFILE(rom_ioctl)
140 addu sp, sp, -32
141 sw ra, 28(sp)
142
143 sw a0, 16(sp)
144 sw a1, 20(sp)
145 sw a2, 24(sp)
146
147 li a0, SYS_ioctl
148 addu a1, sp, 16
149 syscall
150 nop
151
152 lw ra, 28(sp)
153 addu sp, sp, 32
154 j ra
155 nop
156 END(rom_ioctl)
157