diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-03-28 19:35:12 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-03-28 19:35:12 +0100 |
commit | 04248c54dc191ae07adac0dca1f4bd37fb11a929 (patch) | |
tree | b715eef62924177e9304f3a8c585ca708abb0b76 /x86_64 | |
parent | 328335176df95e9762cc5e04877cb231b0b2292e (diff) | |
download | gnumach-04248c54dc191ae07adac0dca1f4bd37fb11a929.tar.gz gnumach-04248c54dc191ae07adac0dca1f4bd37fb11a929.tar.bz2 gnumach-04248c54dc191ae07adac0dca1f4bd37fb11a929.zip |
kdasm: Add 64bit variant
* i386/i386at/kdasm.S (start, count, value, from, to): Use B_ARG*
instead of reimplementing them.
* x86_64/kdasm.S: New file.
Diffstat (limited to 'x86_64')
-rw-r--r-- | x86_64/kdasm.S | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/x86_64/kdasm.S b/x86_64/kdasm.S new file mode 100644 index 00000000..4ab4b9be --- /dev/null +++ b/x86_64/kdasm.S @@ -0,0 +1,133 @@ +/* + * Mach Operating System + * Copyright (c) 1991,1990,1989 Carnegie Mellon University + * All Rights Reserved. + * + * Permission to use, copy, modify and distribute this software and its + * documentation is hereby granted, provided that both the copyright + * notice and this permission notice appear in all copies of the + * software, derivative works or modified versions, and any portions + * thereof, and that both notices appear in supporting documentation. + * + * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" + * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR + * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. + * + * Carnegie Mellon requests users of this software to return to + * + * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU + * School of Computer Science + * Carnegie Mellon University + * Pittsburgh PA 15213-3890 + * + * any improvements or extensions that they make and grant Carnegie Mellon + * the rights to redistribute these changes. + */ +/* + * Some inline code to speed up major block copies to and from the + * screen buffer. + * + * Copyright Ing. C. Olivetti & C. S.p.A. 1988, 1989. + * All rights reserved. + * + * orc!eugene 28 Oct 1988 + * + */ +/* + Copyright 1988, 1989 by Olivetti Advanced Technology Center, Inc., +Cupertino, California. + + All Rights Reserved + + Permission to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee is hereby +granted, provided that the above copyright notice appears in all +copies and that both the copyright notice and this permission notice +appear in supporting documentation, and that the name of Olivetti +not be used in advertising or publicity pertaining to distribution +of the software without specific, written prior permission. + + OLIVETTI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, +IN NO EVENT SHALL OLIVETTI BE LIABLE FOR ANY SPECIAL, INDIRECT, OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, +NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUR OF OR IN CONNECTION +WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/* $ Header: $ */ + + +#include <mach/machine/asm.h> + +/* + * Function: kd_slmwd() + * + * This function "slams" a word (char/attr) into the screen memory using + * a block fill operation on the 386. + * + */ + +#define start B_ARG0 +#define count B_ARG1 +#define value %dx // B_ARG2 + +ENTRY(kd_slmwd) + pushq %rbp + movq %rsp, %rbp + + # start already in %rdi + movq count, %rcx + movw value, %ax + cld + rep + stosw + + leave + ret +#undef start +#undef count +#undef value + +/* + * "slam up" + */ + +#define from B_ARG0 +#define to B_ARG1 +#define count %dx // B_ARG2 +ENTRY(kd_slmscu) + pushq %rbp + movq %rsp, %rbp + + xchgq %rsi, %rdi + movq count, %rcx + cmpq %rdi, %rsi + cld + rep + movsw + + leave + ret + +/* + * "slam down" + */ +ENTRY(kd_slmscd) + pushq %rbp + movq %rsp, %rbp + + xchgq %rsi, %rdi + movq count, %rcx + cmpq %rdi, %rsi + std + rep + movsw + cld + + leave + ret +#undef from +#undef to +#undef count |