aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2020-01-20 20:27:51 +0000
committerDimitry Andric <dim@FreeBSD.org>2020-01-20 20:27:51 +0000
commitb14637d118e110006a149a79b649c5695e7f419a (patch)
tree08af367508a1250d4cfff69fae52870a84a44456
parent2dd94b045e8c069c1a748d40d30d979e30e02fc9 (diff)
parentf8e1cfad89431e1a6429dcc4b9d33db000957ee3 (diff)
Notes
-rw-r--r--contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp27
-rw-r--r--contrib/llvm-project/clang/lib/Basic/Targets/PPC.h7
-rw-r--r--contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp5
-rw-r--r--contrib/llvm-project/llvm/include/llvm/ADT/Triple.h4
-rw-r--r--contrib/llvm-project/llvm/lib/Support/Triple.cpp5
-rw-r--r--contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td2
-rw-r--r--contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp2
-rw-r--r--lib/libc/stdlib/qsort.39
-rw-r--r--share/misc/committers-ports.dot3
-rw-r--r--sys/kern/vfs_cache.c29
-rw-r--r--tools/build/mk/OptionalObsoleteFiles.inc61
11 files changed, 58 insertions, 96 deletions
diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp b/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp
index a40991048873..baa96e21707b 100644
--- a/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp
+++ b/contrib/llvm-project/clang/lib/Basic/Targets/PPC.cpp
@@ -157,6 +157,8 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts,
Builder.defineMacro("_ARCH_A2Q");
Builder.defineMacro("_ARCH_QP");
}
+ if (ArchDefs & ArchDefineE500)
+ Builder.defineMacro("__NO_LWSYNC__");
if (getTriple().getVendor() == llvm::Triple::BGQ) {
Builder.defineMacro("__bg__");
@@ -312,6 +314,11 @@ bool PPCTargetInfo::initFeatureMap(
.Case("pwr8", true)
.Default(false);
+ Features["spe"] = llvm::StringSwitch<bool>(CPU)
+ .Case("8548", true)
+ .Case("e500", true)
+ .Default(false);
+
if (!ppcUserFeaturesCheck(Diags, FeaturesVec))
return false;
@@ -449,16 +456,16 @@ ArrayRef<TargetInfo::AddlRegName> PPCTargetInfo::getGCCAddlRegNames() const {
}
static constexpr llvm::StringLiteral ValidCPUNames[] = {
- {"generic"}, {"440"}, {"450"}, {"601"}, {"602"},
- {"603"}, {"603e"}, {"603ev"}, {"604"}, {"604e"},
- {"620"}, {"630"}, {"g3"}, {"7400"}, {"g4"},
- {"7450"}, {"g4+"}, {"750"}, {"970"}, {"g5"},
- {"a2"}, {"a2q"}, {"e500mc"}, {"e5500"}, {"power3"},
- {"pwr3"}, {"power4"}, {"pwr4"}, {"power5"}, {"pwr5"},
- {"power5x"}, {"pwr5x"}, {"power6"}, {"pwr6"}, {"power6x"},
- {"pwr6x"}, {"power7"}, {"pwr7"}, {"power8"}, {"pwr8"},
- {"power9"}, {"pwr9"}, {"powerpc"}, {"ppc"}, {"powerpc64"},
- {"ppc64"}, {"powerpc64le"}, {"ppc64le"},
+ {"generic"}, {"440"}, {"450"}, {"601"}, {"602"},
+ {"603"}, {"603e"}, {"603ev"}, {"604"}, {"604e"},
+ {"620"}, {"630"}, {"g3"}, {"7400"}, {"g4"},
+ {"7450"}, {"g4+"}, {"750"}, {"8548"}, {"970"},
+ {"g5"}, {"a2"}, {"a2q"}, {"e500"}, {"e500mc"},
+ {"e5500"}, {"power3"}, {"pwr3"}, {"power4"}, {"pwr4"},
+ {"power5"}, {"pwr5"}, {"power5x"}, {"pwr5x"}, {"power6"},
+ {"pwr6"}, {"power6x"}, {"pwr6x"}, {"power7"}, {"pwr7"},
+ {"power8"}, {"pwr8"}, {"power9"}, {"pwr9"}, {"powerpc"},
+ {"ppc"}, {"powerpc64"}, {"ppc64"}, {"powerpc64le"}, {"ppc64le"},
};
bool PPCTargetInfo::isValidCPUName(StringRef Name) const {
diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/PPC.h b/contrib/llvm-project/clang/lib/Basic/Targets/PPC.h
index 72a82f0ed7c7..3b3c2cb27e02 100644
--- a/contrib/llvm-project/clang/lib/Basic/Targets/PPC.h
+++ b/contrib/llvm-project/clang/lib/Basic/Targets/PPC.h
@@ -44,7 +44,8 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public TargetInfo {
ArchDefinePwr8 = 1 << 12,
ArchDefinePwr9 = 1 << 13,
ArchDefineA2 = 1 << 14,
- ArchDefineA2q = 1 << 15
+ ArchDefineA2q = 1 << 15,
+ ArchDefineE500 = 1 << 16
} ArchDefineTypes;
@@ -85,8 +86,7 @@ public:
// Note: GCC recognizes the following additional cpus:
// 401, 403, 405, 405fp, 440fp, 464, 464fp, 476, 476fp, 505, 740, 801,
- // 821, 823, 8540, 8548, e300c2, e300c3, e500mc64, e6500, 860, cell,
- // titan, rs64.
+ // 821, 823, 8540, e300c2, e300c3, e500mc64, e6500, 860, cell, titan, rs64.
bool isValidCPUName(StringRef Name) const override;
void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override;
@@ -145,6 +145,7 @@ public:
ArchDefinePwr9 | ArchDefinePwr8 | ArchDefinePwr7 |
ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 |
ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq)
+ .Cases("8548", "e500", ArchDefineE500)
.Default(ArchDefineNone);
}
return CPUKnown;
diff --git a/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp b/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp
index 59ff7cbc787c..183f55237913 100644
--- a/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp
+++ b/contrib/llvm-project/clang/lib/Driver/ToolChains/Arch/PPC.cpp
@@ -52,10 +52,12 @@ std::string ppc::getPPCTargetCPU(const ArgList &Args) {
.Case("7450", "7450")
.Case("G4+", "g4+")
.Case("750", "750")
+ .Case("8548", "e500")
.Case("970", "970")
.Case("G5", "g5")
.Case("a2", "a2")
.Case("a2q", "a2q")
+ .Case("e500", "e500")
.Case("e500mc", "e500mc")
.Case("e5500", "e5500")
.Case("power3", "pwr3")
@@ -100,6 +102,9 @@ const char *ppc::getPPCAsmModeForCPU(StringRef Name) {
void ppc::getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple,
const ArgList &Args,
std::vector<StringRef> &Features) {
+ if (Triple.getSubArch() == llvm::Triple::PPCSubArch_spe)
+ Features.push_back("+spe");
+
handleTargetFeaturesGroup(Args, Features, options::OPT_m_ppc_Features_Group);
ppc::FloatABI FloatABI = ppc::getPPCFloatABI(D, Args);
diff --git a/contrib/llvm-project/llvm/include/llvm/ADT/Triple.h b/contrib/llvm-project/llvm/include/llvm/ADT/Triple.h
index edeb31efab80..1ef3645a291d 100644
--- a/contrib/llvm-project/llvm/include/llvm/ADT/Triple.h
+++ b/contrib/llvm-project/llvm/include/llvm/ADT/Triple.h
@@ -128,7 +128,9 @@ public:
KalimbaSubArch_v4,
KalimbaSubArch_v5,
- MipsSubArch_r6
+ MipsSubArch_r6,
+
+ PPCSubArch_spe
};
enum VendorType {
UnknownVendor,
diff --git a/contrib/llvm-project/llvm/lib/Support/Triple.cpp b/contrib/llvm-project/llvm/lib/Support/Triple.cpp
index d419463e6a5e..18b013e1df3f 100644
--- a/contrib/llvm-project/llvm/lib/Support/Triple.cpp
+++ b/contrib/llvm-project/llvm/lib/Support/Triple.cpp
@@ -389,7 +389,7 @@ static Triple::ArchType parseArch(StringRef ArchName) {
// FIXME: Do we need to support these?
.Cases("i786", "i886", "i986", Triple::x86)
.Cases("amd64", "x86_64", "x86_64h", Triple::x86_64)
- .Cases("powerpc", "ppc", "ppc32", Triple::ppc)
+ .Cases("powerpc", "powerpcspe", "ppc", "ppc32", Triple::ppc)
.Cases("powerpc64", "ppu", "ppc64", Triple::ppc64)
.Cases("powerpc64le", "ppc64le", Triple::ppc64le)
.Case("xscale", Triple::arm)
@@ -563,6 +563,9 @@ static Triple::SubArchType parseSubArch(StringRef SubArchName) {
(SubArchName.endswith("r6el") || SubArchName.endswith("r6")))
return Triple::MipsSubArch_r6;
+ if (SubArchName == "powerpcspe")
+ return Triple::PPCSubArch_spe;
+
StringRef ARMSubArch = ARM::getCanonicalArchName(SubArchName);
// For now, this is the small part. Early return.
diff --git a/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td b/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
index 8e94a2ae15e0..1724969a1ccc 100644
--- a/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
+++ b/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
@@ -378,7 +378,7 @@ def : ProcessorModel<"g5", G5Model,
def : ProcessorModel<"e500", PPCE500Model,
[DirectiveE500,
FeatureICBT, FeatureBookE,
- FeatureISEL, FeatureMFTB]>;
+ FeatureISEL, FeatureMFTB, FeatureSPE]>;
def : ProcessorModel<"e500mc", PPCE500mcModel,
[DirectiveE500mc,
FeatureSTFIWX, FeatureICBT, FeatureBookE,
diff --git a/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp b/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp
index 6239decf1539..4ee6b88ad905 100644
--- a/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp
+++ b/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.cpp
@@ -126,6 +126,8 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) {
// If cross-compiling with -march=ppc64le without -mcpu
if (TargetTriple.getArch() == Triple::ppc64le)
CPUName = "ppc64le";
+ else if (TargetTriple.getSubArch() == Triple::PPCSubArch_spe)
+ CPUName = "e500";
else
CPUName = "generic";
}
diff --git a/lib/libc/stdlib/qsort.3 b/lib/libc/stdlib/qsort.3
index b7461e66a777..606185f9baee 100644
--- a/lib/libc/stdlib/qsort.3
+++ b/lib/libc/stdlib/qsort.3
@@ -32,7 +32,7 @@
.\" @(#)qsort.3 8.1 (Berkeley) 6/4/93
.\" $FreeBSD$
.\"
-.Dd January 14, 2020
+.Dd January 20, 2020
.Dt QSORT 3
.Os
.Sh NAME
@@ -343,6 +343,13 @@ with
.Fn qsort_s
to work around this problem.
.Pp
+.Fn qsort_s
+is part of the
+.Em optional
+Annex K portion of
+.St -isoC-2011
+and may not be portable to other standards-conforming platforms.
+.Pp
Previous versions of
.Fn qsort
did not permit the comparison routine itself to call
diff --git a/share/misc/committers-ports.dot b/share/misc/committers-ports.dot
index 60de8e52b6fc..d2917120f1dd 100644
--- a/share/misc/committers-ports.dot
+++ b/share/misc/committers-ports.dot
@@ -193,6 +193,7 @@ meta [label="Koichiro Iwao\nmeta@FreeBSD.org\n2018/03/19"]
mezz [label="Jeremy Messenger\nmezz@FreeBSD.org\n2004/04/30"]
mfechner [label="Matthias Fechner\nmfechner@FreeBSD.org\n2018/03/01"]
mharo [label="Michael Haro\nmharo@FreeBSD.org\n1999/04/13"]
+mikael [label="Mikael Urankar\nmikael@FreeBSD.org\n2020/01/16"]
milki [label="Jonathan Chu\nmilki@FreeBSD.org\n2013/12/15"]
misha [label="Mikhail Pchelin\nmisha@FreeBSD.org\n2016/11/15"]
miwi [label="Martin Wilke\nmiwi@FreeBSD.org\n2006/06/04"]
@@ -540,6 +541,8 @@ lwhsu -> yzlin
maho -> stephen
maho -> tota
+manu -> mikael
+
marcus -> ahze
marcus -> bland
marcus -> eik
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
index c645c4932370..ef205a27206d 100644
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -1701,7 +1701,6 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, struct componentname *cnp,
uint32_t hash;
int flag;
int len;
- bool held_dvp;
u_long lnumcache;
CTR3(KTR_VFS, "cache_enter(%p, %p, %s)", dvp, vp, cnp->cn_nameptr);
@@ -1738,13 +1737,6 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, struct componentname *cnp,
ndd = NULL;
ncp_ts = NULL;
- held_dvp = false;
- if (LIST_EMPTY(&dvp->v_cache_src) && flag != NCF_ISDOTDOT) {
- vhold(dvp);
- counter_u64_add(numcachehv, 1);
- held_dvp = true;
- }
-
/*
* Calculate the hash key and setup as much of the new
* namecache entry as possible before acquiring the lock.
@@ -1834,21 +1826,8 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, struct componentname *cnp,
if (flag != NCF_ISDOTDOT) {
if (LIST_EMPTY(&dvp->v_cache_src)) {
- if (!held_dvp) {
- vhold(dvp);
- counter_u64_add(numcachehv, 1);
- }
- } else {
- if (held_dvp) {
- /*
- * This will not take the interlock as someone
- * else already holds the vnode on account of
- * the namecache and we hold locks preventing
- * this from changing.
- */
- vdrop(dvp);
- counter_u64_add(numcachehv, -1);
- }
+ vhold(dvp);
+ counter_u64_add(numcachehv, 1);
}
LIST_INSERT_HEAD(&dvp->v_cache_src, ncp, nc_src);
}
@@ -1883,10 +1862,6 @@ cache_enter_time(struct vnode *dvp, struct vnode *vp, struct componentname *cnp,
out_unlock_free:
cache_enter_unlock(&cel);
cache_free(ncp);
- if (held_dvp) {
- vdrop(dvp);
- counter_u64_add(numcachehv, -1);
- }
return;
}
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 6a6d8316541a..35bb99ab2779 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -1141,58 +1141,15 @@ OLD_DIRS+=usr/tests/usr.bin/calendar
.endif
.if ${MK_CASPER} == no
-OLD_FILES+=etc/casper/system.dns
-OLD_FILES+=etc/casper/system.grp
-OLD_FILES+=etc/casper/system.pwd
-OLD_FILES+=etc/casper/system.random
-OLD_FILES+=etc/casper/system.sysctl
-OLD_DIRS+=etc/casper
-OLD_FILES+=etc/rc.d/casperd
-OLD_LIBS+=lib/libcapsicum.so.0
-OLD_LIBS+=lib/libcasper.so.0
-OLD_FILES+=libexec/casper/dns
-OLD_FILES+=libexec/casper/grp
-OLD_FILES+=libexec/casper/pwd
-OLD_FILES+=libexec/casper/random
-OLD_FILES+=libexec/casper/sysctl
-OLD_FILES+=sbin/casper
-OLD_FILES+=sbin/casperd
-OLD_FILES+=usr/include/libcapsicum.h
-OLD_FILES+=usr/include/libcapsicum_dns.h
-OLD_FILES+=usr/include/libcapsicum_grp.h
-OLD_FILES+=usr/include/libcapsicum_pwd.h
-OLD_FILES+=usr/include/libcapsicum_random.h
-OLD_FILES+=usr/include/libcapsicum_service.h
-OLD_FILES+=usr/include/libcapsicum_sysctl.h
-OLD_FILES+=usr/include/libcasper.h
-OLD_FILES+=usr/lib/libcapsicum.a
-OLD_FILES+=usr/lib/libcapsicum.so
-OLD_FILES+=usr/lib/libcapsicum_p.a
-OLD_FILES+=usr/lib/libcasper.a
-OLD_FILES+=usr/lib/libcasper.so
-OLD_FILES+=usr/lib/libcasper_p.a
-OLD_FILES+=usr/lib32/libcapsicum.a
-OLD_FILES+=usr/lib32/libcapsicum.so
-OLD_LIBS+=usr/lib32/libcapsicum.so.0
-OLD_FILES+=usr/lib32/libcapsicum_p.a
-OLD_FILES+=usr/lib32/libcasper.a
-OLD_FILES+=usr/lib32/libcasper.so
-OLD_LIBS+=usr/lib32/libcasper.so.0
-OLD_FILES+=usr/lib32/libcasper_p.a
-OLD_FILES+=usr/share/man/man3/cap_clone.3.gz
-OLD_FILES+=usr/share/man/man3/cap_close.3.gz
-OLD_FILES+=usr/share/man/man3/cap_init.3.gz
-OLD_FILES+=usr/share/man/man3/cap_limit_get.3.gz
-OLD_FILES+=usr/share/man/man3/cap_limit_set.3.gz
-OLD_FILES+=usr/share/man/man3/cap_recv_nvlist.3.gz
-OLD_FILES+=usr/share/man/man3/cap_send_nvlist.3.gz
-OLD_FILES+=usr/share/man/man3/cap_service_open.3.gz
-OLD_FILES+=usr/share/man/man3/cap_sock.3.gz
-OLD_FILES+=usr/share/man/man3/cap_unwrap.3.gz
-OLD_FILES+=usr/share/man/man3/cap_wrap.3.gz
-OLD_FILES+=usr/share/man/man3/cap_xfer_nvlist.3.gz
-OLD_FILES+=usr/share/man/man3/libcapsicum.3.gz
-OLD_FILES+=usr/share/man/man8/casperd.8.gz
+OLD_LIBS+=lib/libcasper.so.1
+OLD_LIBS+=lib/casper/libcap_dns.so.2
+OLD_LIBS+=lib/casper/libcap_fileargs.so.1
+OLD_LIBS+=lib/casper/libcap_grp.so.1
+OLD_LIBS+=lib/casper/libcap_net.so.1
+OLD_LIBS+=lib/casper/libcap_pwd.so.1
+OLD_LIBS+=lib/casper/libcap_sysctl.so.1
+OLD_LIBS+=lib/casper/libcap_sysctl.so.2
+OLD_LIBS+=lib/casper/libcap_syslog.so.1
.endif
.if ${MK_CCD} == no