Correct options when building for RetroArch.
[SquirrelJME.git] / ratufacoat / include / sjmevdef.h
blob8acc588def9db32bfaa809362fdcbd01c2b18879
1 /* -*- Mode: C; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // SquirrelJME
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // --------------------------------------------------------------------------*/
10 /**
11 * SquirrelJME Virtual Machine Definitions.
13 * @since 2019/10/06
16 /** Header guard. */
17 #ifndef SJME_hGRATUFACOATSJMFHSJMEVDEFH
18 #define SJME_hGRATUFACOATSJMFHSJMEVDEFH
20 /** Anti-C++. */
21 #ifdef _cplusplus
22 #ifndef SJME_CXX_IS_EXTERNED
23 #define SJME_CXX_IS_EXTERNED
24 #define SJME_cXRATUFACOATSJMFHSJMEVDEFH
25 extern "C"
27 #endif /** #ifdef SJME_CXX_IS_EXTERNED */
28 #endif /** #ifdef __cplusplus */
30 /****************************************************************************/
32 /**
33 * Long return value result
35 * @since 2019/12/07
37 typedef struct sjme_jlong_combine
39 /** Low. */
40 sjme_jint lo;
42 /** High. */
43 sjme_jint hi;
44 } sjme_jlong_combine;
46 /**
47 * Division result.
49 * @since 2019/06/20
51 typedef struct sjme_jint_div
53 /** Quotient. */
54 sjme_jint quot;
56 /** Remainder. */
57 sjme_jint rem;
58 } sjme_jint_div;
60 /**
61 * Virtual CPU state.
63 * @since 2019/06/27
65 typedef struct sjme_cpustate sjme_cpustate;
66 struct sjme_cpustate
68 /** PC. */
69 sjme_vmemptr pc;
71 /** Registers. */
72 sjme_jint r[SJME_MAX_REGISTERS];
74 /** Debug: Class name. */
75 sjme_vmemptr debugclassname;
77 /** Debug: Method name. */
78 sjme_vmemptr debugmethodname;
80 /** Debug: Method type. */
81 sjme_vmemptr debugmethodtype;
83 /** Debug: Source file. */
84 sjme_vmemptr debugsourcefile;
86 /** Debug: Current line. */
87 sjme_jint debugline;
89 /** Debug: Java Operation. */
90 sjme_jint debugjop;
92 /** Debug: Java Address. */
93 sjme_jint debugjpc;
95 /** Debug: The Task ID. */
96 sjme_jint taskid;
98 /** The parent CPU state. */
99 sjme_cpustate* parent;
102 /** Virtual CPU. */
103 typedef struct sjme_cpu sjme_cpu;
104 struct sjme_cpu
106 /** The state of this thread. */
107 sjme_jint threadstate;
109 /* System call arguments. */
110 sjme_jint syscallargs[SJME_MAX_SYSCALLARGS];
112 /* System call error numbers. */
113 sjme_jint syscallerr[SJME_SYSCALL_NUM_SYSCALLS];
115 /* Supervisor properties. */
116 sjme_jint supervisorprops[SJME_SUPERPROP_NUM_PROPERTIES];
118 /* Current CPU state. */
119 sjme_cpustate state;
121 /** Stored IPC Exception. */
122 sjme_jint ipcexception;
125 /** Virtual machine state. */
126 struct sjme_jvm
128 /** Virtual memory information. */
129 sjme_vmem* vmem;
131 /** RAM. */
132 sjme_vmemmap* ram;
134 /** ROM. */
135 sjme_vmemmap* rom;
137 /** Configuration space. */
138 sjme_vmemmap* config;
140 /** Framebuffer. */
141 sjme_vmemmap* framebuffer;
143 /** OptionJAR. */
144 sjme_vmemmap* optionjar;
146 /** Preset ROM. */
147 void* presetrom;
149 /** Framebuffer info. */
150 sjme_framebuffer* fbinfo;
152 /** Native functions. */
153 sjme_nativefuncs* nativefuncs;
155 /** Linearly fair CPU execution engine. */
156 sjme_jint fairthreadid;
158 /** Threads. */
159 sjme_cpu threads[SJME_THREAD_MAX];
161 /** Total instruction count. */
162 sjme_jint totalinstructions;
164 /** Did the supervisor boot okay? */
165 sjme_jint supervisorokay;
167 /** Console X position. */
168 sjme_jint conx;
170 /** Console Y position. */
171 sjme_jint cony;
173 /** Console width. */
174 sjme_jint conw;
176 /** Console height. */
177 sjme_jint conh;
179 /** System call static field pointer. */
180 sjme_vmemptr syscallsfp;
182 /** System call code pointer. */
183 sjme_vmemptr syscallcode;
185 /** System call pool pointer. */
186 sjme_vmemptr syscallpool;
188 /** Is debugging enabled? */
189 sjme_jint enabledebug;
191 /** Squelch the framebuffer console? */
192 sjme_jint squelchfbconsole;
195 /****************************************************************************/
197 /** Anti-C++. */
198 #ifdef __cplusplus
199 #ifdef SJME_cXRATUFACOATSJMFHSJMEVDEFH
201 #undef SJME_cXRATUFACOATSJMFHSJMEVDEFH
202 #undef SJME_CXX_IS_EXTERNED
203 #endif /** #ifdef SJME_cXRATUFACOATSJMFHSJMEVDEFH */
204 #endif /** #ifdef __cplusplus */
206 /** Header guard. */
207 #endif /* #ifndef SJME_hGRATUFACOATSJMFHSJMEVDEFH */