1178476Sjb/* 2178476Sjb * CDDL HEADER START 3178476Sjb * 4178476Sjb * The contents of this file are subject to the terms of the 5178476Sjb * Common Development and Distribution License (the "License"). 6178476Sjb * You may not use this file except in compliance with the License. 7178476Sjb * 8178476Sjb * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9178476Sjb * or http://www.opensolaris.org/os/licensing. 10178476Sjb * See the License for the specific language governing permissions 11178476Sjb * and limitations under the License. 12178476Sjb * 13178476Sjb * When distributing Covered Code, include this CDDL HEADER in each 14178476Sjb * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15178476Sjb * If applicable, add the following below this CDDL HEADER, with the 16178476Sjb * fields enclosed by brackets "[]" replaced with your own identifying 17178476Sjb * information: Portions Copyright [yyyy] [name of copyright owner] 18178476Sjb * 19178476Sjb * CDDL HEADER END 20178476Sjb */ 21178476Sjb 22178476Sjb/* 23178476Sjb * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 24178476Sjb * Use is subject to license terms. 25178476Sjb */ 26178476Sjb 27178476Sjb#pragma ident "%Z%%M% %I% %E% SMI" 28178476Sjb 29178476Sjb#include <sys/asm_linkage.h> 30178476Sjb 31178476Sjb DGDEF(__fsr_init_value) 32178476Sjb .long 0 33178476Sjb 34178476Sjb ENTRY(ret1) 35178476Sjb ret 36178476Sjb SET_SIZE(ret1) 37178476Sjb 38178476Sjb ENTRY(ret2) 39178476Sjb repz 40178476Sjb ret 41178476Sjb SET_SIZE(ret2) 42178476Sjb 43178476Sjb ENTRY(ret3) 44178476Sjb ret $0 45178476Sjb SET_SIZE(ret3) 46178476Sjb 47178476Sjb ENTRY(ret4) 48178476Sjb repz 49178476Sjb ret $0 50178476Sjb SET_SIZE(ret4) 51178476Sjb 52178476Sjb ENTRY(ret5) 53178476Sjb pushl (%esp) 54178476Sjb ret $4 55178476Sjb SET_SIZE(ret5) 56178476Sjb 57178476Sjb ENTRY(ret6) 58178476Sjb pushl (%esp) 59178476Sjb repz 60178476Sjb ret $4 61178476Sjb SET_SIZE(ret6) 62178476Sjb 63178476Sjb ENTRY(waiting) 64178476Sjb pushl %ebp 65178476Sjb movl %esp, %ebp 66178476Sjb movl 8(%ebp), %eax 67178476Sjb movl (%eax), %eax 68178476Sjb movl %ebp, %esp 69178476Sjb popl %ebp 70178476Sjb ret 71178476Sjb SET_SIZE(waiting) 72178476Sjb 73178476Sjb ENTRY(main) 74178476Sjb pushl %ebp 75178476Sjb movl %esp, %ebp 76178476Sjb subl $0x4, %esp 77178476Sjb movl $0x0, -4(%ebp) 78178476Sjb 79178476Sjb1: 80178476Sjb leal -4(%ebp), %eax 81178476Sjb pushl %eax 82178476Sjb call waiting 83178476Sjb addl $0x4, %esp 84178476Sjb 85178476Sjb testl %eax, %eax 86178476Sjb jz 1b 87178476Sjb 88178476Sjb movl %esp, %esi 89178476Sjb 90178476Sjb call ret1 91178476Sjb call ret2 92178476Sjb call ret3 93178476Sjb call ret4 94178476Sjb call ret5 95178476Sjb call ret6 96178476Sjb 97178476Sjb cmpl %esp, %esi 98178476Sjb jne 1f 99178476Sjb 100178476Sjb ALTENTRY(done) 101178476Sjb nop 102178476Sjb SET_SIZE(done) 103178476Sjb 104178476Sjb movl $0, %eax 105178476Sjb movl %ebp, %esp 106178476Sjb popl %ebp 107178476Sjb ret 108178476Sjb 109178476Sjb1: 110178476Sjb movl $1, %eax 111178476Sjb movl %ebp, %esp 112178476Sjb popl %ebp 113178476Sjb ret 114178476Sjb SET_SIZE(main) 115