628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * CDDL HEADER START
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * The contents of this file are subject to the terms of the
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * Common Development and Distribution License (the "License").
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * You may not use this file except in compliance with the License.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * or http://www.opensolaris.org/os/licensing.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * See the License for the specific language governing permissions
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * and limitations under the License.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * When distributing Covered Code, include this CDDL HEADER in each
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * If applicable, add the following below this CDDL HEADER, with the
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * fields enclosed by brackets "[]" replaced with your own identifying
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * information: Portions Copyright [yyyy] [name of copyright owner]
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * CDDL HEADER END
80e2ca8596e3435bc3b76f3c597833ea0a87f85e * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
80e2ca8596e3435bc3b76f3c597833ea0a87f85e * See usr/src/lib/brand/shared/brand/common/brand_util.c for general
80e2ca8596e3435bc3b76f3c597833ea0a87f85e * emulation notes.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * *** sn1 brand emulation scope considerations
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * Given that the sn1 brand exists for testing purposes, it should
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * eventually be enhanced to redirect all system calls through the
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * brand emulation library. This will ensure the maximum testing
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * exposure for the brandz infrastructure. Some other options to
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * consider for improving brandz test exposure are:
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * - Folding the sn1 brand into the native brand and only enabling
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * it on DEBUG builds.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * - Modifying the zones test suite to use sn1 branded zones by default,
80e2ca8596e3435bc3b76f3c597833ea0a87f85e * and adapting functional test harnesses to use sn1 branded zones
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * by default instead of native zones.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz struct utsname un, *unp = (struct utsname *)p1;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz if ((err = __systemcall(rv, SYS_uname + 1024, &un)) != 0)
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz (void) sprintf(un.release, "5.%d", rev - 1);
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz /*NOTREACHED*/
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uintptr_t a0, uintptr_t a1, uintptr_t a2, uintptr_t a3, \
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7) \
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * These are branded system calls, which have been redirected to this
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * userland emulation library, and are emulated by passing them strait
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * on to the kernel as native system calls.
628e3cbed6489fa1db545d8524a06cd6535af456Edward PilatowiczIN_KERNEL_SYSCALL(write, SYS_write) /* 4 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward PilatowiczIN_KERNEL_SYSCALL(getpid, SYS_getpid) /* 20 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward PilatowiczIN_KERNEL_SYSCALL(mount, SYS_mount) /* 21 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward PilatowiczIN_KERNEL_SYSCALL(getuid, SYS_getuid) /* 24 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward PilatowiczIN_KERNEL_SYSCALL(times, SYS_times) /* 43 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward PilatowiczIN_KERNEL_SYSCALL(getgid, SYS_getgid) /* 47 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward PilatowiczIN_KERNEL_SYSCALL(utssys, SYS_utssys) /* 57 */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. FaulknerIN_KERNEL_SYSCALL(waitid, SYS_waitid) /* 107 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * This table must have at least NSYSCALL entries in it.
80e2ca8596e3435bc3b76f3c597833ea0a87f85e * The second parameter of each entry in the brand_sysent_table
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * contains the number of parameters and flags that describe the
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * syscall return value encoding. See the block comments at the
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * top of this file for more information about the syscall return
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * value flags and when they should be used.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#if defined(__sparc) && !defined(__sparcv9)
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#else /* !__sparc || __sparcv9 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#endif /* !__sparc || __sparcv9 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_read, 3 | RV_DEFAULT), /* 3 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_write, 3 | RV_DEFAULT), /* 4 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_time, 0 | RV_DEFAULT), /* 13 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_getpid, 0 | RV_32RVAL2), /* 20 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_mount, 8 | RV_DEFAULT), /* 21 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_getuid, 0 | RV_32RVAL2), /* 24 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_times, 1 | RV_DEFAULT), /* 43 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_getgid, 0 | RV_32RVAL2), /* 47 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz EMULATE(sn1_utssys, 4 | RV_32RVAL2), /* 57 */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner EMULATE(sn1_waitid, 4 | RV_DEFAULT), /* 107 */