aboutsummaryrefslogtreecommitdiff
path: root/sim/txvu/vu.h
blob: b983d88d87a9cebbda73cbe2797deb1aa1dbd381 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*  Copyright (C) 1998, Cygnus Solutions

    */

#ifndef VU_H_
#define VU_H_

#include "sim-main.h"
#include <sys/types.h>

typedef u_long MEM_Entry_Type[4];
typedef u_long uMEM_Entry_Type[2];

typedef enum { VU_READY, VU_RUN, VU_BREAK } RunState;

/* See VU Specifications (Ver. 2.10), p7-11 */
typedef struct {
    u_long vbs : 1;		/* busy		0: Idle, 	  1: Busy  */
    u_long vds : 1;		/* D bit stop 	0: No D bit stop, 1: D bit stop */
    u_long vts : 1;		/* T bit stop 	0: No T bit stop, 1: T bit stop*/
    u_long vfs : 1;		/* ForceBreak stop 0: no ForceBreak stop, 1: ForceBreak stop*/
    u_long vgw : 1;		/* XGKICK wait 	0: Do not wait, 1: Wait */
    u_long div : 1;		/* DIV busy 	0: Idle, 1: Busy*/
    u_long efu : 1;		/* EF busy	0: Idle, 1: Busy */
    u_long reserved_2:25;
} VpeStat;

typedef struct {
	float VF[32][4];
	short VI[16];
	u_long MST;
	u_long MMC;
	u_long MCP;
	u_long MR;
	u_long MI;
	u_long MQ;
	u_long MP;
	u_long MTPC;
	VpeStat VPE_STAT;
} VectorUnitRegs;

typedef struct {
	MEM_Entry_Type *MEM; /* VU (data) memory */
	uMEM_Entry_Type *uMEM; /* Micro (instruction) memory */
	VectorUnitRegs regs;
	RunState runState;
} VectorUnitState;

#endif