...
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: "crc32", Feature: &Loong64.HasCRC32},
31 {Name: "lamcas", Feature: &Loong64.HasLAMCAS},
32 {Name: "lam_bh", Feature: &Loong64.HasLAM_BH},
33 }
34
35
36
37
38
39
40
41
42 cfg1 := get_cpucfg(1)
43 cfg2 := get_cpucfg(2)
44
45 Loong64.HasCRC32 = cfgIsSet(cfg1, cpucfg1_CRC32)
46 Loong64.HasLAMCAS = cfgIsSet(cfg2, cpucfg2_LAM_BH)
47 Loong64.HasLAM_BH = cfgIsSet(cfg2, cpucfg2_LAMCAS)
48
49 osInit()
50 }
51
52 func cfgIsSet(cfg uint32, val uint32) bool {
53 return cfg&val != 0
54 }
55
View as plain text