xref: /freebsd/sys/amd64/include/cpu.h (revision 26502503e57448b879c9293f18ad778c2f7e5f78)
15b81b6b3SRodney W. Grimes /*-
25b81b6b3SRodney W. Grimes  * Copyright (c) 1990 The Regents of the University of California.
35b81b6b3SRodney W. Grimes  * All rights reserved.
45b81b6b3SRodney W. Grimes  *
55b81b6b3SRodney W. Grimes  * This code is derived from software contributed to Berkeley by
65b81b6b3SRodney W. Grimes  * William Jolitz.
75b81b6b3SRodney W. Grimes  *
85b81b6b3SRodney W. Grimes  * Redistribution and use in source and binary forms, with or without
95b81b6b3SRodney W. Grimes  * modification, are permitted provided that the following conditions
105b81b6b3SRodney W. Grimes  * are met:
115b81b6b3SRodney W. Grimes  * 1. Redistributions of source code must retain the above copyright
125b81b6b3SRodney W. Grimes  *    notice, this list of conditions and the following disclaimer.
135b81b6b3SRodney W. Grimes  * 2. Redistributions in binary form must reproduce the above copyright
145b81b6b3SRodney W. Grimes  *    notice, this list of conditions and the following disclaimer in the
155b81b6b3SRodney W. Grimes  *    documentation and/or other materials provided with the distribution.
165b81b6b3SRodney W. Grimes  * 3. All advertising materials mentioning features or use of this software
175b81b6b3SRodney W. Grimes  *    must display the following acknowledgement:
185b81b6b3SRodney W. Grimes  *	This product includes software developed by the University of
195b81b6b3SRodney W. Grimes  *	California, Berkeley and its contributors.
205b81b6b3SRodney W. Grimes  * 4. Neither the name of the University nor the names of its contributors
215b81b6b3SRodney W. Grimes  *    may be used to endorse or promote products derived from this software
225b81b6b3SRodney W. Grimes  *    without specific prior written permission.
235b81b6b3SRodney W. Grimes  *
245b81b6b3SRodney W. Grimes  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
255b81b6b3SRodney W. Grimes  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
265b81b6b3SRodney W. Grimes  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
275b81b6b3SRodney W. Grimes  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
285b81b6b3SRodney W. Grimes  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
295b81b6b3SRodney W. Grimes  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
305b81b6b3SRodney W. Grimes  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
315b81b6b3SRodney W. Grimes  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
325b81b6b3SRodney W. Grimes  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
335b81b6b3SRodney W. Grimes  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
345b81b6b3SRodney W. Grimes  * SUCH DAMAGE.
355b81b6b3SRodney W. Grimes  *
3609f07fb0SRodney W. Grimes  *	from: @(#)cpu.h	5.4 (Berkeley) 5/9/91
37c3aac50fSPeter Wemm  * $FreeBSD$
385b81b6b3SRodney W. Grimes  */
395b81b6b3SRodney W. Grimes 
406e393973SGarrett Wollman #ifndef _MACHINE_CPU_H_
41e4b7e53dSBruce Evans #define	_MACHINE_CPU_H_
426e393973SGarrett Wollman 
435b81b6b3SRodney W. Grimes /*
445b81b6b3SRodney W. Grimes  * Definitions unique to i386 cpu support.
455b81b6b3SRodney W. Grimes  */
4648a09cf2SJohn Dyson #include <machine/psl.h>
47f540b106SGarrett Wollman #include <machine/frame.h>
48f540b106SGarrett Wollman #include <machine/segments.h>
495b81b6b3SRodney W. Grimes 
505b81b6b3SRodney W. Grimes /*
515b81b6b3SRodney W. Grimes  * definitions of cpu-dependent requirements
525b81b6b3SRodney W. Grimes  * referenced in generic code
535b81b6b3SRodney W. Grimes  */
545b81b6b3SRodney W. Grimes #undef	COPY_SIGCODE		/* don't copy sigcode above user stack in exec */
555b81b6b3SRodney W. Grimes 
565b81b6b3SRodney W. Grimes #define	cpu_exec(p)	/* nothing */
5726f9a767SRodney W. Grimes #define cpu_swapin(p)	/* nothing */
58afa88623SPeter Wemm #define	cpu_getstack(td)		((td)->td_frame->tf_rsp)
59afa88623SPeter Wemm #define cpu_setstack(td, ap)		((td)->td_frame->tf_rsp = (ap))
605b81b6b3SRodney W. Grimes 
61142ba5f3SJohn Baldwin #define	TRAPF_USERMODE(framep) \
62afa88623SPeter Wemm 	(ISPL((framep)->tf_cs) == SEL_UPL)
63afa88623SPeter Wemm #define	TRAPF_PC(framep)	((framep)->tf_rip)
64142ba5f3SJohn Baldwin 
6548a09cf2SJohn Dyson #define	CLKF_USERMODE(framep) \
66afa88623SPeter Wemm 	(ISPL((framep)->cf_cs) == SEL_UPL)
67afa88623SPeter Wemm #define	CLKF_PC(framep)		((framep)->cf_rip)
685b81b6b3SRodney W. Grimes 
695b81b6b3SRodney W. Grimes /*
7026f9a767SRodney W. Grimes  * CTL_MACHDEP definitions.
7126f9a767SRodney W. Grimes  */
7226f9a767SRodney W. Grimes #define CPU_CONSDEV		1	/* dev_t: console terminal device */
73fe0d5f43SAndrey A. Chernov #define	CPU_ADJKERNTZ		2	/* int:	timezone offset	(seconds) */
74f80d8a2eSAndrey A. Chernov #define	CPU_DISRTCSET		3	/* int: disable resettodr() call */
75fe0d5f43SAndrey A. Chernov #define	CPU_WALLCLOCK		5	/* int:	indicates wall CMOS clock */
76fe0d5f43SAndrey A. Chernov #define	CPU_MAXID		6	/* number of valid machdep ids */
7726f9a767SRodney W. Grimes 
78664a31e4SPeter Wemm #ifdef _KERNEL
794090154bSBruce Evans extern char	btext[];
804090154bSBruce Evans extern char	etext[];
8112a586bbSBruce Evans extern u_int	tsc_present;
82a2a1c95cSPeter Wemm 
8326502503SMarcel Moolenaar void	cpu_halt(void);
8426502503SMarcel Moolenaar void	cpu_reset(void);
85b63dc6adSAlfred Perlstein void	fork_trampoline(void);
8626502503SMarcel Moolenaar void	swi_vm(void *);
8758550067SMark Murray 
8858550067SMark Murray /*
8958550067SMark Murray  * Return contents of in-cpu fast counter as a sort of "bogo-time"
90553ebddcSPoul-Henning Kamp  * for random-harvesting purposes.
9158550067SMark Murray  */
9258550067SMark Murray static __inline u_int64_t
9358550067SMark Murray get_cyclecount(void)
9458550067SMark Murray {
9558550067SMark Murray 
9658550067SMark Murray 	return (rdtsc());
9758550067SMark Murray }
9858550067SMark Murray 
9909f07fb0SRodney W. Grimes #endif
100e4b7e53dSBruce Evans 
101e4b7e53dSBruce Evans #endif /* !_MACHINE_CPU_H_ */
102