initial buildroot for linux 5.15
This commit is contained in:
@@ -0,0 +1,243 @@
|
||||
From b92c22b144d063c4436a6693045ceb57d344c495 Mon Sep 17 00:00:00 2001
|
||||
From: Claudiu Zissulescu <claziss@synopsys.com>
|
||||
Date: Wed, 11 Nov 2020 12:31:10 +0200
|
||||
Subject: [PATCH] arc: Refurbish adc/sbc patterns
|
||||
|
||||
The adc/sbc patterns were unecessary spliting, remove that and
|
||||
associated functions.
|
||||
|
||||
gcc/ChangeLog:
|
||||
|
||||
2020-10-11 Claudiu Zissulescu <claziss@synopsys.com>
|
||||
|
||||
* config/arc/arc-protos.h (arc_scheduling_not_expected): Remove
|
||||
it.
|
||||
(arc_sets_cc_p): Likewise.
|
||||
(arc_need_delay): Likewise.
|
||||
* config/arc/arc.c (arc_sets_cc_p): Likewise.
|
||||
(arc_need_delay): Likewise.
|
||||
(arc_scheduling_not_expected): Likewise.
|
||||
* config/arc/arc.md: Convert adc/sbc patterns to simple
|
||||
instruction definitions.
|
||||
|
||||
Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
|
||||
|
||||
Downloaded from upstream commit
|
||||
https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/commit/b92c22b144d063c4436a6693045ceb57d344c495
|
||||
|
||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
---
|
||||
gcc/config/arc/arc-protos.h | 3 --
|
||||
gcc/config/arc/arc.c | 53 ---------------------
|
||||
gcc/config/arc/arc.md | 95 +++++++++++--------------------------
|
||||
3 files changed, 29 insertions(+), 122 deletions(-)
|
||||
|
||||
diff --git a/gcc/config/arc/arc-protos.h b/gcc/config/arc/arc-protos.h
|
||||
index c72d78e3b9e..de4cf47c818 100644
|
||||
--- a/gcc/config/arc/arc-protos.h
|
||||
+++ b/gcc/config/arc/arc-protos.h
|
||||
@@ -90,10 +90,7 @@ extern void split_subsi (rtx *);
|
||||
extern void arc_split_move (rtx *);
|
||||
extern const char *arc_short_long (rtx_insn *insn, const char *, const char *);
|
||||
extern rtx arc_regno_use_in (unsigned int, rtx);
|
||||
-extern bool arc_scheduling_not_expected (void);
|
||||
-extern bool arc_sets_cc_p (rtx_insn *insn);
|
||||
extern int arc_label_align (rtx_insn *label);
|
||||
-extern bool arc_need_delay (rtx_insn *insn);
|
||||
extern bool arc_text_label (rtx_insn *insn);
|
||||
|
||||
extern bool arc_short_comparison_p (rtx, int);
|
||||
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
|
||||
index 5a7b0cb6696..c3ee9181f93 100644
|
||||
--- a/gcc/config/arc/arc.c
|
||||
+++ b/gcc/config/arc/arc.c
|
||||
@@ -10341,59 +10341,6 @@ arc_attr_type (rtx_insn *insn)
|
||||
return get_attr_type (insn);
|
||||
}
|
||||
|
||||
-/* Return true if insn sets the condition codes. */
|
||||
-
|
||||
-bool
|
||||
-arc_sets_cc_p (rtx_insn *insn)
|
||||
-{
|
||||
- if (NONJUMP_INSN_P (insn))
|
||||
- if (rtx_sequence *seq = dyn_cast <rtx_sequence *> (PATTERN (insn)))
|
||||
- insn = seq->insn (seq->len () - 1);
|
||||
- return arc_attr_type (insn) == TYPE_COMPARE;
|
||||
-}
|
||||
-
|
||||
-/* Return true if INSN is an instruction with a delay slot we may want
|
||||
- to fill. */
|
||||
-
|
||||
-bool
|
||||
-arc_need_delay (rtx_insn *insn)
|
||||
-{
|
||||
- rtx_insn *next;
|
||||
-
|
||||
- if (!flag_delayed_branch)
|
||||
- return false;
|
||||
- /* The return at the end of a function needs a delay slot. */
|
||||
- if (NONJUMP_INSN_P (insn) && GET_CODE (PATTERN (insn)) == USE
|
||||
- && (!(next = next_active_insn (insn))
|
||||
- || ((!NONJUMP_INSN_P (next) || GET_CODE (PATTERN (next)) != SEQUENCE)
|
||||
- && arc_attr_type (next) == TYPE_RETURN))
|
||||
- && (!TARGET_PAD_RETURN
|
||||
- || (prev_active_insn (insn)
|
||||
- && prev_active_insn (prev_active_insn (insn))
|
||||
- && prev_active_insn (prev_active_insn (prev_active_insn (insn))))))
|
||||
- return true;
|
||||
- if (NONJUMP_INSN_P (insn)
|
||||
- ? (GET_CODE (PATTERN (insn)) == USE
|
||||
- || GET_CODE (PATTERN (insn)) == CLOBBER
|
||||
- || GET_CODE (PATTERN (insn)) == SEQUENCE)
|
||||
- : JUMP_P (insn)
|
||||
- ? (GET_CODE (PATTERN (insn)) == ADDR_VEC
|
||||
- || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
|
||||
- : !CALL_P (insn))
|
||||
- return false;
|
||||
- return num_delay_slots (insn) != 0;
|
||||
-}
|
||||
-
|
||||
-/* Return true if the scheduling pass(es) has/have already run,
|
||||
- i.e. where possible, we should try to mitigate high latencies
|
||||
- by different instruction selection. */
|
||||
-
|
||||
-bool
|
||||
-arc_scheduling_not_expected (void)
|
||||
-{
|
||||
- return cfun->machine->arc_reorg_started;
|
||||
-}
|
||||
-
|
||||
/* Code has a minimum p2 alignment of 1, which we must restore after
|
||||
an ADDR_DIFF_VEC. */
|
||||
|
||||
diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
|
||||
index f91adbc0d94..c635b69ddd5 100644
|
||||
--- a/gcc/config/arc/arc.md
|
||||
+++ b/gcc/config/arc/arc.md
|
||||
@@ -2847,43 +2847,25 @@ archs4x, archs4xd"
|
||||
(set_attr "type" "compare")
|
||||
(set_attr "length" "4,4,8")])
|
||||
|
||||
-; w/c/c comes first (rather than w/0/C_0) to prevent the middle-end
|
||||
-; needlessly prioritizing the matching constraint.
|
||||
-; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional
|
||||
-; execution is used where possible.
|
||||
-(define_insn_and_split "adc"
|
||||
- [(set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w,Rcw,w")
|
||||
- (plus:SI (plus:SI (ltu:SI (reg:CC_C CC_REG) (const_int 0))
|
||||
- (match_operand:SI 1 "nonmemory_operand"
|
||||
- "%c,0,c,0,cCal"))
|
||||
- (match_operand:SI 2 "nonmemory_operand" "c,C_0,L,I,cCal")))]
|
||||
+(define_insn "adc"
|
||||
+ [(set (match_operand:SI 0 "register_operand" "=r, r,r,r, r,r")
|
||||
+ (plus:SI
|
||||
+ (plus:SI
|
||||
+ (ltu:SI (reg:CC_C CC_REG) (const_int 0))
|
||||
+ (match_operand:SI 1 "nonmemory_operand" "%r, 0,r,0,Cal,r"))
|
||||
+ (match_operand:SI 2 "nonmemory_operand" "r,C_0,L,I, r,Cal")))]
|
||||
"register_operand (operands[1], SImode)
|
||||
|| register_operand (operands[2], SImode)"
|
||||
"@
|
||||
- adc %0,%1,%2
|
||||
- add.cs %0,%1,1
|
||||
- adc %0,%1,%2
|
||||
- adc %0,%1,%2
|
||||
- adc %0,%1,%2"
|
||||
- ; if we have a bad schedule after sched2, split.
|
||||
- "reload_completed
|
||||
- && !optimize_size && (!TARGET_ARC600_FAMILY)
|
||||
- && arc_scheduling_not_expected ()
|
||||
- && arc_sets_cc_p (prev_nonnote_insn (insn))
|
||||
- /* If next comes a return or other insn that needs a delay slot,
|
||||
- expect the adc to get into the delay slot. */
|
||||
- && next_nonnote_insn (insn)
|
||||
- && !arc_need_delay (next_nonnote_insn (insn))
|
||||
- /* Restore operands before emitting. */
|
||||
- && (extract_insn_cached (insn), 1)"
|
||||
- [(set (match_dup 0) (match_dup 3))
|
||||
- (cond_exec
|
||||
- (ltu (reg:CC_C CC_REG) (const_int 0))
|
||||
- (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1))))]
|
||||
- "operands[3] = simplify_gen_binary (PLUS, SImode, operands[1], operands[2]);"
|
||||
+ adc\\t%0,%1,%2
|
||||
+ add.cs\\t%0,%1,1
|
||||
+ adc\\t%0,%1,%2
|
||||
+ adc\\t%0,%1,%2
|
||||
+ adc\\t%0,%1,%2
|
||||
+ adc\\t%0,%1,%2"
|
||||
[(set_attr "cond" "use")
|
||||
(set_attr "type" "cc_arith")
|
||||
- (set_attr "length" "4,4,4,4,8")])
|
||||
+ (set_attr "length" "4,4,4,4,8,8")])
|
||||
|
||||
; combiner-splitter cmp / scc -> cmp / adc
|
||||
(define_split
|
||||
@@ -3015,7 +2997,7 @@ archs4x, archs4xd"
|
||||
DONE;
|
||||
}
|
||||
emit_insn (gen_sub_f (l0, l1, l2));
|
||||
- emit_insn (gen_sbc (h0, h1, h2, gen_rtx_REG (CCmode, CC_REG)));
|
||||
+ emit_insn (gen_sbc (h0, h1, h2));
|
||||
DONE;
|
||||
")
|
||||
|
||||
@@ -3030,44 +3012,25 @@ archs4x, archs4xd"
|
||||
(set_attr "type" "cc_arith")
|
||||
(set_attr "length" "4")])
|
||||
|
||||
-; w/c/c comes first (rather than Rcw/0/C_0) to prevent the middle-end
|
||||
-; needlessly prioritizing the matching constraint.
|
||||
-; Rcw/0/C_0 comes before w/c/L so that the lower latency conditional execution
|
||||
-; is used where possible.
|
||||
-(define_insn_and_split "sbc"
|
||||
- [(set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w,Rcw,w")
|
||||
- (minus:SI (minus:SI (match_operand:SI 1 "nonmemory_operand"
|
||||
- "c,0,c,0,cCal")
|
||||
- (ltu:SI (match_operand:CC_C 3 "cc_use_register")
|
||||
- (const_int 0)))
|
||||
- (match_operand:SI 2 "nonmemory_operand" "c,C_0,L,I,cCal")))]
|
||||
+(define_insn "sbc"
|
||||
+ [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r,r,r,r")
|
||||
+ (minus:SI
|
||||
+ (minus:SI
|
||||
+ (match_operand:SI 1 "nonmemory_operand" "r, 0,r,0, r,Cal")
|
||||
+ (ltu:SI (reg:CC_C CC_REG) (const_int 0)))
|
||||
+ (match_operand:SI 2 "nonmemory_operand" "r,C_0,L,I,Cal,r")))]
|
||||
"register_operand (operands[1], SImode)
|
||||
|| register_operand (operands[2], SImode)"
|
||||
"@
|
||||
- sbc %0,%1,%2
|
||||
- sub.cs %0,%1,1
|
||||
- sbc %0,%1,%2
|
||||
- sbc %0,%1,%2
|
||||
- sbc %0,%1,%2"
|
||||
- ; if we have a bad schedule after sched2, split.
|
||||
- "reload_completed
|
||||
- && !optimize_size && (!TARGET_ARC600_FAMILY)
|
||||
- && arc_scheduling_not_expected ()
|
||||
- && arc_sets_cc_p (prev_nonnote_insn (insn))
|
||||
- /* If next comes a return or other insn that needs a delay slot,
|
||||
- expect the adc to get into the delay slot. */
|
||||
- && next_nonnote_insn (insn)
|
||||
- && !arc_need_delay (next_nonnote_insn (insn))
|
||||
- /* Restore operands before emitting. */
|
||||
- && (extract_insn_cached (insn), 1)"
|
||||
- [(set (match_dup 0) (match_dup 4))
|
||||
- (cond_exec
|
||||
- (ltu (reg:CC_C CC_REG) (const_int 0))
|
||||
- (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1))))]
|
||||
- "operands[4] = simplify_gen_binary (MINUS, SImode, operands[1], operands[2]);"
|
||||
+ sbc\\t%0,%1,%2
|
||||
+ sub.cs\\t%0,%1,1
|
||||
+ sbc\\t%0,%1,%2
|
||||
+ sbc\\t%0,%1,%2
|
||||
+ sbc\\t%0,%1,%2
|
||||
+ sbc\\t%0,%1,%2"
|
||||
[(set_attr "cond" "use")
|
||||
(set_attr "type" "cc_arith")
|
||||
- (set_attr "length" "4,4,4,4,8")])
|
||||
+ (set_attr "length" "4,4,4,4,8,8")])
|
||||
|
||||
(define_insn "sub_f"
|
||||
[(set (reg:CC CC_REG)
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
From 1557c3d919623a95c2aa090d3018c31401f63f88 Mon Sep 17 00:00:00 2001
|
||||
From: Tamar Christina <tamar.christina@arm.com>
|
||||
Date: Fri, 21 May 2021 12:16:56 +0100
|
||||
Subject: [PATCH] libsanitizer: Remove cyclades from libsanitizer
|
||||
|
||||
The Linux kernel has removed the interface to cyclades from
|
||||
the latest kernel headers[1] due to them being orphaned for the
|
||||
past 13 years.
|
||||
|
||||
libsanitizer uses this header when compiling against glibc, but
|
||||
glibcs itself doesn't seem to have any references to cyclades.
|
||||
|
||||
Further more it seems that the driver is broken in the kernel and
|
||||
the firmware doesn't seem to be available anymore.
|
||||
|
||||
As such since this is breaking the build of libsanitizer (and so the
|
||||
GCC bootstrap[2]) I propose to remove this.
|
||||
|
||||
[1] https://lkml.org/lkml/2021/3/2/153
|
||||
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379
|
||||
|
||||
libsanitizer/ChangeLog:
|
||||
|
||||
PR sanitizer/100379
|
||||
* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick
|
||||
llvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.
|
||||
* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
|
||||
* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
|
||||
---
|
||||
.../sanitizer_common_interceptors_ioctl.inc | 9 ---------
|
||||
.../sanitizer_platform_limits_posix.cpp | 11 -----------
|
||||
.../sanitizer_platform_limits_posix.h | 10 ----------
|
||||
3 files changed, 30 deletions(-)
|
||||
|
||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
||||
index 490a04b2181..42e43a04441 100644
|
||||
--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
||||
+++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
||||
@@ -366,15 +366,6 @@ static void ioctl_table_fill() {
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
// _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
|
||||
- _(CYGETDEFTHRESH, WRITE, sizeof(int));
|
||||
- _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
|
||||
- _(CYGETMON, WRITE, struct_cyclades_monitor_sz);
|
||||
- _(CYGETTHRESH, WRITE, sizeof(int));
|
||||
- _(CYGETTIMEOUT, WRITE, sizeof(int));
|
||||
- _(CYSETDEFTHRESH, NONE, 0);
|
||||
- _(CYSETDEFTIMEOUT, NONE, 0);
|
||||
- _(CYSETTHRESH, NONE, 0);
|
||||
- _(CYSETTIMEOUT, NONE, 0);
|
||||
_(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);
|
||||
_(EQL_ENSLAVE, WRITE, struct_ifreq_sz);
|
||||
_(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);
|
||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
|
||||
index aa845df4dde..badf6a401cc 100644
|
||||
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
|
||||
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
|
||||
@@ -130,7 +130,6 @@ typedef struct user_fpregs elf_fpregset_t;
|
||||
# include <sys/procfs.h>
|
||||
#endif
|
||||
#include <sys/user.h>
|
||||
-#include <linux/cyclades.h>
|
||||
#include <linux/if_eql.h>
|
||||
#include <linux/if_plip.h>
|
||||
#include <linux/lp.h>
|
||||
@@ -443,7 +442,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
|
||||
- unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
|
||||
#if EV_VERSION > (0x010000)
|
||||
unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);
|
||||
#else
|
||||
@@ -809,15 +807,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
|
||||
#endif // SANITIZER_LINUX
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
- unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
|
||||
- unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
|
||||
- unsigned IOCTL_CYGETMON = CYGETMON;
|
||||
- unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;
|
||||
- unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;
|
||||
- unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;
|
||||
- unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;
|
||||
- unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;
|
||||
- unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;
|
||||
unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;
|
||||
unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;
|
||||
unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;
|
||||
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
index d82fd5e4005..dc6423bc297 100644
|
||||
--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
+++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
@@ -974,7 +974,6 @@ extern unsigned struct_vt_mode_sz;
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
extern unsigned struct_ax25_parms_struct_sz;
|
||||
-extern unsigned struct_cyclades_monitor_sz;
|
||||
extern unsigned struct_input_keymap_entry_sz;
|
||||
extern unsigned struct_ipx_config_data_sz;
|
||||
extern unsigned struct_kbdiacrs_sz;
|
||||
@@ -1319,15 +1318,6 @@ extern unsigned IOCTL_VT_WAITACTIVE;
|
||||
#endif // SANITIZER_LINUX
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
-extern unsigned IOCTL_CYGETDEFTHRESH;
|
||||
-extern unsigned IOCTL_CYGETDEFTIMEOUT;
|
||||
-extern unsigned IOCTL_CYGETMON;
|
||||
-extern unsigned IOCTL_CYGETTHRESH;
|
||||
-extern unsigned IOCTL_CYGETTIMEOUT;
|
||||
-extern unsigned IOCTL_CYSETDEFTHRESH;
|
||||
-extern unsigned IOCTL_CYSETDEFTIMEOUT;
|
||||
-extern unsigned IOCTL_CYSETTHRESH;
|
||||
-extern unsigned IOCTL_CYSETTIMEOUT;
|
||||
extern unsigned IOCTL_EQL_EMANCIPATE;
|
||||
extern unsigned IOCTL_EQL_ENSLAVE;
|
||||
extern unsigned IOCTL_EQL_GETMASTRCFG;
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From 326b880b20e5f8187dbda736b4c4c662cbfb00ca Mon Sep 17 00:00:00 2001
|
||||
From: Romain Naour <romain.naour@gmail.com>
|
||||
Date: Tue, 2 May 2017 22:36:15 +0200
|
||||
Subject: [PATCH] uclibc-conf
|
||||
|
||||
[Romain: convert to git patch]
|
||||
Signed-off-by: Romain Naour <romain.naour@gmail.com>
|
||||
---
|
||||
contrib/regression/objs-gcc.sh | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh
|
||||
index 60b0497..6dc7ead 100755
|
||||
--- a/contrib/regression/objs-gcc.sh
|
||||
+++ b/contrib/regression/objs-gcc.sh
|
||||
@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
|
||||
then
|
||||
make all-gdb all-dejagnu all-ld || exit 1
|
||||
make install-gdb install-dejagnu install-ld || exit 1
|
||||
+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
|
||||
+ then
|
||||
+ make all-gdb all-dejagnu all-ld || exit 1
|
||||
+ make install-gdb install-dejagnu install-ld || exit 1
|
||||
elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
|
||||
make bootstrap || exit 1
|
||||
make install || exit 1
|
||||
--
|
||||
2.9.3
|
||||
|
||||
Reference in New Issue
Block a user