Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/i386/bios/smapi_bios.S
39482 views
1
#include <machine/asm.h>
2
/*
3
* This is cribbed from the Linux thinkpad-4.1 driver by
4
* Thomas Hood.
5
*/
6
7
smapi32_entry: /* far pointer to SMAPI entry */
8
.globl smapi32_offset
9
smapi32_offset: .long 0x00000000 /* set by caller */
10
smapi32_segment: .word 0x0000 /* %cs stored here */
11
12
.text
13
/*
14
* smapi32(input_param, output_param)
15
* struct smapi_bios_parameter *input_parm;
16
* struct smapi_bios_parameter *output_parm;
17
*
18
* stack frame:
19
* 0x00 : saved ebp
20
* 0x04 : return EIP
21
* 0x08 : input_parm
22
* 0x0c : output_parm
23
*/
24
ENTRY(smapi32)
25
pushl %ebp /* Save frame */
26
movl %esp,%ebp
27
28
pushl %ds
29
pushl 0x0c(%ebp) /* Output Param */
30
pushl %ds
31
pushl 0x08(%ebp) /* Input Param */
32
33
movl $0,%eax /* Clear EAX (return 0) */
34
movw %cs,smapi32_segment /* Save CS */
35
lcall *(smapi32_offset)
36
37
leave
38
ret
39
END(smapi32)
40
41