smapi_bios.S revision 115679
1#include <machine/asm.h>
2__FBSDID("$FreeBSD: head/sys/i386/bios/smapi_bios.S 115679 2003-06-02 06:02:49Z obrien $");
3
4#include <machine/asmacros.h>
5
6	.text
7/*
8 * smapi32(input_param, output_param)
9 *	struct smapi_bios_parameter *input_parm;
10 *	struct smapi_bios_parameter *output_parm;
11 */
12ENTRY(smapi32)
13	pushl	%ebp			/* Save frame */
14	movl	%esp,%ebp
15
16	pushl	%ds
17	pushl	0x0c(%ebp)		/* Output Param */
18	pushl	%ds
19	pushl	0x08(%ebp)		/* Input Param */
20
21	movl	$0,%eax			/* Clear EAX (return 0) */
22	movw	%cs,smapi32_segment	/* Save CS */
23	lcall	*(smapi32_offset)
24
25	leave
26	ret
27
28/*
29 * smapi32(offset, segment, input_param, output_param)
30 *	u_int offset;
31 *	u_short segment;
32 *	struct smapi_bios_parameter *input_parm;
33 *	struct smapi_bios_parameter *output_parm;
34 */
35ENTRY(smapi32_new)
36	pushl	%ebp			/* Save frame */
37	movl	%esp,%ebp
38
39	movl	0x08(%ebp),%eax
40	movl	%eax,smapi32_offset
41	movw	0x0c(%ebp),%ax
42	movw	%ax,smapi32_segment
43
44	pushl	%ds
45	pushl	0x20(%ebp)		/* Output Param */
46	pushl	%ds
47	pushl	0x10(%ebp)		/* Input Param */
48
49	movl	$0,%eax
50	movw	%cs,smapi32_segment
51	lcall	*(smapi32_offset)
52
53	leave
54	ret
55