9512fe850e98fdd448c638ca63fdd92a8a510255ahl/*
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * CDDL HEADER START
9512fe850e98fdd448c638ca63fdd92a8a510255ahl *
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * The contents of this file are subject to the terms of the
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * Common Development and Distribution License (the "License").
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * You may not use this file except in compliance with the License.
9512fe850e98fdd448c638ca63fdd92a8a510255ahl *
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * or http://www.opensolaris.org/os/licensing.
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * See the License for the specific language governing permissions
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * and limitations under the License.
9512fe850e98fdd448c638ca63fdd92a8a510255ahl *
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * When distributing Covered Code, include this CDDL HEADER in each
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * If applicable, add the following below this CDDL HEADER, with the
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * fields enclosed by brackets "[]" replaced with your own identifying
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * information: Portions Copyright [yyyy] [name of copyright owner]
9512fe850e98fdd448c638ca63fdd92a8a510255ahl *
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * CDDL HEADER END
9512fe850e98fdd448c638ca63fdd92a8a510255ahl */
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl/*
73427c57f824c3ec3b396181b163f37d50c5b3b1ahl * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
9512fe850e98fdd448c638ca63fdd92a8a510255ahl * Use is subject to license terms.
9512fe850e98fdd448c638ca63fdd92a8a510255ahl */
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl#pragma ident "%Z%%M% %I% %E% SMI"
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl#include <sys/asm_linkage.h>
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
73427c57f824c3ec3b396181b163f37d50c5b3b1ahl DGDEF(__fsr_init_value)
73427c57f824c3ec3b396181b163f37d50c5b3b1ahl .long 0
73427c57f824c3ec3b396181b163f37d50c5b3b1ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ENTRY(ret1)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(ret1)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ENTRY(ret2)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl repz
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(ret2)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ENTRY(ret3)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret $0
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(ret3)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ENTRY(ret4)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl repz
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret $0
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(ret4)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ENTRY(ret5)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl pushl (%esp)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret $4
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(ret5)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ENTRY(ret6)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl pushl (%esp)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl repz
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret $4
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(ret6)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ENTRY(waiting)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl pushl %ebp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl %esp, %ebp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl 8(%ebp), %eax
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl (%eax), %eax
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl %ebp, %esp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl popl %ebp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(waiting)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ENTRY(main)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl pushl %ebp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl %esp, %ebp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl subl $0x4, %esp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl $0x0, -4(%ebp)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl1:
9512fe850e98fdd448c638ca63fdd92a8a510255ahl leal -4(%ebp), %eax
9512fe850e98fdd448c638ca63fdd92a8a510255ahl pushl %eax
9512fe850e98fdd448c638ca63fdd92a8a510255ahl call waiting
9512fe850e98fdd448c638ca63fdd92a8a510255ahl addl $0x4, %esp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl testl %eax, %eax
9512fe850e98fdd448c638ca63fdd92a8a510255ahl jz 1b
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl %esp, %esi
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl call ret1
9512fe850e98fdd448c638ca63fdd92a8a510255ahl call ret2
9512fe850e98fdd448c638ca63fdd92a8a510255ahl call ret3
9512fe850e98fdd448c638ca63fdd92a8a510255ahl call ret4
9512fe850e98fdd448c638ca63fdd92a8a510255ahl call ret5
9512fe850e98fdd448c638ca63fdd92a8a510255ahl call ret6
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl cmpl %esp, %esi
9512fe850e98fdd448c638ca63fdd92a8a510255ahl jne 1f
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ALTENTRY(done)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl nop
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(done)
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl $0, %eax
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl %ebp, %esp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl popl %ebp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret
9512fe850e98fdd448c638ca63fdd92a8a510255ahl
9512fe850e98fdd448c638ca63fdd92a8a510255ahl1:
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl $1, %eax
9512fe850e98fdd448c638ca63fdd92a8a510255ahl movl %ebp, %esp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl popl %ebp
9512fe850e98fdd448c638ca63fdd92a8a510255ahl ret
9512fe850e98fdd448c638ca63fdd92a8a510255ahl SET_SIZE(main)