Remove building with NOCRYPTO option
[minix3.git] / minix / kernel / arch / earm / arch_do_vmctl.c
blobd1cd417c07ec021b63bacbfe38c933b8b6239654
1 /* The kernel call implemented in this file:
2 * m_type: SYS_VMCTL
4 * The parameters for this kernel call are:
5 * SVMCTL_WHO which process
6 * SVMCTL_PARAM set this setting (VMCTL_*)
7 * SVMCTL_VALUE to this value
8 */
10 #include "kernel/system.h"
11 #include <assert.h>
12 #include <minix/type.h>
14 #include "arch_proto.h"
16 static void set_ttbr(struct proc *p, u32_t ttbr, u32_t *v)
18 /* Set process TTBR. */
19 p->p_seg.p_ttbr = ttbr;
20 assert(p->p_seg.p_ttbr);
21 p->p_seg.p_ttbr_v = v;
22 if(p == get_cpulocal_var(ptproc)) {
23 write_ttbr0(p->p_seg.p_ttbr);
25 if(p->p_nr == VM_PROC_NR) {
26 if (arch_enable_paging(p) != OK)
27 panic("arch_enable_paging failed");
29 RTS_UNSET(p, RTS_VMINHIBIT);
32 /*===========================================================================*
33 * arch_do_vmctl *
34 *===========================================================================*/
35 int arch_do_vmctl(
36 register message *m_ptr, /* pointer to request message */
37 struct proc *p
40 switch(m_ptr->SVMCTL_PARAM) {
41 case VMCTL_GET_PDBR:
42 /* Get process page directory base reg (TTBR). */
43 m_ptr->SVMCTL_VALUE = p->p_seg.p_ttbr;
44 return OK;
45 case VMCTL_SETADDRSPACE:
46 set_ttbr(p, m_ptr->SVMCTL_PTROOT, (u32_t *) m_ptr->SVMCTL_PTROOT_V);
47 return OK;
48 case VMCTL_FLUSHTLB:
50 reload_ttbr0();
51 return OK;
55 printf("arch_do_vmctl: strange param %d\n", m_ptr->SVMCTL_PARAM);
56 return EINVAL;