#define RDTSCP WORD $0x010f; BYTE $0xf9 TEXT tstart(SB), 1, $0 CPUID RDTSC MOVL AX, 0(RARG) MOVL DX, 4(RARG) RET TEXT _tend(SB), 1, $0 /* it needs MOVL CR0, AX; MOV AX, CR0 but it's userspace */ RDTSC MOVL AX, 0(RARG) MOVL DX, 4(RARG) CPUID RET TEXT _tendp(SB), 1, $0 RDTSCP MOVL AX, 0(RARG) MOVL DX, 4(RARG) CPUID RET TEXT cpuid(SB), 1, $0 MOVL ax+8(FP), AX MOVL cx+16(FP), CX CPUID MOVL AX, 0(BP) MOVL BX, 4(BP) MOVL CX, 8(BP) MOVL DX, 12(BP) RET
#define RDTSCP WORD $0x010f; BYTE $0xf9
TEXT tstart(SB), 1, $0
CPUID
RDTSC
MOVL AX, 0(RARG)
MOVL DX, 4(RARG)
RET
TEXT _tend(SB), 1, $0
/* it needs MOVL CR0, AX; MOV AX, CR0 but it's userspace */
RDTSC
MOVL AX, 0(RARG)
MOVL DX, 4(RARG)
CPUID
RET
TEXT _tendp(SB), 1, $0
RDTSCP
MOVL AX, 0(RARG)
MOVL DX, 4(RARG)
CPUID
RET
TEXT cpuid(SB), 1, $0
MOVL ax+8(FP), AX
MOVL cx+16(FP), CX
CPUID
MOVL AX, 0(BP)
MOVL BX, 4(BP)
MOVL CX, 8(BP)
MOVL DX, 12(BP)
RET