diff --git a/kernel/include/process.h b/kernel/include/process.h index 041f8963..9d0c743e 100644 --- a/kernel/include/process.h +++ b/kernel/include/process.h @@ -41,6 +41,9 @@ #define VR_MAXPROT_WRITE 0x00200000 #define VR_MAXPROT_EXEC 0x00400000 #define VR_MAXPROT_MASK 0x00700000 +#define VR_MEMTYPE_WB 0x00000000 /* write-back */ +#define VR_MEMTYPE_UC 0x01000000 /* uncachable */ +#define VR_MEMTYPE_MASK 0x0f000000 #define PROT_TO_VR_FLAG(prot) (((unsigned long)(prot) << 16) & VR_PROT_MASK) #define VRFLAG_PROT_TO_MAXPROT(vrflag) (((vrflag) & VR_PROT_MASK) << 4) diff --git a/kernel/process.c b/kernel/process.c index e87456db..740ef205 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -791,6 +791,10 @@ enum ihk_mc_pt_attribute common_vrflag_to_ptattr(unsigned long flag, uint64_t fa attr |= PTATTR_NO_EXECUTE; } + if ((flag & VR_MEMTYPE_MASK) == VR_MEMTYPE_UC) { + attr |= PTATTR_UNCACHABLE; + } + return attr; }