Hallo, dies ist ein Test.
PWD: /www/data-lst1/unixsoft/unixsoft/kaempfer/.public_html
Running in File Mode
Relative path: ./../../../../../../usr/include/sys/archsystm.h
Real path: /usr/include/sys/archsystm.h
Zurück
/* * Copyright (c) 1993, 2020, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_ARCHSYSTM_H #define _SYS_ARCHSYSTM_H /* * A selection of ISA-dependent interfaces */ #ifdef __cplusplus extern "C" { #endif #if defined(_KERNEL) && !defined(_ASM) #include <sys/types.h> #include <sys/regset.h> #include <sys/model.h> #if defined(__GNUC__) && defined(_ASM_INLINES) #include <asm/flush.h> #endif extern greg_t getfp(void); extern greg_t getpsr(void); extern uint_t getpil(void); extern void setpil(uint_t); extern greg_t gettbr(void); struct proc; struct _klwp; extern void xregrestore(struct _klwp *, int); extern int copy_return_window(int); extern void setgwins(struct _klwp *, gwindows_t *); extern void getgwins(struct _klwp *, gwindows_t *); extern void setgwins32(struct _klwp *, gwindows32_t *); extern void getgwins32(struct _klwp *, gwindows32_t *); extern void setfpasrs(struct _klwp *, asrset_t); extern void getfpasrs(struct _klwp *, asrset_t); extern void setgregs(struct _klwp *, gregset_t); extern void getgregs(struct _klwp *, gregset_t); extern void setfpregs(struct _klwp *, fpregset_t *); extern void getfpregs(struct _klwp *, fpregset_t *); #ifdef _SYSCALL32_IMPL extern void getgregs32(struct _klwp *, gregset32_t); extern void setfpregs32(struct _klwp *, fpregset32_t *); extern void getfpregs32(struct _klwp *, fpregset32_t *); #endif extern void vac_flushall(void); extern void bind_hwcap(void); extern u_longlong_t gettick(void); extern uint64_t gettick_counter(void); extern uint64_t gettick_raw(void); extern int xcopyin_little(const void *, void *, size_t); extern int xcopyout_little(const void *, void *, size_t); extern void xregs_getfpfiller(struct _klwp *lwp, caddr_t xrp); extern void xregs_setfpfiller(struct _klwp *lwp, caddr_t xrp); struct ucontext; extern void xregs_clrptr(struct _klwp *, struct ucontext *); extern int xregs_hasptr(struct _klwp *, struct ucontext *); extern caddr_t xregs_getptr(struct _klwp *, struct ucontext *); extern void xregs_setptr(struct _klwp *, struct ucontext *, caddr_t); extern void cxregs_clrptr(struct _klwp *, struct ucontext *); extern int cxregs_hasptr(struct _klwp *, struct ucontext *); extern caddr_t cxregs_getptr(struct _klwp *, struct ucontext *); extern void cxregs_setptr(struct _klwp *, struct ucontext *, caddr_t); #ifdef _SYSCALL32_IMPL struct ucontext32; extern void xregs_clrptr32(struct _klwp *, struct ucontext32 *); extern int xregs_hasptr32(struct _klwp *, struct ucontext32 *); extern caddr32_t xregs_getptr32(struct _klwp *, struct ucontext32 *); extern void xregs_setptr32(struct _klwp *, struct ucontext32 *, caddr32_t); extern void cxregs_clrptr32(struct _klwp *, struct ucontext32 *); extern int cxregs_hasptr32(struct _klwp *, struct ucontext32 *); extern caddr32_t cxregs_getptr32(struct _klwp *, struct ucontext32 *); extern void cxregs_setptr32(struct _klwp *, struct ucontext32 *, caddr32_t); #endif /* _SYSCALL32_IMPL */ extern void xregs_getgregs(struct _klwp *, caddr_t); extern void xregs_getfpregs(struct _klwp *, caddr_t); extern void xregs_get(struct _klwp *, caddr_t); extern void xregs_setgregs(struct _klwp *, caddr_t); extern void xregs_setfpregs(struct _klwp *, caddr_t); extern void xregs_set(struct _klwp *, caddr_t); extern int xregs_getsize(struct proc *); extern void cxregs_get(struct _klwp *, caddr_t); extern void cxregs_set(struct _klwp *, caddr_t); extern int cxregs_getsize(struct proc *); extern void doflush(void *); extern uint_t cpu_hwcap_flags[]; /* Check if MWAIT instruction supports timeout */ #define MWAIT_TIMEOUT_SUPPORT (cpu_hwcap_flags[AV_HW2_IDX] & AV2_SPARC_MWAIT) extern uint_t weakest_mem_model; /* * To use hwblkclr() the size and address should be aligned to value defined by * HWBLKCLR_ALIGN (64) and size must be minimum HWBLKCLR_LENGTH (256). If the * criteria does not match this function does not guarantee to perform fast * memory clearing. * Returns: * 0 : I$ entries for the address range were purged. * 1 : The I$ may contain stale data from the address range */ extern int hwblkclr(void *, size_t); extern int interrupts_enabled(void); #define cpr_dprintf prom_printf extern boolean_t is_imm_asi_user_access(uint32_t); extern boolean_t is_asi_reg_access(uint32_t); /* * Currently, the only PREFETCH/PREFETCHA instructions which cause traps * are the "strong" prefetches (fcn=20-23). But we check for all flavors of * PREFETCH, in case some future variant also causes a DATA_MMU_MISS. */ #define IS_PREFETCH(i) (((i) & 0xc1780000) == 0xc1680000) #define IS_FLOAT(i) (((i) & 0x1000000) != 0) #define IS_FLUSH(i) (((i) & 0xc1f80000) == 0x81d80000) #define IS_CAS_AMADD(i) (((i) & 0xc1e80000) == 0xc1e00000) #define IS_SWAP(i) (((i) & 0xc1f80000) == 0xc0780000) #define IS_LDSTUB(i) (((i) & 0xc1f80000) == 0xc0680000) #define IS_LDTWIN(i) (((i) & 0xc1780000) == 0xc0180000) #define OP3(x) (((x) >> 19) & 0x3f) /* * Returns true if a SWAP[A], LDSTUB[A], CAS[A], AMADD[A], CASX[A], * AMADDX[A], AMCADDX[A], or AMMOVX[A] instruction. */ #define IS_ATOMIC_INSTR(i) \ (IS_SWAP(i) || IS_LDSTUB(i) || IS_CAS_AMADD(i)) #define IS_STORE(i) ((((i) >> 21) & 1) && !IS_PREFETCH(i)) /* For an ADI mismatch trap, don't treat prefetches or atomics as stores. */ #define IS_ADI_STORE(i) \ (IS_STORE(i) && !IS_ATOMIC_INSTR(i)) #define IS_LOAD_OR_STORE(i) (((i) >> 30) == 3) #define IS_IMM_ASI(i) (((i) & 0x2000) == 0) #define IMM_ASI_FIELD_SZ 8 #define IMM_ASI_FIELD_SHIFT 5 #define IMM_ASI_FIELD_MASK ((1 << IMM_ASI_FIELD_SZ) - 1) #define GET_IMM_ASI(i) \ (((i) >> IMM_ASI_FIELD_SHIFT) & IMM_ASI_FIELD_MASK) #endif /* _KERNEL && !_ASM */ #if defined(_KERNEL) /* To use hwblkclr() the size and address must be aligned to this value */ #define HWBLKCLR_ALIGN 64 /* To use hwblkclr() the size must be at least this value */ #define HWBLKCLR_LENGTH 256 /* * For binary compatibility with SPARC/Solaris 1. Needed in the * sparc assembly files. */ #define OSYS_mmap 71 #endif /* _KERNEL */ #ifdef __cplusplus } #endif #endif /* _SYS_ARCHSYSTM_H */