@@ -245,21 +245,54 @@ void RISCVTargetInfo::getTargetDefines(const LangOptions &Opts,
245245 }
246246
247247 // Macros for use with the set and get permissions builtins.
248- Builder.defineMacro (" __CHERI_CAP_PERMISSION_GLOBAL__" , Twine (1 <<0 ));
249- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_EXECUTE__" ,
250- Twine (1 <<1 ));
251- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_LOAD__" , Twine (1 <<2 ));
252- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_STORE__" , Twine (1 <<3 ));
253- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_LOAD_CAPABILITY__" ,
254- Twine (1 <<4 ));
255- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_STORE_CAPABILITY__" ,
256- Twine (1 <<5 ));
257- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_STORE_LOCAL__" ,
258- Twine (1 <<6 ));
259- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_SEAL__" , Twine (1 <<7 ));
260- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_INVOKE__" , Twine (1 <<8 ));
261- Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_UNSEAL__" , Twine (1 <<9 ));
262- Builder.defineMacro (" __CHERI_CAP_PERMISSION_ACCESS_SYSTEM_REGISTERS__" , Twine (1 <<10 ));
248+ if (getTriple ().getSubArch () == llvm::Triple::RISCV32SubArch_cheriot_v1) {
249+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_GLOBAL__" , Twine (1 << 0 ));
250+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_LOAD_GLOBAL__" ,
251+ Twine (1 << 1 ));
252+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_STORE__" ,
253+ Twine (1 << 2 ));
254+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_LOAD_MUTABLE__" ,
255+ Twine (1 << 3 ));
256+ Builder.defineMacro (
257+ " __CHERI_CAP_PERMISSION_PERMIT_STORE_LOCAL_CAPABILITY__" ,
258+ Twine (1 << 4 ));
259+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_LOAD__" ,
260+ Twine (1 << 5 ));
261+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_STORE_CAPABILITY__" ,
262+ Twine (1 << 6 ));
263+ Builder.defineMacro (
264+ " __CHERI_CAP_PERMISSION_PERMIT_ACCESS_SYSTEM_REGISTERS__" ,
265+ Twine (1 << 7 ));
266+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_EXECUTE__" ,
267+ Twine (1 << 8 ));
268+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_UNSEAL__" ,
269+ Twine (1 << 9 ));
270+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_SEAL__" ,
271+ Twine (1 << 10 ));
272+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_USER_PERM0" , Twine (1 << 11 ));
273+ } else {
274+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_GLOBAL__" , Twine (1 << 0 ));
275+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_EXECUTE__" ,
276+ Twine (1 << 1 ));
277+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_LOAD__" ,
278+ Twine (1 << 2 ));
279+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_STORE__" ,
280+ Twine (1 << 3 ));
281+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_LOAD_CAPABILITY__" ,
282+ Twine (1 << 4 ));
283+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_STORE_CAPABILITY__" ,
284+ Twine (1 << 5 ));
285+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_STORE_LOCAL__" ,
286+ Twine (1 << 6 ));
287+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_SEAL__" ,
288+ Twine (1 << 7 ));
289+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_INVOKE__" ,
290+ Twine (1 << 8 ));
291+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_PERMIT_UNSEAL__" ,
292+ Twine (1 << 9 ));
293+ Builder.defineMacro (" __CHERI_CAP_PERMISSION_ACCESS_SYSTEM_REGISTERS__" ,
294+ Twine (1 << 10 ));
295+ }
263296
264297 // Macros for CHERIoT in the default and bare-metal ABIs.
265298 if (ABI == " cheriot" || ABI == " cheriot-baremetal" )
0 commit comments