2N/A * The contents of this file are subject to the terms of the 2N/A * Common Development and Distribution License (the "License"). 2N/A * You may not use this file except in compliance with the License. 2N/A * See the License for the specific language governing permissions 2N/A * and limitations under the License. 2N/A * When distributing Covered Code, include this CDDL HEADER in each 2N/A * If applicable, add the following below this CDDL HEADER, with the 2N/A * fields enclosed by brackets "[]" replaced with your own identifying 2N/A * information: Portions Copyright [yyyy] [name of copyright owner] 2N/A * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 2N/A * Use is subject to license terms. 2N/A * Set an array of n chars starting at sp to the character c. 2N/A * Fast assembler language version of the following C-program for memset 2N/A * which represents the `standard' for the C-library. 2N/A * memset(void *sp1, int c, size_t n) 2N/A * } while (--n != 0); 2N/A * For small stores (6 or fewer bytes), bytes will be stored one at a time. 2N/A * When setting 15 or more bytes, there will be at least 8 bytes aligned 2N/A * on an 8-byte boundary. So, leading bytes will be set, then as many 2N/A * 8-byte aligned chunks as possible will be set, followed by any trailing 2N/A * For between 8 and 14 bytes (inclusive), leading odd bytes will be 2N/A * set, followed by 4-byte chunks, followed by trailing bytes. 2N/A * o0: pointer to start of area to be set to a given value 2N/A * o1: character used to set memory at location in i0 2N/A * o2: number of bytes to be set 2N/A * o0: pointer to start of area set (same as input value in o0)