Files
m241Neelima/vxworks-6.9/target/h/arch/ppc/altivecPpcLib.h
T
2026-07-30 11:19:44 +05:30

85 lines
2.6 KiB
C

/* altivecPpcLib.h - PowerPC Altivec coprocessor support library header */
/* Copyright 1984-2010 Wind River Systems, Inc. */
/*
modification history
--------------------
01f,29apr10,pad Moved extern C statement after include statements.
01e,18sep09,pmr add VSCR definitions
01d,01jun06,pch consolidate vector offset definitions in excPpcLib.h
01c,21feb05,asa Fix SPR#102393: removed #if def 0 around altivec register
tables
01b,04oct01,yvp Fix SPR69306: Changed Altivec context pointer from spare4 to
pCoprocCtx.
01a,29mar01,pcs Implement code review suggestions.
*/
#ifndef __INCaltivecPpcLibh
#define __INCaltivecPpcLibh
#include "vxWorks.h"
#ifdef __cplusplus
extern "C" {
#endif
#define VRSAVE_REG 256 /* VRSAVE Register */
/* number of floating-point data registers */
#define ALTIVEC_NUM_REGS 32
#ifndef _ASMLANGUAGE
typedef UINT32 VEC_REG[4]; /* 128 bit vector register */
typedef struct altivecContext
{
VEC_REG vrfile[ALTIVEC_NUM_REGS]; /* VRFILE: 32 Vector Registers */
UINT32 vscr[4]; /* VSCR: vec status and control reg */
UINT32 vrsave; /* VRSAVE: SPR 256 */
UINT32 pad1; /* pad to 16 byte boundary. */
UINT32 pad2;
UINT32 pad3;
} ALTIVEC_CONTEXT;
#define ALTIVECREG_SET ALTIVEC_CONTEXT
#define ALTIVEC_CONTEXT_GET(pTcb) (ALTIVEC_CONTEXT *)(pTcb->pCoprocCtx)
#define ALTIVEC_CONTEXT_SET(pTcb,X) (pTcb->pCoprocCtx=(int)(X))
/* variable declarations */
extern REG_INDEX altivecRegName[]; /* altivec data register table */
extern REG_INDEX altivecCtlRegName[]; /* altivec control register table */
extern WIND_TCB *pAltivecTaskIdPrevious; /* task id for deferred exceptions */
extern FUNCPTR altivecCreateHookRtn; /* arch dependent create hook routine */
extern FUNCPTR altivecDisplayHookRtn; /* arch dependent display routine */
/* function declarations */
IMPORT void altivecArchInit (void);
IMPORT void altivecArchTaskCreateInit (ALTIVEC_CONTEXT *pAltivecContext);
IMPORT void altivecSetNonJava (void);
#endif /* _ASMLANGUAGE */
/* define offsets in ALTIVEC_CONTEXT structure */
#define AVX 0x0
#define AVX_OFFSET(n) (AVX + (n)*16)
#define VSCR_OFFSET (AVX + (ALTIVEC_NUM_REGS)*16) /* offset == 0x200 */
#define VRSAVE_OFFSET (VSCR_OFFSET + 16) /* offset == 0x210 */
#define AVCONTEXT_SIZE 16*(ALTIVEC_NUM_REGS + 2)
/* VSCR definitions */
#define VSCR_CONFIG_WORD 3 /* VSCR word with below bits */
#define VSCR_NJ 0x00010000 /* Non-Java mode */
#define VSCR_SAT 0x00000001 /* Vector Saturation */
#ifdef __cplusplus
}
#endif
#endif /* __INCaltivecPpcLibh */