static int dio_scan(int (*func)(bus_space_tag_t, bus_addr_t, int)); static int dio_scode_probe(int, int (*func)(bus_space_tag_t, bus_addr_t, int)); extern void *internalhpib; /* How we were booted. */ u_int bootdev; /* * Extent map to manage the external I/O (DIO/DIO-II) space. We * allocate storate for 8 regions in the map. extio_ex_malloc_safe * will indicate that it's safe to use malloc() to dynamically allocate * region descriptors in case we run out. */ static long extio_ex_storage[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)]; struct extent *extio_ex; int extio_ex_malloc_safe; /* * This information is built during the autoconfig process. * A little explanation about the way this works is in order. * * device_register() links all devices into dev_data_list. * If the device is an hpib controller, it is also linked * into dev_data_list_hpib. If the device is a scsi controller, * it is also linked into dev_data_list_scsi. * * dev_data_list_hpib and dev_data_list_scsi are sorted * by select code, from lowest to highest. *
bus_size_t, uint64_t, bus_size_t); /* copy */ void __C(CHIP,_mem_copy_region_1)(void *, bus_space_handle_t, bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t); void __C(CHIP,_mem_copy_region_2)(void *, bus_space_handle_t, bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t); void __C(CHIP,_mem_copy_region_4)(void *, bus_space_handle_t, bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t); void __C(CHIP,_mem_copy_region_8)(void *, bus_space_handle_t, bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t); #ifdef CHIP_D_MEM_W1_SYS_START #ifndef CHIP_D_MEM_EX_STORE static long __C(CHIP,_dmem_ex_storage)[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)]; #define CHIP_D_MEM_EX_STORE(v) (__C(CHIP,_dmem_ex_storage)) #define CHIP_D_MEM_EX_STORE_SIZE(v) (sizeof __C(CHIP,_dmem_ex_storage)) #endif #endif /* CHIP_D_MEM_W1_SYS_START */ #ifndef CHIP_S_MEM_EX_STORE static long __C(CHIP,_smem_ex_storage)[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)]; #define CHIP_S_MEM_EX_STORE(v) (__C(CHIP,_smem_ex_storage)) #define CHIP_S_MEM_EX_STORE_SIZE(v) (sizeof __C(CHIP,_smem_ex_storage)) #endif #ifndef CHIP_ADDR_SHIFT #define CHIP_ADDR_SHIFT 5 #endif
int (*cpu_desidhash)(void); int (*cpu_hpt_init)(vaddr_t hpt, vsize_t hptsize); int (*cpu_ibtlb_ins)(int i, pa_space_t sp, vaddr_t va, paddr_t pa, vsize_t sz, u_int prot); int (*cpu_dbtlb_ins)(int i, pa_space_t sp, vaddr_t va, paddr_t pa, vsize_t sz, u_int prot); dev_t bootdev; int physmem, resvmem, resvphysmem, esym; paddr_t avail_end; /* * Things for MI glue to stick on. */ struct user *proc0paddr; long mem_ex_storage[EXTENT_FIXED_STORAGE_SIZE(64) / sizeof(long)]; struct extent *hppa_ex; struct vm_map *exec_map = NULL; struct vm_map *phys_map = NULL; /* Virtual page frame for /dev/mem (see mem.c) */ vaddr_t vmmap; void delay_init(void); static __inline void fall(int, int, int, int, int); void dumpsys(void); void hpmc_dump(void); void cpuid(void); void blink_led_timeout(void *); /*
int *); static int necpb_conf_hook(pci_chipset_tag_t, int, int, int, pcireg_t); #endif static uint32_t necpb_intr(uint32_t, struct clockframe *); CFATTACH_DECL_NEW(necpb, sizeof(struct necpb_softc), necpbmatch, necpbattach, NULL, NULL); static struct necpb_intrhand *necpb_inttbl[4]; /* There can be only one. */ int necpbfound; struct necpb_context necpb_main_context; static long necpb_mem_ex_storage[EXTENT_FIXED_STORAGE_SIZE(10) / sizeof(long)]; static long necpb_io_ex_storage[EXTENT_FIXED_STORAGE_SIZE(10) / sizeof(long)]; static int necpbmatch(device_t parent, cfdata_t cf, void *aux) { struct confargs *ca = aux; if (strcmp(ca->ca_name, necpb_cd.cd_name) != 0) return 0; if (necpbfound) return 0; return 1; }
int physmem; int cold = 1; /* coldstart */ struct cpmbx *cpmbx; /* * safepri is a safe priority for sleep to set for a spin-wait * during autoconfiguration or after a panic. */ int safepri = 0; /* * XXX some storage space must be allocated statically because of * early console init */ #define IOMAPSZ 100 char extiospace[EXTENT_FIXED_STORAGE_SIZE(IOMAPSZ)]; struct extent *extio; extern vaddr_t iospace; struct vm_map *exec_map = NULL; struct vm_map *phys_map = NULL; #ifdef DEBUG int iospace_inited = 0; #endif /* sysctl settable */ #if NLED > 0 int vax_led_blink = 0; #endif
#include <dev/isa/isareg.h> #include <machine/isa_machdep.h> /* * Extent maps to manage I/O and memory space. Allocate * storage for 8 regions in each, initially. Later, ioport_malloc_safe * will indicate that it's safe to use malloc() to dynamically allocate * region descriptors. * * N.B. At least two regions are _always_ allocated from the iomem * extent map; (0 -> ISA hole) and (end of ISA hole -> end of RAM). * * The extent maps are not static! Machine-dependent ISA and EISA * routines need access to them for bus address space allocation. */ static long ioport_ex_storage[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)]; static long iomem_ex_storage[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)]; struct extent *ioport_ex; struct extent *iomem_ex; static int ioport_malloc_safe; int x86_mem_add_mapping __P((bus_addr_t, bus_size_t, int, bus_space_handle_t *)); void x86_bus_space_init() { /* * Initialize the I/O port and I/O mem extent maps. * Note: we don't have to check the return value since * creation of a fixed extent map will never fail (since
*/ char machine[] = MACHINE; /* from <machine/param.h> */ char machine_arch[] = MACHINE_ARCH; /* from <machine/param.h> */ void * msgbufaddr; int *symtab_start; int *symtab_end; int symtab_nsyms; struct cpmbx *cpmbx; /* Console program mailbox address */ /* * Extent map to manage I/O register space. We allocate storage for * 32 regions in the map. iomap_ex_malloc_safe will indicate that it's * safe to use malloc() to dynamically allocate region descriptors in * case we run out. */ static long iomap_ex_storage[EXTENT_FIXED_STORAGE_SIZE(32) / sizeof(long)]; static struct extent *iomap_ex; static int iomap_ex_malloc_safe; struct vm_map *phys_map = NULL; #ifdef DEBUG int iospace_inited = 0; #endif void cpu_startup(void) { #if VAX46 || VAX48 || VAX49 || VAX53 || VAXANY vaddr_t minaddr, maxaddr; #endif
/* write region, stream */ void __BS(write_region_stream_1)(void *, bus_space_handle_t, bus_size_t, const uint8_t *, bus_size_t); void __BS(write_region_stream_2)(void *, bus_space_handle_t, bus_size_t, const uint16_t *, bus_size_t); void __BS(write_region_stream_4)(void *, bus_space_handle_t, bus_size_t, const uint32_t *, bus_size_t); void __BS(write_region_stream_8)(void *, bus_space_handle_t, bus_size_t, const uint64_t *, bus_size_t); #endif /* CHIP_NEED_STREAM */ #ifdef CHIP_EXTENT #ifndef CHIP_EX_STORE static long __BS(ex_storage)[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)]; #define CHIP_EX_STORE(v) (__BS(ex_storage)) #define CHIP_EX_STORE_SIZE(v) (sizeof __BS(ex_storage)) #endif #endif /* CHIP_EXTENT */ #ifndef CHIP_ALIGN_STRIDE #define CHIP_ALIGN_STRIDE 0 #endif #if CHIP_ALIGN_STRIDE > 0 #define CHIP_OFF8(o) ((o) << (CHIP_ALIGN_STRIDE)) #else #define CHIP_OFF8(o) (o) #endif