+2012-05-29 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/cris/cris.h (TARGET_HAS_BREAK, TARGET_TRAP_USING_BREAK8):
+ New macros.
+ * config/cris/cris.md ("trap"): Define, enabled for
+ TARGET_TRAP_USING_BREAK8.
+ * config/cris/cris.opt (mtrap-using-break8): New option.
+
2012-05-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/25137
#define TARGET_HAS_MUL_INSNS (cris_cpu_version >= CRIS_CPU_NG)
#define TARGET_HAS_LZ (cris_cpu_version >= CRIS_CPU_ETRAX4)
+#define TARGET_HAS_BREAK (cris_cpu_version >= CRIS_CPU_ETRAX4)
#define TARGET_HAS_SWAP (cris_cpu_version >= CRIS_CPU_SVINTO)
#define TARGET_V32 (cris_cpu_version >= CRIS_CPU_V32)
+/* The "break" instruction was introduced with ETRAX 4. */
+#define TARGET_TRAP_USING_BREAK8 \
+ (cris_trap_using_break8 == 2 ? TARGET_HAS_BREAK : cris_trap_using_break8)
+
/* Node: Storage Layout */
#define BITS_BIG_ENDIAN 0
""
"nop"
[(set_attr "cc" "none")])
+
+;; Same as the gdb trap breakpoint, will cause a SIGTRAP for
+;; cris-linux* and crisv32-linux*, as intended. Will work in
+;; freestanding environments with sufficient framework.
+(define_insn "trap"
+ [(trap_if (const_int 1) (const_int 8))]
+ "TARGET_TRAP_USING_BREAK8"
+ "break 8")
\f
;; We need to stop accesses to the stack after the memory is
;; deallocated. Unfortunately, reorg doesn't look at naked clobbers,
max-stackframe=
Target Report RejectNegative Joined Undocumented Var(cris_max_stackframe_str)
+mtrap-using-break8
+Target Report Var(cris_trap_using_break8) Init(2)
+Emit traps as \"break 8\", default for CRIS v3 and up. If disabled, calls to abort() are used.
+
; TARGET_SVINTO: Currently this just affects alignment. FIXME:
; Redundant with TARGET_ALIGN_BY_32, or put machine stuff here?
; This and the others below could just as well be variables and