a78038fd947a8e6a2e2790e75dbe460def55c59d
[lunaix-os.git] / lunaix-os / arch / LConfig
1 from . import x86
2
3 @"Platform"
4 def architecture_support():
5     """
6         Config ISA related features
7     """
8
9     @flag
10     def arch_x86_32() -> bool:
11         when(arch is "i386")
12     
13     @flag
14     def arch_x86_64() -> bool:
15         when(arch is "x86_64")
16     
17     @flag
18     def arch_x86() -> bool:
19         when(arch is "i386")
20         when(arch is "x86_64")
21
22     @"Architecture"
23     def arch() -> "i386" | "x86_64":
24         """ 
25             Config ISA support 
26         """
27
28         match env("ARCH"):
29             case "i386": 
30                 return "i386"
31             case "aarch64": 
32                 return "aarch64"
33             case "rv64": 
34                 return "rv64"
35             case "x86_64": 
36                 return "x86_64"
37
38         print("unknown ARCH:", env("ARCH"), "default to x86_64")
39         return "x86_64"
40
41     @"Base operand size"
42     @readonly
43     def arch_bits() -> 32 | 64:
44         """ 
45             Defines the base size of a general register of the 
46             current selected ISA.
47
48             This the 'bits' part when we are talking about a CPU
49         """
50
51         match arch.val:
52             case "i386": 
53                 return 32
54             case "aarch64": 
55                 return 64
56             case "rv64": 
57                 return 64
58             case "x86_64": 
59                 return 64
60             case _:
61                 return 32
62