annotate jagcpu.h @ 2663:568c1c22f3e3

Allow changing at least some settings in web build without breaking
author Michael Pavone <pavone@retrodev.com>
date Thu, 06 Mar 2025 01:33:03 -0800
parents 10c7f1e44c47
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1118
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #ifndef JAGCPU_H_
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 #define JAGCPU_H_
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3
2602
10c7f1e44c47 Fix some older targets that are maybe still useful
Michael Pavone <pavone@retrodev.com>
parents: 1118
diff changeset
4 #include "backend.h"
10c7f1e44c47 Fix some older targets that are maybe still useful
Michael Pavone <pavone@retrodev.com>
parents: 1118
diff changeset
5
1118
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 enum {
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 JAG_ADD,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 JAG_ADDC,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 JAG_ADDQ,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 JAG_ADDQT,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 JAG_SUB,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 JAG_SUBC,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 JAG_SUBQ,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 JAG_SUBQT,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 JAG_NEG,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 JAG_AND,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 JAG_OR,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 JAG_XOR,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19 JAG_NOT,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 JAG_BTST,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 JAG_BSET,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 JAG_BCLR,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 JAG_MULT,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 JAG_IMULT,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25 JAG_IMULTN,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 JAG_RESMAC,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27 JAG_IMACN,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 JAG_DIV,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29 JAG_ABS,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30 JAG_SH,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 JAG_SHLQ,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
32 JAG_SHRQ,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
33 JAG_SHA,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
34 JAG_SHARQ,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
35 JAG_ROR,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
36 JAG_RORQ,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
37 JAG_CMP,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
38 JAG_CMPQ,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
39 GPU_SAT8,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
40 DSP_SUBQMOD = GPU_SAT8,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
41 GPU_SAT16,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
42 DSP_SAT16S = GPU_SAT16,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
43 JAG_MOVE,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
44 JAG_MOVEQ,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
45 JAG_MOVETA,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
46 JAG_MOVEFA,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
47 JAG_MOVEI,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
48 JAG_LOADB,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
49 JAG_LOADW,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
50 JAG_LOAD,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
51 GPU_LOADP,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
52 DSP_SAT32S = GPU_LOADP,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
53 JAG_LOAD_R14_REL,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
54 JAG_LOAD_R15_REL,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
55 JAG_STOREB,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
56 JAG_STOREW,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
57 JAG_STORE,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
58 GPU_STOREP,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
59 DSP_MIRROR = GPU_STOREP,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
60 JAG_STORE_R14_REL,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
61 JAG_STORE_R15_REL,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
62 JAG_MOVE_PC,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
63 JAG_JUMP,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
64 JAG_JR,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
65 JAG_MMULT,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
66 JAG_MTOI,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
67 JAG_NORMI,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
68 JAG_NOP,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
69 JAG_LOAD_R14_INDEXED,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
70 JAG_LOAD_R15_INDEXED,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
71 JAG_STORE_R14_INDEXED,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
72 JAG_STORE_R15_INDEXED,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
73 GPU_SAT24,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
74 GPU_PACK,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
75 DSP_ADDQMOD = GPU_PACK,
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
76 GPU_UNPACK //virtual opcode, UNPACK is PACK with a reg1 field set to 1
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
77 };
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
78
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
79 #define JAGCPU_NOREG -1
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
80
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
81
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
82 typedef struct {
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
83 cpu_options gen;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
84 int8_t regs[32];
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
85 int8_t result;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
86 int8_t resultreg;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
87 int8_t bankptr;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
88 uint8_t is_gpu;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
89 } jag_cpu_options;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
90
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
91 typedef struct {
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
92 uint32_t read_high;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
93 } jag_gpu;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
94
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
95 typedef struct {
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
96 uint8_t mac_high;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
97 uint8_t modulo;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
98 } jag_dsp;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
99
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
100 typedef struct {
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
101 uint32_t cycles;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
102 uint32_t regs[64];
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
103 uint32_t *main;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
104 uint32_t *alt;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
105 uint32_t pc;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
106 uint32_t result;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
107 uint32_t flags;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
108 uint32_t flags_pending;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
109 uint32_t remainder;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
110 union {
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
111 jag_gpu gpu;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
112 jag_dsp dsp;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
113 };
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
114 int8_t writeback;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
115 int8_t resultreg;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
116 uint8_t is_gpu;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
117 } jag_cpu;
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
118
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
119 uint16_t jag_opcode(uint16_t inst, uint8_t is_gpu);
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
120 char * jag_cc(uint16_t inst);
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
121 uint16_t jag_reg2(uint16_t inst);
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
122 uint32_t jag_jr_dest(uint16_t inst, uint32_t address);
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
123 int jag_cpu_disasm(uint16_t **stream, uint32_t address, char *dst, uint8_t is_gpu, uint8_t labels);
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
124
c48d5191ddc9 Added Jaguar header missed in earlier commits
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
125 #endif