]> rtime.felk.cvut.cz Git - hercules2020/nv-tegra/linux-4.4.git/blobdiff - arch/arm64/kernel/sys.c
New memguard hypercall
[hercules2020/nv-tegra/linux-4.4.git] / arch / arm64 / kernel / sys.c
index 3ed5cb689325829d1277f5131bb3f2bde46104c7..23d48ad2a20ded24c293c2c6b548253ddf2eb40a 100644 (file)
@@ -97,6 +97,25 @@ asmlinkage long sys_prem_guard_set(unsigned long phase, unsigned long budget,
        return num_result;
 }
 
+
+/* Invoke prem_memguard_check hypercall implemented in Jailhouse hypervisor */
+asmlinkage long sys_prem_memguard_check(unsigned long periods, unsigned long events_per_period,
+                                  unsigned long preemtion)
+{
+       register uint64_t num_result asm("x0") = 10;
+       register uint64_t __arg1 asm("x1") = periods;
+       register uint64_t __arg2 asm("x2") = events_per_period;
+       register uint64_t __arg3 asm("x3") = preemtion;
+
+    asm volatile(
+               "hvc #0x4a48"
+               : "=r" (num_result)
+               : "r" (num_result), "r" (__arg1), "r" (__arg2),  "r" (__arg3)
+               : "memory");
+
+       return num_result;
+}
+
 #undef __SYSCALL
 #define __SYSCALL(nr, sym)     [nr] = sym,