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