usr/src/lib/libtnfctl/i386_assm.s
author Mark J. Nelson <Mark.J.Nelson@Sun.COM>
Wed, 06 Aug 2008 16:29:39 -0600
changeset 7298 b69e27387f74
parent 0 68f95e015346
permissions -rw-r--r--
6733918 Teamware has retired, please welcome your new manager, Mercurial 4758439 some files use "current date" sccs keywords 6560843 asm sources should not rely on .file "%M%" for naming STT_FILE symbols 6560958 Solaris:: perl modules should not use SCCS keywords in version information 6729074 webrev doesn't deal well with remote ssh hg parents
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
7298
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 0
diff changeset
     6
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
 * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
 * The following c routine has appropriate interface semantics
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
 * for the chaining combination template.  On the sparc architecture
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
 * the assembly routine is further tuned to make it tail recursive.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
 * void
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
 * prb_chain_entry(void *a, void *b, void *c)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
 * {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
 * 	prb_chain_down(a, b, c);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
 * 	prb_chain_next(a, b, c);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
 * }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
7298
b69e27387f74 6733918 Teamware has retired, please welcome your new manager, Mercurial
Mark J. Nelson <Mark.J.Nelson@Sun.COM>
parents: 0
diff changeset
    39
	.file	"i386_assm.s"
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
	.data
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
	.align	4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
	.globl	prb_callinfo
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
prb_callinfo:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
	.4byte	1		/* offset */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
	.4byte	0		/* shift right */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
	.4byte	0xffffffff	/* mask */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
	.text
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
	.align	4
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
	.globl	prb_chain_entry
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
	.globl	prb_chain_down
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
	.local	chain_down
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
	.globl	prb_chain_next
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
	.local	chain_next
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
	.globl	prb_chain_end
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
prb_chain_entry:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
#if defined(__amd64)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
	/* XX64 -- fix me */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
	pushl	%ebp
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
	movl	%esp, %ebp
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
	pushl	%edi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
	pushl	%esi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
	pushl	%ebx
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
	movl	16(%ebp), %ebx
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
	pushl	%ebx
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
	movl	12(%ebp), %edi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
	pushl	%edi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
	movl	8(%ebp), %esi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
	pushl	%esi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
prb_chain_down:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
chain_down:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
#if defined(__amd64)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
	/* XX64 -- fix me */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
	call	chain_down
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
	addl	$12, %esp
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
	pushl	%ebx
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
	pushl	%edi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
	pushl	%esi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
prb_chain_next:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
chain_next:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
#if defined(__amd64)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
	/* XX64 -- fix me */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
	call	chain_next
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
	addl	$12, %esp
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
	popl	%ebx
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
	popl	%esi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
	popl	%edi
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
	leave
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
	ret
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
prb_chain_end:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
	nop