|
@@ -67,3 +67,39 @@ void pkey_mm_init(struct mm_struct *mm)
|
|
|
return;
|
|
|
mm_pkey_allocation_map(mm) = initial_allocation_mask;
|
|
|
}
|
|
|
+
|
|
|
+static inline u64 read_amr(void)
|
|
|
+{
|
|
|
+ return mfspr(SPRN_AMR);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void write_amr(u64 value)
|
|
|
+{
|
|
|
+ mtspr(SPRN_AMR, value);
|
|
|
+}
|
|
|
+
|
|
|
+static inline u64 read_iamr(void)
|
|
|
+{
|
|
|
+ if (!likely(pkey_execute_disable_supported))
|
|
|
+ return 0x0UL;
|
|
|
+
|
|
|
+ return mfspr(SPRN_IAMR);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void write_iamr(u64 value)
|
|
|
+{
|
|
|
+ if (!likely(pkey_execute_disable_supported))
|
|
|
+ return;
|
|
|
+
|
|
|
+ mtspr(SPRN_IAMR, value);
|
|
|
+}
|
|
|
+
|
|
|
+static inline u64 read_uamor(void)
|
|
|
+{
|
|
|
+ return mfspr(SPRN_UAMOR);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void write_uamor(u64 value)
|
|
|
+{
|
|
|
+ mtspr(SPRN_UAMOR, value);
|
|
|
+}
|