.text .globl smi smi: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx movl 8(%ebp),%eax movl 12(%ebp),%ebx movl 16(%ebp),%ecx inb $0x0b2,%al /* invoke SMI */ popl %edx popl %ecx popl %ebx movl %ebp,%esp popl %ebp ret .globl smi2 smi2: pushl %ebp movl %esp,%ebp pushl %ebx pushl %ecx pushl %edx movl 8(%ebp),%eax movl 12(%ebp),%ebx inb $0x0b2,%al /* invoke SMI */ movl 16(%ebp),%ebx movw %cx,(%ebx) /* return value */ popl %edx popl %ecx popl %ebx movl %ebp,%esp popl %ebp ret .end