12 return (*((
RV64IMACFD*)cpu)->CSR[769LL] >> (extension - 65ULL)) & 1ULL;
20 rm = ((((((
RV64IMACFD*)cpu)->FCSR) >> (5ULL)) & 7ULL)) & 0x7;
35 mask = mask | 5767458ULL;
40 mask = mask | 24576LL;
43 mask = mask | 98304LL;
46 mask = mask | 262144LL;
69 return (*((
RV64IMACFD*)cpu)->CSR[3LL] >> 5ULL) & 7ULL;
89 if (csr == 768LL || csr == 256LL) {
90 return *((
RV64IMACFD*)cpu)->CSR[768LL] | 8589934592ULL | 34359738368ULL;
93 return (((2ULL) << 62) | ((((*((
RV64IMACFD*)cpu)->CSR[769LL]) >> (0LL)) & 4611686018427387903ULL)));
105 else if (csr == 2LL) {
106 *((
RV64IMACFD*)cpu)->CSR[3LL] = ((val & 7ULL) << 5ULL) | (*((
RV64IMACFD*)cpu)->CSR[3LL] & 31ULL);
108 else if (csr == 3LL) {
111 else if (csr == 768LL) {
114 else if (csr == 256LL) {
117 else if (csr != 769LL) {
129 return (reg & mask) / (mask & ~((mask << 1ULL)));
136 return ((reg & ~(mask)) | ((val * (mask & ~((mask << 1ULL)))) & mask));
147 if ((val << 32ULL) == 0LL) {
153 if ((val << 48ULL) == 0LL) {
159 if ((val << 56ULL) == 0LL) {
165 if ((val << 60ULL) == 0LL) {
171 if ((val << 62ULL) == 0LL) {
177 if ((val << 63ULL) == 0LL) {
196 etiss_int32 irq2 = (mcause & 9223372036854775808ULL) != 0LL;
200 bit = bit & 9223372036854775807ULL;
208 if (((
RV64IMACFD*)cpu)->PRIV <= 1LL && (deleg >> bit) & 1ULL) {
210 vector = ((*((
RV64IMACFD*)cpu)->CSR[261LL] & 1ULL) && irq2) ? (bit * 4ULL) : (0LL);
224 vector = ((*((
RV64IMACFD*)cpu)->CSR[773LL] & 1ULL) && irq2) ? (bit * 4ULL) : (0LL);
243 if (cause == -2147483648LL) {
246 else if (cause == -5LL) {
249 else if (cause == -14LL) {
252 else if (cause == -6LL) {
255 else if (cause == -15LL) {
258 else if (cause == -7LL) {
261 else if (cause == -9LL) {
280 if (!(pending_interrupts)) {
286 if (enabled_interrupts == 0LL) {
291 enabled_interrupts = pending_interrupts & deleg & -(s_enabled);
294 if (enabled_interrupts) {
296 if (enabled_interrupts >> 12ULL) {
297 enabled_interrupts = enabled_interrupts >> 12ULL << 12ULL;
299 else if (enabled_interrupts & 2048LL) {
300 enabled_interrupts = 2048LL;
302 else if (enabled_interrupts & 8LL) {
303 enabled_interrupts = 8LL;
305 else if (enabled_interrupts & 128LL) {
306 enabled_interrupts = 128LL;
308 else if (enabled_interrupts & 512LL) {
309 enabled_interrupts = 512LL;
311 else if (enabled_interrupts & 2LL) {
312 enabled_interrupts = 2LL;
314 else if (enabled_interrupts & 32LL) {
315 enabled_interrupts = 32LL;
317 else if (enabled_interrupts & 8192LL) {
318 enabled_interrupts = 8192LL;
320 else if (enabled_interrupts & 1024LL) {
321 enabled_interrupts = 1024LL;
323 else if (enabled_interrupts & 4LL) {
324 enabled_interrupts = 4LL;
326 else if (enabled_interrupts & 64LL) {
327 enabled_interrupts = 64LL;
332 return 9223372036854775808ULL |
RV64IMACFD_ctz(enabled_interrupts);
352 etiss_int128 res = (etiss_int128)(
x) * (etiss_int128)(y);
360 etiss_int128 res = (etiss_int128)(
x) * (etiss_uint128)(y);
368 etiss_uint128 res = (etiss_uint128)(
x) * (etiss_uint128)(y);
etiss_uint64 RV64IMACFD_sstatus_mask(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
etiss_uint64 RV64IMACFD_set_field(etiss_uint64 reg, etiss_uint64 mask, etiss_uint64 val)
void RV64IMACFD_translate_exc_code(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_int32 cause)
etiss_uint64 RV64IMACFD_mulhu(etiss_uint64 x, etiss_uint64 y)
etiss_uint64 RV64IMACFD_csr_read(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_uint32 csr)
etiss_uint64 RV64IMACFD_calc_irq_mcause(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
etiss_uint64 RV64IMACFD_mstatus_mask(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
void RV64IMACFD_csr_write(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_uint32 csr, etiss_uint64 val)
etiss_uint64 RV64IMACFD_get_field(etiss_uint64 reg, etiss_uint64 mask)
etiss_uint8 RV64IMACFD_extension_enabled(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_int8 extension)
Generated on Wed, 08 May 2024 17:36:07 +0200.
void RV64IMACFD_check_irq(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
etiss_int64 RV64IMACFD_mulhsu(etiss_int64 x, etiss_uint64 y)
etiss_int64 RV64IMACFD_mulh(etiss_int64 x, etiss_int64 y)
etiss_uint8 RV64IMACFD_ctz(etiss_uint64 val)
void RV64IMACFD_raise(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_int32 irq, etiss_uint64 mcause)
etiss_uint8 RV64IMACFD_get_rm(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_uint8 rm)
__device__ __2f16 float bool s
etiss_uint64 etiss_get_instret(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
etiss_uint64 etiss_get_time()
etiss_uint64 etiss_get_cycles(ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
basic cpu state structure needed for execution of any cpu architecture.
etiss_uint64 instructionPointer
pointer to next instruction.
etiss_uint32 return_pending
memory access and time synchronization functions.
Generated on Wed, 08 May 2024 17:36:07 +0200.