]> Cypherpunks repositories - gostls13.git/commitdiff
8a, 8l: implement support for RDTSC instruction.
authorShenghou Ma <minux.ma@gmail.com>
Mon, 6 Feb 2012 17:49:28 +0000 (12:49 -0500)
committerRuss Cox <rsc@golang.org>
Mon, 6 Feb 2012 17:49:28 +0000 (12:49 -0500)
        Also modify runtime/asm_386.s to use it.

R=rsc
CC=golang-dev
https://golang.org/cl/5634043

src/cmd/8a/lex.c
src/cmd/8l/8.out.h
src/cmd/8l/optab.c
src/pkg/runtime/asm_386.s

index 403669404e6f833d5fa494c5b57bdc67ed577b4c..254deab6a4d1c21610d7484b05616786b5ac1c6c 100644 (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,
index 5e4b73ad09686ead34199999f06bd8b295179ac6..e8f530664b37b32667c0dfad10fc16513513ab30 100644 (file)
@@ -395,7 +395,9 @@ enum        as
        ACMPXCHGL,
        ACMPXCHGW,
        ACMPXCHG8B,
-       
+
+       ARDTSC,
+
        AXADDB,
        AXADDL,
        AXADDW,
index 69602d704a2c7c0738d2d57c2ab51840f57c74c2..c7700aa792f1619afdad43a92e4ddba4708d1e82 100644 (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 },
index c242af82964c4d934b968b88ba3f486b6a1ff313..a4f94601dc3e645bfd28908fa572edfd3136ebd6 100644 (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)