...
Source file
src/internal/cpu/cpu_loong64.go
1
2
3
4
5
6
7 package cpu
8
9
10
11 const CacheLinePadSize = 64
12
13
14
15 const (
16
17 cpucfg1_CRC32 = 1 << 25
18
19
20 cpucfg2_LAM_BH = 1 << 27
21 cpucfg2_LAMCAS = 1 << 28
22 )
23
24
25 func get_cpucfg(reg uint32) uint32
26
27 func doinit() {
28 options = []option{
29 {Name: "lsx", Feature: &Loong64.HasLSX},
30 {Name: "lasx", Feature: &Loong64.HasLASX},
31 {Name: "crc32", Feature: &Loong64.HasCRC32},
32 {Name: "lamcas", Feature: &Loong64.HasLAMCAS},
33 {Name: "lam_bh", Feature: &Loong64.HasLAM_BH},
34 }
35
36
37
38
39
40
41
42
43 cfg1 := get_cpucfg(1)
44 cfg2 := get_cpucfg(2)
45
46 Loong64.HasCRC32 = cfgIsSet(cfg1, cpucfg1_CRC32)
47 Loong64.HasLAMCAS = cfgIsSet(cfg2, cpucfg2_LAMCAS)
48 Loong64.HasLAM_BH = cfgIsSet(cfg2, cpucfg2_LAM_BH)
49
50 osInit()
51 }
52
53 func cfgIsSet(cfg uint32, val uint32) bool {
54 return cfg&val != 0
55 }
56
View as plain text