FreeBSD/Linux Kernel Cross Reference
sys/i386at/kdasm.s
1 /*
2 * Mach Operating System
3 * Copyright (c) 1991,1990,1989 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 */
26 /*
27 * HISTORY
28 * $Log: kdasm.s,v $
29 * Revision 2.7 91/10/07 17:26:05 af
30 * From 2.5: Always set "direction bit" before rep.
31 * ([91/05/03 rvb])
32 * [91/09/04 rvb]
33 *
34 * Revision 2.6 91/05/14 16:28:01 mrt
35 * Correcting copyright
36 *
37 * Revision 2.5 91/02/14 14:43:32 mrt
38 * Follow dbg's lead.
39 * [91/01/15 rvb]
40 *
41 * Revision 2.4 91/02/05 17:19:37 mrt
42 * Changed to new Mach copyright
43 * [91/02/01 17:46:06 mrt]
44 *
45 * Revision 2.3 90/11/26 14:50:39 rvb
46 * jsb bet me to XMK34, sigh ...
47 * [90/11/26 rvb]
48 * Synched 2.5 & 3.0 at I386q (r2.2.1.4) & XMK35 (r2.3)
49 * [90/11/15 rvb]
50 *
51 * Revision 2.2 90/05/03 15:45:07 dbg
52 * First checkin.
53 *
54 * Revision 2.2.1.3 90/02/28 15:50:42 rvb
55 * Fix numerous typo's in Olivetti disclaimer.
56 * [90/02/28 rvb]
57 *
58 * Revision 2.2.1.2 90/01/08 13:30:38 rvb
59 * Add Olivetti copyright.
60 * [90/01/08 rvb]
61 *
62 * Revision 2.2.1.1 89/10/22 11:34:35 rvb
63 * New a.out and coff compatible .s files.
64 * [89/10/16 rvb]
65 *
66 * Revision 2.2 89/04/05 13:02:14 rvb
67 * Converted to real asm file.
68 * [89/03/04 rvb]
69 *
70 * Revision 1.3 89/02/26 12:37:20 gm0w
71 * Changes for cleanup.
72 *
73 */
74
75 /*
76 * Some inline code to speed up major block copies to and from the
77 * screen buffer.
78 *
79 * Copyright Ing. C. Olivetti & C. S.p.A. 1988, 1989.
80 * All rights reserved.
81 *
82 * orc!eugene 28 Oct 1988
83 *
84 */
85 /*
86 Copyright 1988, 1989 by Olivetti Advanced Technology Center, Inc.,
87 Cupertino, California.
88
89 All Rights Reserved
90
91 Permission to use, copy, modify, and distribute this software and
92 its documentation for any purpose and without fee is hereby
93 granted, provided that the above copyright notice appears in all
94 copies and that both the copyright notice and this permission notice
95 appear in supporting documentation, and that the name of Olivetti
96 not be used in advertising or publicity pertaining to distribution
97 of the software without specific, written prior permission.
98
99 OLIVETTI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
100 INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
101 IN NO EVENT SHALL OLIVETTI BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
102 CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
103 LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
104 NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUR OF OR IN CONNECTION
105 WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
106 */
107
108 /* $ Header: $ */
109
110
111 #include <i386/asm.h>
112
113 /*
114 * Function: kd_slmwd()
115 *
116 * This function "slams" a word (char/attr) into the screen memory using
117 * a block fill operation on the 386.
118 *
119 */
120
121 #define start 0x08(%ebp)
122 #define count 0x0c(%ebp)
123 #define value 0x10(%ebp)
124
125 ENTRY(kd_slmwd)
126 pushl %ebp
127 movl %esp, %ebp
128 pushl %edi
129
130 movl start, %edi
131 movl count, %ecx
132 movw value, %ax
133 cld
134 rep
135 stosw
136
137 popl %edi
138 leave
139 ret
140 #undef start
141 #undef count
142 #undef value
143
144 /*
145 * "slam up"
146 */
147
148 #define from 0x08(%ebp)
149 #define to 0x0c(%ebp)
150 #define count 0x10(%ebp)
151 ENTRY(kd_slmscu)
152 pushl %ebp
153 movl %esp, %ebp
154 pushl %esi
155 pushl %edi
156
157 movl from, %esi
158 movl to, %edi
159 movl count, %ecx
160 cmpl %edi, %esi
161 cld
162 rep
163 movsw
164
165 popl %edi
166 popl %esi
167 leave
168 ret
169
170 /*
171 * "slam down"
172 */
173 ENTRY(kd_slmscd)
174 pushl %ebp
175 movl %esp, %ebp
176 pushl %esi
177 pushl %edi
178
179 movl from, %esi
180 movl to, %edi
181 movl count, %ecx
182 cmpl %edi, %esi
183 std
184 rep
185 movsw
186 cld
187
188 popl %edi
189 popl %esi
190 leave
191 ret
192 #undef from
193 #undef to
194 #undef count
Cache object: 31bd8ca15b289346d9b4c19dca8a0c01
|