28 lines
		
	
	
		
			602 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			602 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
|   | // Copyright 2018 The Go Authors. All rights reserved. | ||
|  | // Use of this source code is governed by a BSD-style | ||
|  | // license that can be found in the LICENSE file. | ||
|  | 
 | ||
|  | // +build 386 amd64 amd64p32 | ||
|  | // +build !gccgo | ||
|  | 
 | ||
|  | #include "textflag.h" | ||
|  | 
 | ||
|  | // func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) | ||
|  | TEXT ·cpuid(SB), NOSPLIT, $0-24 | ||
|  | 	MOVL eaxArg+0(FP), AX | ||
|  | 	MOVL ecxArg+4(FP), CX | ||
|  | 	CPUID | ||
|  | 	MOVL AX, eax+8(FP) | ||
|  | 	MOVL BX, ebx+12(FP) | ||
|  | 	MOVL CX, ecx+16(FP) | ||
|  | 	MOVL DX, edx+20(FP) | ||
|  | 	RET | ||
|  | 
 | ||
|  | // func xgetbv() (eax, edx uint32) | ||
|  | TEXT ·xgetbv(SB),NOSPLIT,$0-8 | ||
|  | 	MOVL $0, CX | ||
|  | 	XGETBV | ||
|  | 	MOVL AX, eax+0(FP) | ||
|  | 	MOVL DX, edx+4(FP) | ||
|  | 	RET |