1/* 2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 /* 29 * @OSF_COPYRIGHT@ 30 */ 31/* 32 * Mach Operating System 33 * Copyright (c) 1991,1990 Carnegie Mellon University 34 * All Rights Reserved. 35 * 36 * Permission to use, copy, modify and distribute this software and its 37 * documentation is hereby granted, provided that both the copyright 38 * notice and this permission notice appear in all copies of the 39 * software, derivative works or modified versions, and any portions 40 * thereof, and that both notices appear in supporting documentation. 41 * 42 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 43 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 44 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 45 * 46 * Carnegie Mellon requests users of this software to return to 47 * 48 * Software Distribution Coordinator or [email protected] 49 * School of Computer Science 50 * Carnegie Mellon University 51 * Pittsburgh PA 15213-3890 52 * 53 * any improvements or extensions that they make and grant Carnegie Mellon 54 * the rights to redistribute these changes. 55 */ 56/* 57 */ 58 59#include <i386/asm.h> 60 61/* 62 * void *secure_memset(void * addr, int pattern, size_t length) 63 * 64 * It is important that this function remains defined in assembly to avoid 65 * compiler optimizations. 66 */ 67ENTRY(secure_memset) 68/* 69 * void *memset(void * addr, int pattern, size_t length) 70 */ 71/* TODO: add variants for use with non-cacheable ranges */ 72ENTRY(memset) 73 movq %rdi, %r8 74 movq %rsi, %rax /* move pattern (arg2) to rax */ 75 movq %rdx, %rcx /* mov bytes */ 76 cld /* reset direction flag */ 77 rep 78 stosb 79 movq %r8 ,%rax /* returns its first argument */ 80 ret 81 82/* 83 * void *memset_word(void * addr, int pattern, size_t length) 84 */ 85 86ENTRY(memset_word) 87 movq %rdi, %r8 88 movq %rsi, %rax /* move pattern (arg2) to rax */ 89 mov %eax, %ecx 90 shlq $32,%rax 91 orq %rcx, %rax 92 cld /* reset direction flag */ 93 movq %rdx, %rcx /* mov quads first */ 94 shrq $1, %rcx 95 rep 96 stosq 97 movq %rdx,%rcx /* if necessary, mov 32 bit word */ 98 andq $1,%rcx 99 rep 100 stosl 101 movq %r8 ,%rax /* returns its first argument */ 102 ret 103 104/* 105 * void bzero(char * addr, size_t length) 106 */ 107Entry(blkclr) 108ENTRY2(bzero,__bzero) 109 movq %rsi,%rcx 110 xor %eax,%eax 111 cld 112 rep 113 stosb 114 ret 115