1
0
mirror of https://github.com/golang/go synced 2024-11-24 23:17:57 -07:00

8a, 8l: implement support for RDTSC instruction.

Also modify runtime/asm_386.s to use it.

R=rsc
CC=golang-dev
https://golang.org/cl/5634043
This commit is contained in:
Shenghou Ma 2012-02-06 12:49:28 -05:00 committed by Russ Cox
parent 7ac03695f8
commit 6392b43a15
4 changed files with 7 additions and 2 deletions

View File

@ -445,6 +445,7 @@ struct
"RCRB", LTYPE3, ARCRB,
"RCRL", LTYPE3, ARCRL,
"RCRW", LTYPE3, ARCRW,
"RDTSC", LTYPE0, ARDTSC,
"REP", LTYPE0, AREP,
"REPN", LTYPE0, AREPN,
"RET", LTYPE0, ARET,

View File

@ -396,6 +396,8 @@ enum as
ACMPXCHGW,
ACMPXCHG8B,
ARDTSC,
AXADDB,
AXADDL,
AXADDW,

View File

@ -707,6 +707,8 @@ Optab optab[] =
{ ACMPXCHGW, yrl_ml, Pm, 0xb1 },
{ ACMPXCHG8B, yscond, Pm, 0xc7,(01) },
{ ARDTSC, ynone, Pm, 0x31 },
{ AXADDB, yrb_mb, Pb, 0x0f,0xc0 },
{ AXADDL, yrl_ml, Pm, 0xc1 },
{ AXADDW, yrl_ml, Pe, 0x0f,0xc1 },

View File

@ -527,7 +527,7 @@ TEXT runtime·getcallersp(SB), 7, $0
// int64 runtime·cputicks(void), so really
// void runtime·cputicks(int64 *ticks)
TEXT runtime·cputicks(SB),7,$0
BYTE $0x0F; BYTE $0x31; // RDTSC; not supported by 8a
RDTSC
MOVL ret+0(FP), DI
MOVL AX, 0(DI)
MOVL DX, 4(DI)