Re: [PATCH v2] xtensa: implement trap pattern

2015-06-10 Thread augustine.sterl...@gmail.com
On Tue, Jun 9, 2015 at 3:14 PM, Max Filippov jcmvb...@gmail.com wrote:
 gcc/
 * config/xtensa/xtensa.h (TARGET_DEBUG): New definition.
 * config/xtensa/xtensa.md (define_attr type): New type trap.
 (define_insn trap): New definition.
 ---
 Changes v1-v2:
 - drop break.n, replace break 0, 0 with break 1, 15, coded breakpoint
   that transfers control to debugger if present.

This is OK for xtensa. Please apply.


Re: [PATCH v2] xtensa: implement trap pattern

2015-06-10 Thread Max Filippov
On Wed, Jun 10, 2015 at 5:37 PM, augustine.sterl...@gmail.com
augustine.sterl...@gmail.com wrote:
 On Tue, Jun 9, 2015 at 3:14 PM, Max Filippov jcmvb...@gmail.com wrote:
 gcc/
 * config/xtensa/xtensa.h (TARGET_DEBUG): New definition.
 * config/xtensa/xtensa.md (define_attr type): New type trap.
 (define_insn trap): New definition.
 ---
 Changes v1-v2:
 - drop break.n, replace break 0, 0 with break 1, 15, coded breakpoint
   that transfers control to debugger if present.

 This is OK for xtensa. Please apply.

Applied to trunk. Thanks!

-- Max


[PATCH v2] xtensa: implement trap pattern

2015-06-09 Thread Max Filippov
gcc/
* config/xtensa/xtensa.h (TARGET_DEBUG): New definition.
* config/xtensa/xtensa.md (define_attr type): New type trap.
(define_insn trap): New definition.
---
Changes v1-v2:
- drop break.n, replace break 0, 0 with break 1, 15, coded breakpoint
  that transfers control to debugger if present.

 gcc/config/xtensa/xtensa.h  |  1 +
 gcc/config/xtensa/xtensa.md | 15 ++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h
index 011411c..584080b 100644
--- a/gcc/config/xtensa/xtensa.h
+++ b/gcc/config/xtensa/xtensa.h
@@ -67,6 +67,7 @@ extern unsigned xtensa_current_frame_size;
 #define TARGET_THREADPTR   XCHAL_HAVE_THREADPTR
 #define TARGET_LOOPS   XCHAL_HAVE_LOOPS
 #define TARGET_WINDOWED_ABI(XSHAL_ABI == XTHAL_ABI_WINDOWED)
+#define TARGET_DEBUG   XCHAL_HAVE_DEBUG
 
 #define TARGET_DEFAULT \
   ((XCHAL_HAVE_L32R? 0 : MASK_CONST16) |   \
diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
index 6d84384..a577aa3 100644
--- a/gcc/config/xtensa/xtensa.md
+++ b/gcc/config/xtensa/xtensa.md
@@ -86,7 +86,7 @@
 ;; Attributes.
 
 (define_attr type
-  
unknown,jump,call,load,store,move,arith,multi,nop,farith,fmadd,fconv,fload,fstore,mul16,mul32,div32,mac16,rsr,wsr,entry
+  
unknown,jump,call,load,store,move,arith,multi,nop,farith,fmadd,fconv,fload,fstore,mul16,mul32,div32,mac16,rsr,wsr,entry,trap
   (const_string unknown))
 
 (define_attr mode
@@ -1764,6 +1764,19 @@
   [(set_attr length 0)
(set_attr type nop)])
 
+(define_insn trap
+  [(trap_if (const_int 1) (const_int 0))]
+  
+{
+  if (TARGET_DEBUG)
+return break\t1, 15;
+  else
+return (TARGET_DENSITY ? ill.n : ill);
+}
+  [(set_attr typetrap)
+   (set_attr modenone)
+   (set_attr length  3)])
+
 ;; Setting up a frame pointer is tricky for Xtensa because GCC doesn't
 ;; know if a frame pointer is required until the reload pass, and
 ;; because there may be an incoming argument value in the hard frame
-- 
1.8.1.4