@@ -46,29 +46,34 @@ macro(add_default_compilation_options)
46
46
47
47
if (KernelArchX86)
48
48
add_compile_options (-mtls-direct-seg-refs)
49
- endif ()
50
49
51
- if (KernelSel4ArchAarch32)
52
- add_compile_options (-mtp=soft)
53
- endif ()
50
+ elseif (KernelArchARM)
51
+ if (KernelSel4ArchAarch32)
52
+ add_compile_options (-mtp=soft -mno-unaligned-access)
53
+ elseif (KernelSel4ArchAarch64)
54
+ # Don't allow unaligned data store/load instructions, This will
55
+ # cause an alignment fault on any uncached seL4 memory regions,
56
+ # because the kernel enabled alignment checks inm the mapping
57
+ # attributes.
58
+ add_compile_options (-mstrict-align)
54
59
55
- # Don't allow unaligned data store/load instructions as this will cause an alignment
56
- # fault on any seL4 memory regions that are uncached as the mapping attributes the kernel
57
- # uses causes alignment checks to be enabled.
58
- if (KernelSel4ArchAarch64)
59
- add_compile_options (-mstrict-align)
60
- if (NOT CMAKE_C_COMPILER_VERSION)
61
- message (FATAL_ERROR "CMAKE_C_COMPILER_VERSION is not set" )
62
- endif ()
63
- # special handling for GCC 10 and above
64
- if (
65
- (CMAKE_C_COMPILER_ID STREQUAL "GNU" )
66
- AND (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "10.0.0" )
67
- )
68
- add_compile_options (-mno-outline-atomics)
60
+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU" )
61
+ if (NOT CMAKE_C_COMPILER_VERSION)
62
+ message (FATAL_ERROR "CMAKE_C_COMPILER_VERSION is not set" )
63
+ elseif (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "10.0.0" )
64
+ # special handling for GCC 10 and above
65
+ add_compile_options (-mno-outline-atomics)
66
+ endif ()
67
+ endif ()
68
+ else ()
69
+ message (FATAL_ERROR "unknown ARM KernelSel4Arch '${KernelSel4Arch} '" )
69
70
endif ()
70
- elseif (KernelSel4ArchAarch32)
71
- add_compile_options (-mno-unaligned-access)
71
+
72
+ elseif (KernelArchRiscV)
73
+ # nothing special
74
+
75
+ else ()
76
+ message (FATAL_ERROR "unknown KernelArch '${KernelArch} '" )
72
77
endif ()
73
78
endmacro ()
74
79
0 commit comments