Files
seta75D 2e8a93c394 Init
2021-10-11 18:20:23 -03:00

115 lines
3.3 KiB
C

/* @(#)module.h 1.1 92/07/30 SMI */
#ifdef NOPROM
#define ROSS604 0x0010 /* Ross 604 rev c, d, or e */
#define ROSS604f 0x0011 /* Ross 604 rev f */
#define ROSS605b 0x001E /* Ross 605 rev b */
#define ROSS605 0x001F /* Ross 605 rev a, a.1, or a.2 */
#else
#define CPU_ROSS604 0x11
#define CPU_ROSS605 0x1f
#define CPU_VIKING 0x40
#define CPU_VIKING_MXCC 0x41
#endif
/* mc_type defines */
#define MC_MMC 0x01 /* galaxy MMC */
#define MC_EMC 0x02 /* EMC */
#define MC_LMC 0x03 /* EMC/LEGO */
#define MC_SMC 0x04 /* EMC/SPAM */
/*
* Viking revision defines
*/
#define VIK_REV_1DOT2 1 /* 1.2 vikings */
#define VIK_REV_2DOTX 2 /* 2.X (2.1, 2.2, 2.3, 2.4) Vikings */
#define VIK_REV_3DOTO 3 /* 3.0 Vikings */
#ifndef LOCORE
/*
* We can dynamicly add or remove support for
* modules of various sorts by adding them
* to, or removing them from, this table.
*
* The semantics are: VERY VERY early in the
* execution of the kernel, the module control
* register (at address zero, ASI four) is read,
* and this table is scanned. If the bits specified
* in the mcr_mask entry are set to the value
* specified in the mcr_chk entry, then the
* specified setup_func is called.
*/
struct module_linkage {
int mcr_mask;
int mcr_chk;
void (*setup_func)();
};
/*
* So we can see the "module_info" table
* where we need it. The table itsself
* is allocated and filled in the file
* machine/module_conf.c
* which is available in binary configurations
* so "module drivers" may be added.
*/
extern struct module_linkage module_info[];
/*
* The following pointers to functions are staticly
* initialized to an innocuous "safe" value.
* In general, MMU related things are set up to
* do the right thing for the SPARC Reference MMU,
* and VAC related things are pointed at an
* empty stub somewhere, but this may change
* without this header file being updated so
* go check it out.
*
* It is the primary job of the "setup_func"
* for a module to change these vectors wherever
* necessary to reference the proper service
* function for the detected module type.
*/
extern int (*v_mmu_getcr)();
extern int (*v_mmu_getctp)();
extern int (*v_mmu_getctx)();
extern int (*v_mmu_probe)();
extern void (*v_mmu_setcr)();
extern void (*v_mmu_setctp)();
extern void (*v_mmu_setctx)();
extern void (*v_mmu_flushall)();
extern void (*v_mmu_flushctx)();
extern void (*v_mmu_flushrgn)();
extern void (*v_mmu_flushseg)();
extern void (*v_mmu_flushpage)();
extern void (*v_mmu_flushpagectx)();
extern void (*v_mmu_getsyncflt)();
extern void (*v_mmu_getasyncflt)();
extern void (*v_mmu_chk_wdreset)();
extern void (*v_mmu_sys_ovf)();
extern void (*v_mmu_sys_unf)();
extern void (*v_mmu_wo)();
extern void (*v_mmu_wu)();
extern void (*v_mmu_log_module_err)();
extern void (*v_mmu_print_sfsr)();
extern u_int (*v_pte_offon)();
extern void (*v_module_wkaround)();
#ifdef VAC
extern void (*v_vac_init)();
extern void (*v_vac_flushall)();
extern void (*v_vac_usrflush)();
extern void (*v_vac_ctxflush)();
extern void (*v_vac_rgnflush)();
extern void (*v_vac_segflush)();
extern void (*v_vac_pageflush)();
extern void (*v_vac_pagectxflush)();
extern void (*v_vac_flush)();
extern void (*v_cache_on)();
extern int (*v_vac_parity_chk_dis)();
#endif VAC
#endif !LOCORE