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