Annotation of sys/arch/arm/arm/sys_machdep.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: sys_machdep.c,v 1.3 2004/05/19 03:17:07 drahn Exp $ */
2: /* $NetBSD: sys_machdep.c,v 1.6 2003/07/15 00:24:42 lukem Exp $ */
3:
4: /*
5: * Copyright (c) 1995-1997 Mark Brinicombe.
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. All advertising materials mentioning features or use of this software
17: * must display the following acknowledgement:
18: * This product includes software developed by Mark Brinicombe
19: * 4. The name of the company nor the name of the author may be used to
20: * endorse or promote products derived from this software without specific
21: * prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
24: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26: * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
27: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33: * SUCH DAMAGE.
34: *
35: * RiscBSD kernel project
36: *
37: * sys_machdep.c
38: *
39: * Machine dependant syscalls
40: *
41: * Created : 10/01/96
42: */
43:
44: #include <sys/param.h>
45: #include <sys/systm.h>
46: #include <sys/proc.h>
47: #include <sys/mbuf.h>
48: #include <sys/mount.h>
49: #include <uvm/uvm_extern.h>
50: #include <sys/sysctl.h>
51: #include <sys/syscallargs.h>
52:
53: #include <machine/sysarch.h>
54:
55: /* Prototypes */
56: static int arm32_sync_icache (struct proc *, char *, register_t *);
57: static int arm32_drain_writebuf (struct proc *, char *, register_t *);
58:
59: static int
60: arm32_sync_icache(p, args, retval)
61: struct proc *p;
62: char *args;
63: register_t *retval;
64: {
65: struct arm_sync_icache_args ua;
66: int error;
67:
68: if ((error = copyin(args, &ua, sizeof(ua))) != 0)
69: return (error);
70:
71: cpu_icache_sync_range(ua.addr, ua.len);
72:
73: *retval = 0;
74: return(0);
75: }
76:
77: static int
78: arm32_drain_writebuf(p, args, retval)
79: struct proc *p;
80: char *args;
81: register_t *retval;
82: {
83: /* No args. */
84:
85: cpu_drain_writebuf();
86:
87: *retval = 0;
88: return(0);
89: }
90:
91: int
92: sys_sysarch(p, v, retval)
93: struct proc *p;
94: void *v;
95: register_t *retval;
96: {
97: struct sys_sysarch_args /* {
98: syscallarg(int) op;
99: syscallarg(void *) parms;
100: } */ *uap = v;
101: int error = 0;
102:
103: switch(SCARG(uap, op)) {
104: case ARM_SYNC_ICACHE :
105: error = arm32_sync_icache(p, SCARG(uap, parms), retval);
106: break;
107:
108: case ARM_DRAIN_WRITEBUF :
109: error = arm32_drain_writebuf(p, SCARG(uap, parms), retval);
110: break;
111:
112: default:
113: error = EINVAL;
114: break;
115: }
116: return (error);
117: }
118:
119: /* End of sys_machdep.c */
CVSweb