from . import x86 @"Platform" def architecture_support(): """ Config ISA related features """ @flag def arch_x86_32() -> bool: return arch.val == "i386" @flag def arch_x86_64() -> bool: return arch.val == "x86_64" @flag def arch_x86() -> bool: return arch.val in ["x86_64", "i386"] @"Architecture" def arch() -> "i386" | "x86_64": """ Config ISA support """ _arch = env("ARCH") return _arch if _arch else "x86_64" @"Base operand size" @readonly def arch_bits() -> 32 | 64: """ Defines the base size of a general register of the current selected ISA. This the 'bits' part when we are talking about a CPU """ match arch.val: case "i386": return 32 case "aarch64": return 64 case "rv64": return 64 case "x86_64": return 64 case _: return 32