sysarch.h revision 188540
1331766Sken/*	$NetBSD: sysarch.h,v 1.5 2003/09/11 09:40:12 kleink Exp $	*/
2331766Sken
3331766Sken/*-
4331766Sken * Copyright (c) 1996-1997 Mark Brinicombe.
5331766Sken * All rights reserved.
6331766Sken *
7331766Sken * Redistribution and use in source and binary forms, with or without
8331766Sken * modification, are permitted provided that the following conditions
9331766Sken * are met:
10331766Sken * 1. Redistributions of source code must retain the above copyright
11331766Sken *    notice, this list of conditions and the following disclaimer.
12331766Sken * 2. Redistributions in binary form must reproduce the above copyright
13331766Sken *    notice, this list of conditions and the following disclaimer in the
14331766Sken *    documentation and/or other materials provided with the distribution.
15331766Sken * 3. All advertising materials mentioning features or use of this software
16331766Sken *    must display the following acknowledgement:
17331766Sken *	This product includes software developed by Mark Brinicombe.
18331766Sken * 4. The name of the company nor the name of the author may be used to
19331766Sken *    endorse or promote products derived from this software without specific
20331766Sken *    prior written permission.
21331766Sken *
22331766Sken * THIS SOFTWARE IS PROVIDED BY AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
23331766Sken * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
24331766Sken * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25331766Sken * IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
26331766Sken * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
27331766Sken * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28331766Sken * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29331766Sken * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30331766Sken * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31331766Sken * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32331766Sken * SUCH DAMAGE.
33331766Sken */
34331766Sken
35331766Sken/* $FreeBSD: head/sys/arm/include/sysarch.h 188540 2009-02-12 23:23:30Z cognet $ */
36331766Sken
37331766Sken#ifndef _ARM_SYSARCH_H_
38331766Sken#define _ARM_SYSARCH_H_
39331766Sken
40331766Sken#include <machine/armreg.h>
41331766Sken/*
42331766Sken * The ARM_TP_ADDRESS points to a special purpose page, which is used as local
43331766Sken * store for the ARM per-thread data and Restartable Atomic Sequences support.
44331766Sken * Put it just above the "high" vectors' page.
45331766Sken * the cpu_switch() code assumes ARM_RAS_START is ARM_TP_ADDRESS + 4, and
46331766Sken * ARM_RAS_END is ARM_TP_ADDRESS + 8, so if that ever changes, be sure to
47331766Sken * update the cpu_switch() (and cpu_throw()) code as well.
48331766Sken */
49331766Sken#define ARM_TP_ADDRESS		(ARM_VECTORS_HIGH + 0x1000)
50#define ARM_RAS_START		(ARM_TP_ADDRESS + 4)
51#define ARM_RAS_END		(ARM_TP_ADDRESS + 8)
52
53#ifndef LOCORE
54
55#include <sys/cdefs.h>
56
57/*
58 * Pickup definition of uintptr_t
59 */
60#include <sys/stdint.h>
61
62/*
63 * Architecture specific syscalls (arm)
64 */
65
66#define ARM_SYNC_ICACHE		0
67#define ARM_DRAIN_WRITEBUF	1
68#define ARM_SET_TP		2
69#define ARM_GET_TP		3
70
71struct arm_sync_icache_args {
72	uintptr_t	addr;		/* Virtual start address */
73	size_t		len;		/* Region size */
74};
75
76#ifndef _KERNEL
77__BEGIN_DECLS
78int	arm_sync_icache (u_int addr, int len);
79int	arm_drain_writebuf (void);
80int	sysarch(int, void *);
81__END_DECLS
82#endif
83
84#endif /* LOCORE */
85
86#endif /* !_ARM_SYSARCH_H_ */
87