#include "sim-xcat.h"
-#ifdef __STDC__
+#if defined(__STDC__) && defined(signed)
/* If signed were defined to be say __signed (ie, some versions of Linux),
then the signedN macro would not work correctly. If we have a standard
compiler, we have signed. */
#define ROTRn XCONCAT2(ROTR,N)
#define SEXTn XCONCAT2(SEXT,N)
+/* TAGS: MASKED16 MASKED32 MASKED64 */
INLINE_SIM_BITS\
(unsignedN)
return (word & MASKn (start, stop));
}
+/* TAGS: LSMASKED16 LSMASKED32 LSMASKED64 */
INLINE_SIM_BITS\
(unsignedN)
return (word & LSMASKn (nr_bits));
}
+/* TAGS: MSMASKED16 MSMASKED32 MSMASKED64 */
INLINE_SIM_BITS\
(unsignedN)
return (word & MSMASKn (nr_bits));
}
+/* TAGS: EXTRACTED16 EXTRACTED32 EXTRACTED64 */
INLINE_SIM_BITS\
(unsignedN)
return val;
}
+/* TAGS: INSERTED16 INSERTED32 INSERTED64 */
INLINE_SIM_BITS\
(unsignedN)
return val;
}
+/* TAGS: ROT16 ROT32 ROT64 */
INLINE_SIM_BITS\
(unsignedN)
return val;
}
+/* TAGS: ROTL16 ROTL32 ROTL64 */
INLINE_SIM_BITS\
(unsignedN)
return result;
}
+/* TAGS: ROTR16 ROTR32 ROTR64 */
INLINE_SIM_BITS\
(unsignedN)
return result;
}
+/* TAGS: SEXT16 SEXT32 SEXT64 */
INLINE_SIM_BITS\
(unsignedN)
#define sim_core_read_unaligned_N XCONCAT2(sim_core_read_unaligned_,N)
#define sim_core_write_unaligned_N XCONCAT2(sim_core_write_unaligned_,N)
+/* TAGS: sim_core_read_aligned_1 sim_core_read_aligned_2 */
+/* TAGS: sim_core_read_aligned_4 sim_core_read_aligned_8 */
+/* TAGS: sim_core_read_aligned_word */
INLINE_SIM_CORE(unsigned_N)
sim_core_read_aligned_N(sim_cpu *cpu,
#endif
val = T2H_N (*(unsigned_N*) sim_core_translate (mapping, addr));
if (TRACE_P (cpu, TRACE_CORE_IDX))
- trace_printf (CPU_STATE (cpu), cpu,
- "sim-n-core.c:%d: read-%d %s:0x%08lx -> 0x%lx\n",
- __LINE__,
- sizeof (unsigned_N),
- sim_core_map_to_str (map),
- (unsigned long) addr,
- (unsigned long) val);
+ if (sizeof (unsigned_N) > 4)
+ trace_printf (CPU_STATE (cpu), cpu,
+ "sim-n-core.c:%d: read-%d %s:0x%08lx -> 0x%08lx%08lx\n",
+ __LINE__,
+ sizeof (unsigned_N),
+ sim_core_map_to_str (map),
+ (unsigned long) addr,
+ (unsigned long) (((unsigned64)(val)) >> 32),
+ (unsigned long) val);
+ else
+ trace_printf (CPU_STATE (cpu), cpu,
+ "sim-n-core.c:%d: read-%d %s:0x%08lx -> 0x%0*lx\n",
+ __LINE__,
+ sizeof (unsigned_N),
+ sim_core_map_to_str (map),
+ (unsigned long) addr,
+ sizeof (unsigned_N) * 2,
+ (unsigned long) val);
return val;
}
+/* TAGS: sim_core_read_unaligned_1 sim_core_read_unaligned_2 */
+/* TAGS: sim_core_read_unaligned_4 sim_core_read_unaligned_8 */
+/* TAGS: sim_core_read_unaligned_word */
INLINE_SIM_CORE(unsigned_N)
sim_core_read_unaligned_N(sim_cpu *cpu,
}
}
+/* TAGS: sim_core_write_aligned_1 sim_core_write_aligned_2 */
+/* TAGS: sim_core_write_aligned_4 sim_core_write_aligned_8 */
+/* TAGS: sim_core_write_aligned_word */
INLINE_SIM_CORE(void)
sim_core_write_aligned_N(sim_cpu *cpu,
#endif
*(unsigned_N*) sim_core_translate (mapping, addr) = H2T_N (val);
if (TRACE_P (cpu, TRACE_CORE_IDX))
- trace_printf (CPU_STATE (cpu), cpu,
- "sim-n-core.c:%d: write-%d %s:0x%08lx <- 0x%lx\n",
- __LINE__,
- sizeof (unsigned_N),
- sim_core_map_to_str (map),
- (unsigned long) addr,
- (unsigned long) val);
+ if (sizeof (unsigned_N) > 4)
+ trace_printf (CPU_STATE (cpu), cpu,
+ "sim-n-core.c:%d: write-%d %s:0x%08lx <- 0x%08lx%08lx\n",
+ __LINE__,
+ sizeof (unsigned_N),
+ sim_core_map_to_str (map),
+ (unsigned long) addr,
+ (unsigned long) (((unsigned64)(val)) >> 32),
+ (unsigned long) val);
+ else
+ trace_printf (CPU_STATE (cpu), cpu,
+ "sim-n-core.c:%d: write-%d %s:0x%08lx <- 0x%0*lx\n",
+ __LINE__,
+ sizeof (unsigned_N),
+ sim_core_map_to_str (map),
+ (unsigned long) addr,
+ sizeof (unsigned_N) * 2,
+ (unsigned long) val);
}
+/* TAGS: sim_core_write_unaligned_1 sim_core_write_unaligned_2 */
+/* TAGS: sim_core_write_unaligned_4 sim_core_write_unaligned_8 */
+/* TAGS: sim_core_write_unaligned_word */
INLINE_SIM_CORE(void)
sim_core_write_unaligned_N(sim_cpu *cpu,
}
case FORCED_ALIGNMENT:
sim_core_write_aligned_N (cpu, cia, map, addr & ~alignment, val);
+ break;
case MIXED_ALIGNMENT:
sim_engine_abort (CPU_STATE (cpu), cpu, cia,
"internal error - %s - mixed alignment",