	.text
.globl gst_cpuid_i386
	.type	 gst_cpuid_i386,@function
gst_cpuid_i386:
	pushl %ebp
	movl %esp,%ebp
	pushl %edi
	pushl %ebx
	pushl %ecx
	pushl %edx
	movl 8(%ebp),%eax
	cpuid
	movl 12(%ebp),%edi
	test %edi,%edi
	jz L1	
	movl %eax,(%edi)
L1:	movl 16(%ebp),%edi
	test %edi,%edi
	jz L2
	movl %ebx,(%edi)
L2:	movl 20(%ebp),%edi
	test %edi,%edi
	jz L3
	movl %ecx,(%edi)
L3:	movl 24(%ebp),%edi
	test %edi,%edi
	jz L4
	movl %edx,(%edi)
L4:	popl %edx
	popl %ecx
	popl %ebx
	popl %edi
	movl %ebp,%esp
	popl %ebp
	ret

/ doesn't work in user mode (MSRs are privileged)
.globl siddisable
siddisable:
	movl 0x119,%ecx
	rdmsr
	orl 0x200000,%eax
	wrmsr
	ret
	
