diff options
author | Bryan Hundven <bryanhundven@gmail.com> | 2015-11-13 01:47:08 -0800 |
---|---|---|
committer | Bryan Hundven <bryanhundven@gmail.com> | 2015-11-13 01:47:08 -0800 |
commit | e78251b75158689ace2194e8c87aa7b7bb5ec951 (patch) | |
tree | 6cabb898a31c4b9f5a6a1e02a2a04ead624873f6 /patches/gcc | |
parent | c96d5df1866ca7d2898cf4877d8efbaed1751616 (diff) | |
parent | d1578acf3cd00754f560e0bbfc3fc5f957f940f1 (diff) | |
download | crosstool-ng-e78251b75158689ace2194e8c87aa7b7bb5ec951.tar.gz crosstool-ng-e78251b75158689ace2194e8c87aa7b7bb5ec951.tar.bz2 crosstool-ng-e78251b75158689ace2194e8c87aa7b7bb5ec951.zip |
Merge pull request #253 from jcmvbkbc/xtensa-for-mainline-20151113
Add support for Xtensa architecture
Diffstat (limited to 'patches/gcc')
-rw-r--r-- | patches/gcc/5.2.0/110-xtensa-implement-trap-pattern.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/patches/gcc/5.2.0/110-xtensa-implement-trap-pattern.patch b/patches/gcc/5.2.0/110-xtensa-implement-trap-pattern.patch new file mode 100644 index 00000000..33045322 --- /dev/null +++ b/patches/gcc/5.2.0/110-xtensa-implement-trap-pattern.patch @@ -0,0 +1,64 @@ +From d462e776df56a72f68545054f6d722bf447f0519 Mon Sep 17 00:00:00 2001 +From: Max Filippov <jcmvbkbc@gmail.com> +Date: Mon, 8 Jun 2015 22:29:11 +0300 +Subject: [PATCH] xtensa: implement trap pattern + +gcc/ + * config/xtensa/xtensa.h (TARGET_DEBUG): New definition. + * config/xtensa/xtensa.md (define_attr "type"): New type "trap". + (define_insn "trap"): New definition. + +Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> +--- + 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 "type" "trap") ++ (set_attr "mode" "none") ++ (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 + |