1b5e8ce9fSBruce Evans /*- 2b5e8ce9fSBruce Evans * Copyright (c) 1995 Bruce D. Evans. 3b5e8ce9fSBruce Evans * All rights reserved. 4b5e8ce9fSBruce Evans * 5b5e8ce9fSBruce Evans * Redistribution and use in source and binary forms, with or without 6b5e8ce9fSBruce Evans * modification, are permitted provided that the following conditions 7b5e8ce9fSBruce Evans * are met: 8b5e8ce9fSBruce Evans * 1. Redistributions of source code must retain the above copyright 9b5e8ce9fSBruce Evans * notice, this list of conditions and the following disclaimer. 10b5e8ce9fSBruce Evans * 2. Redistributions in binary form must reproduce the above copyright 11b5e8ce9fSBruce Evans * notice, this list of conditions and the following disclaimer in the 12b5e8ce9fSBruce Evans * documentation and/or other materials provided with the distribution. 13b5e8ce9fSBruce Evans * 3. Neither the name of the author nor the names of contributors 14b5e8ce9fSBruce Evans * may be used to endorse or promote products derived from this software 15b5e8ce9fSBruce Evans * without specific prior written permission. 16b5e8ce9fSBruce Evans * 17b5e8ce9fSBruce Evans * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18b5e8ce9fSBruce Evans * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19b5e8ce9fSBruce Evans * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20b5e8ce9fSBruce Evans * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21b5e8ce9fSBruce Evans * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22b5e8ce9fSBruce Evans * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23b5e8ce9fSBruce Evans * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24b5e8ce9fSBruce Evans * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25b5e8ce9fSBruce Evans * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26b5e8ce9fSBruce Evans * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27b5e8ce9fSBruce Evans * SUCH DAMAGE. 28b5e8ce9fSBruce Evans * 29c3aac50fSPeter Wemm * $FreeBSD$ 30b5e8ce9fSBruce Evans */ 31b5e8ce9fSBruce Evans 32b5e8ce9fSBruce Evans #ifndef _MACHINE_MD_VAR_H_ 33b5e8ce9fSBruce Evans #define _MACHINE_MD_VAR_H_ 34b5e8ce9fSBruce Evans 35b5e8ce9fSBruce Evans /* 36b5e8ce9fSBruce Evans * Miscellaneous machine-dependent declarations. 37b5e8ce9fSBruce Evans */ 38b5e8ce9fSBruce Evans 39b5e8ce9fSBruce Evans extern int Maxmem; 40a111a7f8SBruce Evans extern u_int atdevbase; /* offset in virtual memory of ISA io mem */ 41b63dc6adSAlfred Perlstein extern void (*bcopy_vector)(const void *from, void *to, size_t len); 42af3b301bSBruce Evans extern int busdma_swi_pending; 43809dbbc9SBruce Evans extern int (*copyin_vector)(const void *udaddr, void *kaddr, size_t len); 44809dbbc9SBruce Evans extern int (*copyout_vector)(const void *kaddr, void *udaddr, size_t len); 4588bf59fcSBruce Evans extern u_int cpu_feature; 4688bf59fcSBruce Evans extern u_int cpu_high; 4788bf59fcSBruce Evans extern u_int cpu_id; 489d146ac5SPeter Wemm extern u_int cpu_fxsr; 49b5e8ce9fSBruce Evans extern char cpu_vendor[]; 5088bf59fcSBruce Evans extern u_int cyrix_did; 51ab4db9b7SPoul-Henning Kamp extern uint16_t *elan_mmcr; 52b5e8ce9fSBruce Evans extern char kstack[]; 5388bf59fcSBruce Evans #ifdef PC98 5488bf59fcSBruce Evans extern int need_pre_dma_flush; 5588bf59fcSBruce Evans extern int need_post_dma_flush; 5688bf59fcSBruce Evans #endif 57b63dc6adSAlfred Perlstein extern void (*ovbcopy_vector)(const void *from, void *to, size_t len); 58d66a5066SPeter Wemm extern char sigcode[]; 59204fed67SMarcel Moolenaar extern int szsigcode, szosigcode; 60b5e8ce9fSBruce Evans 61b63dc6adSAlfred Perlstein typedef void alias_for_inthand_t(u_int cs, u_int ef, u_int esp, u_int ss); 62b40ce416SJulian Elischer struct thread; 63b5e8ce9fSBruce Evans struct reg; 641a291e0cSJohn Polstra struct fpreg; 65ab001a72SJonathan Lemon struct dbreg; 66b5e8ce9fSBruce Evans 67b63dc6adSAlfred Perlstein void bcopyb(const void *from, void *to, size_t len); 68b63dc6adSAlfred Perlstein void busdma_swi(void); 69b63dc6adSAlfred Perlstein void cpu_halt(void); 70b63dc6adSAlfred Perlstein void cpu_reset(void); 71b63dc6adSAlfred Perlstein void cpu_setregs(void); 72b63dc6adSAlfred Perlstein void cpu_switch_load_gs(void) __asm(__STRING(cpu_switch_load_gs)); 73b63dc6adSAlfred Perlstein void doreti_iret(void) __asm(__STRING(doreti_iret)); 74b63dc6adSAlfred Perlstein void doreti_iret_fault(void) __asm(__STRING(doreti_iret_fault)); 75b63dc6adSAlfred Perlstein void doreti_popl_ds(void) __asm(__STRING(doreti_popl_ds)); 76b63dc6adSAlfred Perlstein void doreti_popl_ds_fault(void) __asm(__STRING(doreti_popl_ds_fault)); 77b63dc6adSAlfred Perlstein void doreti_popl_es(void) __asm(__STRING(doreti_popl_es)); 78b63dc6adSAlfred Perlstein void doreti_popl_es_fault(void) __asm(__STRING(doreti_popl_es_fault)); 79b63dc6adSAlfred Perlstein void doreti_popl_fs(void) __asm(__STRING(doreti_popl_fs)); 80b63dc6adSAlfred Perlstein void doreti_popl_fs_fault(void) __asm(__STRING(doreti_popl_fs_fault)); 81b63dc6adSAlfred Perlstein void fillw(int /*u_short*/ pat, void *base, size_t cnt); 82b63dc6adSAlfred Perlstein void i486_bzero(void *buf, size_t len); 83b63dc6adSAlfred Perlstein void i586_bcopy(const void *from, void *to, size_t len); 84b63dc6adSAlfred Perlstein void i586_bzero(void *buf, size_t len); 85b63dc6adSAlfred Perlstein int i586_copyin(const void *udaddr, void *kaddr, size_t len); 86b63dc6adSAlfred Perlstein int i586_copyout(const void *kaddr, void *udaddr, size_t len); 87b63dc6adSAlfred Perlstein void i686_pagezero(void *addr); 8814a3a6eaSPoul-Henning Kamp void init_AMD_Elan_sc520(void); 89b63dc6adSAlfred Perlstein int is_physical_memory(vm_offset_t addr); 90b63dc6adSAlfred Perlstein u_long kvtop(void *addr); 91809dbbc9SBruce Evans void setidt(int idx, alias_for_inthand_t *func, int typ, int dpl, int selec); 92b63dc6adSAlfred Perlstein void swi_vm(void *); 93b63dc6adSAlfred Perlstein int user_dbreg_trap(void); 94b5e8ce9fSBruce Evans 95b5e8ce9fSBruce Evans #endif /* !_MACHINE_MD_VAR_H_ */ 96