svn commit: r343956 - in projects/clang800-import: . contrib/netbsd-tests/lib/libm etc/mtree lib/libc/stdio lib/libc/sys lib/libc/x86/sys lib/libcasper/services/cap_syslog lib/libutil lib/msun/src ...
Dimitry Andric
dim at FreeBSD.org
Sun Feb 10 12:49:43 UTC 2019
Author: dim
Date: Sun Feb 10 12:49:34 2019
New Revision: 343956
URL: https://svnweb.freebsd.org/changeset/base/343956
Log:
Merge ^/head r343807 through r343955.
Added:
projects/clang800-import/sys/arm64/acpica/acpi_iort.c
- copied unchanged from r343955, head/sys/arm64/acpica/acpi_iort.c
Deleted:
projects/clang800-import/sys/dev/usb/controller/ohci_s3c24x0.c
Modified:
projects/clang800-import/UPDATING
projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c
projects/clang800-import/etc/mtree/BSD.root.dist
projects/clang800-import/lib/libc/stdio/fgetln.c
projects/clang800-import/lib/libc/sys/getsockopt.2
projects/clang800-import/lib/libc/x86/sys/__vdso_gettc.c
projects/clang800-import/lib/libcasper/services/cap_syslog/cap_syslog.c
projects/clang800-import/lib/libutil/quotafile.c
projects/clang800-import/lib/msun/src/e_j0.c
projects/clang800-import/lib/msun/src/e_j0f.c
projects/clang800-import/lib/msun/src/e_j1.c
projects/clang800-import/lib/msun/src/e_j1f.c
projects/clang800-import/lib/msun/src/e_jn.c
projects/clang800-import/lib/msun/tests/trig_test.c
projects/clang800-import/libexec/rc/rc.d/growfs
projects/clang800-import/libexec/talkd/extern.h
projects/clang800-import/sbin/dhclient/dhclient.c
projects/clang800-import/sbin/ipfw/tables.c
projects/clang800-import/sbin/recoverdisk/recoverdisk.c
projects/clang800-import/sbin/sysctl/sysctl.8
projects/clang800-import/share/man/man4/ng_iface.4
projects/clang800-import/share/man/man9/bus_space.9
projects/clang800-import/share/man/man9/config_intrhook.9
projects/clang800-import/share/man/man9/pwm.9
projects/clang800-import/share/misc/bsd-family-tree
projects/clang800-import/share/misc/committers-ports.dot
projects/clang800-import/share/misc/committers-src.dot
projects/clang800-import/share/mk/bsd.cpu.mk
projects/clang800-import/share/mk/src.opts.mk
projects/clang800-import/share/mk/suite.test.mk
projects/clang800-import/stand/efi/libefi/efienv.c
projects/clang800-import/sys/amd64/conf/GENERIC
projects/clang800-import/sys/amd64/conf/NOTES
projects/clang800-import/sys/arm/allwinner/axp81x.c
projects/clang800-import/sys/arm64/arm64/cpufunc_asm.S
projects/clang800-import/sys/arm64/arm64/gic_v3_acpi.c
projects/clang800-import/sys/arm64/arm64/gic_v3_var.h
projects/clang800-import/sys/arm64/arm64/gicv3_its.c
projects/clang800-import/sys/arm64/arm64/pmap.c
projects/clang800-import/sys/arm64/conf/GENERIC
projects/clang800-import/sys/cam/ata/ata_da.c
projects/clang800-import/sys/cam/scsi/scsi_da.c
projects/clang800-import/sys/compat/freebsd32/freebsd32_misc.c
projects/clang800-import/sys/conf/files.arm64
projects/clang800-import/sys/conf/options
projects/clang800-import/sys/ddb/db_ps.c
projects/clang800-import/sys/dev/acpica/acpivar.h
projects/clang800-import/sys/dev/cardbus/cardbus.c
projects/clang800-import/sys/dev/cxgbe/adapter.h
projects/clang800-import/sys/dev/cxgbe/common/t4_hw.c
projects/clang800-import/sys/dev/cxgbe/t4_main.c
projects/clang800-import/sys/dev/cxgbe/t4_vf.c
projects/clang800-import/sys/dev/e1000/if_em.c
projects/clang800-import/sys/dev/e1000/if_em.h
projects/clang800-import/sys/dev/flash/mx25l.c
projects/clang800-import/sys/dev/flash/n25q.c
projects/clang800-import/sys/dev/iwn/if_iwn.c
projects/clang800-import/sys/dev/mmc/bridge.h
projects/clang800-import/sys/dev/mmc/mmc.c
projects/clang800-import/sys/dev/mmc/mmc_private.h
projects/clang800-import/sys/dev/mmc/mmc_subr.c
projects/clang800-import/sys/dev/mmc/mmc_subr.h
projects/clang800-import/sys/dev/mmc/mmcbrvar.h
projects/clang800-import/sys/dev/mmc/mmcreg.h
projects/clang800-import/sys/dev/mmc/mmcsd.c
projects/clang800-import/sys/dev/mmc/mmcvar.h
projects/clang800-import/sys/dev/netmap/netmap.c
projects/clang800-import/sys/dev/pccbb/pccbbdevid.h
projects/clang800-import/sys/dev/pci/pci_host_generic_acpi.c
projects/clang800-import/sys/dev/pms/freebsd/driver/common/lxutil.c
projects/clang800-import/sys/dev/puc/puc_pci.c
projects/clang800-import/sys/dev/sio/sio_isa.c
projects/clang800-import/sys/dev/sio/sio_pccard.c
projects/clang800-import/sys/dev/sio/sio_pci.c
projects/clang800-import/sys/dev/sio/sio_puc.c
projects/clang800-import/sys/dev/uart/uart_bus_acpi.c
projects/clang800-import/sys/dev/uart/uart_bus_pccard.c
projects/clang800-import/sys/dev/uart/uart_bus_puc.c
projects/clang800-import/sys/dev/usb/controller/generic_ohci.c
projects/clang800-import/sys/dev/usb/net/if_ure.c
projects/clang800-import/sys/dev/usb/usbdevs
projects/clang800-import/sys/dev/wi/if_wivar.h
projects/clang800-import/sys/dts/arm/tegra124-jetson-tk1-fbsd.dts
projects/clang800-import/sys/fs/nullfs/null_vfsops.c
projects/clang800-import/sys/fs/nullfs/null_vnops.c
projects/clang800-import/sys/i386/acpica/acpi_wakecode.S
projects/clang800-import/sys/i386/conf/NOTES
projects/clang800-import/sys/i386/i386/pmap.c
projects/clang800-import/sys/i386/i386/pmap_base.c
projects/clang800-import/sys/kern/imgact_elf.c
projects/clang800-import/sys/kern/kern_exec.c
projects/clang800-import/sys/kern/kern_kcov.c
projects/clang800-import/sys/kern/vfs_lookup.c
projects/clang800-import/sys/kern/vfs_syscalls.c
projects/clang800-import/sys/mips/include/elf.h
projects/clang800-import/sys/modules/dtb/allwinner/Makefile
projects/clang800-import/sys/net80211/ieee80211_ioctl.c
projects/clang800-import/sys/netgraph/ng_iface.c
projects/clang800-import/sys/netgraph/ng_ipfw.c
projects/clang800-import/sys/netinet/cc/cc_cdg.c
projects/clang800-import/sys/netinet/sctp_usrreq.c
projects/clang800-import/sys/powerpc/include/openpicvar.h
projects/clang800-import/sys/powerpc/ofw/openpic_ofw.c
projects/clang800-import/sys/powerpc/powerpc/cpu.c
projects/clang800-import/sys/powerpc/powerpc/mem.c
projects/clang800-import/sys/powerpc/powerpc/openpic.c
projects/clang800-import/sys/riscv/riscv/elf_machdep.c
projects/clang800-import/sys/sys/namei.h
projects/clang800-import/sys/sys/sysent.h
projects/clang800-import/sys/vm/uma_core.c
projects/clang800-import/sys/vm/uma_int.h
projects/clang800-import/sys/vm/vm_kern.c
projects/clang800-import/sys/vm/vm_mmap.c
projects/clang800-import/sys/vm/vm_unix.c
projects/clang800-import/sys/x86/acpica/acpi_wakeup.c
projects/clang800-import/sys/x86/include/x86_var.h
projects/clang800-import/tools/build/mk/OptionalObsoleteFiles.inc
projects/clang800-import/tools/build/options/WITH_CLANG_EXTRAS
projects/clang800-import/usr.bin/calendar/calendars/calendar.freebsd
projects/clang800-import/usr.bin/ipcs/ipcs.c
projects/clang800-import/usr.bin/newkey/update.c
projects/clang800-import/usr.bin/vtfontcvt/vtfontcvt.c
projects/clang800-import/usr.sbin/bluetooth/sdpd/ssar.c
projects/clang800-import/usr.sbin/dumpcis/main.c
projects/clang800-import/usr.sbin/newsyslog/newsyslog.c
projects/clang800-import/usr.sbin/pw/pw.8
projects/clang800-import/usr.sbin/pwm/pwm.8
Directory Properties:
projects/clang800-import/ (props changed)
projects/clang800-import/contrib/llvm/ (props changed)
projects/clang800-import/contrib/netbsd-tests/ (props changed)
Modified: projects/clang800-import/UPDATING
==============================================================================
--- projects/clang800-import/UPDATING Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/UPDATING Sun Feb 10 12:49:34 2019 (r343956)
@@ -1942,7 +1942,7 @@ to fetch an UPDATING file from an older FreeBSD releas
Copyright information:
-Copyright 1998-2009 M. Warner Losh. All Rights Reserved.
+Copyright 1998-2009 M. Warner Losh.
Redistribution, publication, translation and use, with or without
modification, in full or in part, in any form or format of this
Modified: projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c
==============================================================================
--- projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/contrib/netbsd-tests/lib/libm/t_cbrt.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -268,7 +268,8 @@ ATF_TC_BODY(cbrtl_powl, tc)
long double y, z;
size_t i;
-#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7
+#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7 && \
+ __FreeBSD_cc_version < 1300002
atf_tc_expect_fail("test fails with clang 7+ - bug 234040");
#endif
Modified: projects/clang800-import/etc/mtree/BSD.root.dist
==============================================================================
--- projects/clang800-import/etc/mtree/BSD.root.dist Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/etc/mtree/BSD.root.dist Sun Feb 10 12:49:34 2019 (r343956)
@@ -11,7 +11,11 @@
defaults
..
dtb
+ allwinner tags=package=runtime
+ ..
overlays tags=package=runtime
+ ..
+ rockchip tags=package=runtime
..
..
firmware
Modified: projects/clang800-import/lib/libc/stdio/fgetln.c
==============================================================================
--- projects/clang800-import/lib/libc/stdio/fgetln.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/libc/stdio/fgetln.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -50,19 +50,12 @@ __FBSDID("$FreeBSD$");
/*
* Expand the line buffer. Return -1 on error.
-#ifdef notdef
- * The `new size' does not account for a terminating '\0',
- * so we add 1 here.
-#endif
*/
int
__slbexpand(FILE *fp, size_t newsize)
{
void *p;
-#ifdef notdef
- ++newsize;
-#endif
if (fp->_lb._size >= newsize)
return (0);
if (newsize > INT_MAX) {
@@ -160,9 +153,6 @@ fgetln(FILE *fp, size_t *lenp)
break;
}
*lenp = len;
-#ifdef notdef
- fp->_lb._base[len] = '\0';
-#endif
ret = (char *)fp->_lb._base;
end:
FUNLOCKFILE_CANCELSAFE();
Modified: projects/clang800-import/lib/libc/sys/getsockopt.2
==============================================================================
--- projects/clang800-import/lib/libc/sys/getsockopt.2 Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/libc/sys/getsockopt.2 Sun Feb 10 12:49:34 2019 (r343956)
@@ -28,7 +28,7 @@
.\" @(#)getsockopt.2 8.4 (Berkeley) 5/2/95
.\" $FreeBSD$
.\"
-.Dd August 21, 2018
+.Dd February 10, 2019
.Dt GETSOCKOPT 2
.Os
.Sh NAME
@@ -534,7 +534,11 @@ transfer rate to the given unsigned 32-bit value in by
.Sh RETURN VALUES
.Rv -std
.Sh ERRORS
-The call succeeds unless:
+The
+.Fn getsockopt
+and
+.Fn setsockopt
+system calls succeed unless:
.Bl -tag -width Er
.It Bq Er EBADF
The argument
@@ -561,6 +565,15 @@ Installing an
on a non-listening socket was attempted.
.It Bq Er ENOMEM
A memory allocation failed that was required to service the request.
+.El
+.Pp
+The
+.Fn setsockopt
+system call may also return the following error:
+.Bl -tag -width Er
+.It Bq Er ENOBUFS
+Insufficient resources were available in the system
+to perform the operation.
.El
.Sh SEE ALSO
.Xr ioctl 2 ,
Modified: projects/clang800-import/lib/libc/x86/sys/__vdso_gettc.c
==============================================================================
--- projects/clang800-import/lib/libc/x86/sys/__vdso_gettc.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/libc/x86/sys/__vdso_gettc.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -1,6 +1,6 @@
/*-
* Copyright (c) 2012 Konstantin Belousov <kib at FreeBSD.org>
- * Copyright (c) 2016, 2017 The FreeBSD Foundation
+ * Copyright (c) 2016, 2017, 2019 The FreeBSD Foundation
* All rights reserved.
*
* Portions of this software were developed by Konstantin Belousov
@@ -50,15 +50,9 @@ __FBSDID("$FreeBSD$");
#ifdef WANT_HYPERV
#include <dev/hyperv/hyperv.h>
#endif
+#include <x86/ifunc.h>
#include "libc_private.h"
-static enum LMB {
- LMB_UNKNOWN,
- LMB_NONE,
- LMB_MFENCE,
- LMB_LFENCE
-} lfence_works = LMB_UNKNOWN;
-
static void
cpuidp(u_int leaf, u_int p[4])
{
@@ -84,68 +78,36 @@ cpuidp(u_int leaf, u_int p[4])
: "0" (leaf));
}
-static enum LMB
-select_lmb(void)
+static void
+rdtsc_mb_lfence(void)
{
- u_int p[4];
- static const char intel_id[] = "GenuntelineI";
- cpuidp(0, p);
- return (memcmp(p + 1, intel_id, sizeof(intel_id) - 1) == 0 ?
- LMB_LFENCE : LMB_MFENCE);
+ lfence();
}
static void
-init_fence(void)
+rdtsc_mb_mfence(void)
{
-#if defined(__i386__)
- u_int cpuid_supported, p[4];
- lfence_works = LMB_NONE;
- __asm __volatile(
- " pushfl\n"
- " popl %%eax\n"
- " movl %%eax,%%ecx\n"
- " xorl $0x200000,%%eax\n"
- " pushl %%eax\n"
- " popfl\n"
- " pushfl\n"
- " popl %%eax\n"
- " xorl %%eax,%%ecx\n"
- " je 1f\n"
- " movl $1,%0\n"
- " jmp 2f\n"
- "1: movl $0,%0\n"
- "2:\n"
- : "=r" (cpuid_supported) : : "eax", "ecx", "cc");
- if (cpuid_supported) {
- cpuidp(0x1, p);
- if ((p[3] & CPUID_SSE2) != 0)
- lfence_works = select_lmb();
- }
-#elif defined(__amd64__)
- lfence_works = select_lmb();
-#else
-#error "Arch"
-#endif
+ mfence();
}
static void
-rdtsc_mb(void)
+rdtsc_mb_none(void)
{
+}
-again:
- if (__predict_true(lfence_works == LMB_LFENCE)) {
- lfence();
- return;
- } else if (lfence_works == LMB_MFENCE) {
- mfence();
- return;
- } else if (lfence_works == LMB_NONE) {
- return;
- }
- init_fence();
- goto again;
+DEFINE_UIFUNC(static, void, rdtsc_mb, (void), static)
+{
+ u_int p[4];
+ /* Not a typo, string matches our cpuidp() registers use. */
+ static const char intel_id[] = "GenuntelineI";
+
+ if ((cpu_feature & CPUID_SSE2) == 0)
+ return (rdtsc_mb_none);
+ cpuidp(0, p);
+ return (memcmp(p + 1, intel_id, sizeof(intel_id) - 1) == 0 ?
+ rdtsc_mb_lfence : rdtsc_mb_mfence);
}
static u_int
Modified: projects/clang800-import/lib/libcasper/services/cap_syslog/cap_syslog.c
==============================================================================
--- projects/clang800-import/lib/libcasper/services/cap_syslog/cap_syslog.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/libcasper/services/cap_syslog/cap_syslog.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -88,6 +88,9 @@ cap_openlog(cap_channel_t *chan, const char *ident, in
}
nvlist_add_number(nvl, "logopt", logopt);
nvlist_add_number(nvl, "facility", facility);
+ if (logopt & LOG_PERROR) {
+ nvlist_add_descriptor(nvl, "stderr", STDERR_FILENO);
+ }
nvl = cap_xfer_nvlist(chan, nvl);
if (nvl == NULL) {
return;
@@ -131,6 +134,7 @@ cap_setlogmask(cap_channel_t *chan, int maskpri)
*/
static char *LogTag;
+static int prev_stderr = -1;
static void
slog_vsyslog(const nvlist_t *limits __unused, const nvlist_t *nvlin,
@@ -146,6 +150,8 @@ slog_openlog(const nvlist_t *limits __unused, const nv
nvlist_t *nvlout __unused)
{
const char *ident;
+ uint64_t logopt;
+ int stderr_fd;
ident = dnvlist_get_string(nvlin, "ident", NULL);
if (ident != NULL) {
@@ -153,8 +159,19 @@ slog_openlog(const nvlist_t *limits __unused, const nv
LogTag = strdup(ident);
}
- openlog(LogTag, nvlist_get_number(nvlin, "logopt"),
- nvlist_get_number(nvlin, "facility"));
+ logopt = nvlist_get_number(nvlin, "logopt");
+ if (logopt & LOG_PERROR) {
+ stderr_fd = dnvlist_get_descriptor(nvlin, "stderr", -1);
+ if (prev_stderr == -1)
+ prev_stderr = dup(STDERR_FILENO);
+ if (prev_stderr != -1)
+ (void)dup2(stderr_fd, STDERR_FILENO);
+ } else if (prev_stderr != -1) {
+ (void)dup2(prev_stderr, STDERR_FILENO);
+ close(prev_stderr);
+ prev_stderr = -1;
+ }
+ openlog(LogTag, logopt, nvlist_get_number(nvlin, "facility"));
}
static void
@@ -166,6 +183,12 @@ slog_closelog(const nvlist_t *limits __unused, const n
free(LogTag);
LogTag = NULL;
+
+ if (prev_stderr != -1) {
+ (void)dup2(prev_stderr, STDERR_FILENO);
+ close(prev_stderr);
+ prev_stderr = -1;
+ }
}
static void
@@ -198,4 +221,4 @@ syslog_command(const char *cmd, const nvlist_t *limits
return (0);
}
-CREATE_SERVICE("system.syslog", NULL, syslog_command, CASPER_SERVICE_STDIO);
+CREATE_SERVICE("system.syslog", NULL, syslog_command, 0);
Modified: projects/clang800-import/lib/libutil/quotafile.c
==============================================================================
--- projects/clang800-import/lib/libutil/quotafile.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/libutil/quotafile.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -118,7 +118,8 @@ quota_open(struct fstab *fs, int quotatype, int openfl
struct dqhdr64 dqh;
struct group *grp;
struct stat st;
- int qcmd, serrno;
+ int qcmd, serrno = 0;
+ int ufs;
if ((qf = calloc(1, sizeof(*qf))) == NULL)
return (NULL);
@@ -129,15 +130,21 @@ quota_open(struct fstab *fs, int quotatype, int openfl
goto error;
qf->dev = st.st_dev;
qcmd = QCMD(Q_GETQUOTASIZE, quotatype);
+ ufs = strcmp(fs->fs_vfstype, "ufs") == 0;
+ /*
+ * On UFS, hasquota() fills in qf->qfname. But we only care about
+ * this for UFS. So we need to call hasquota() for UFS, first.
+ */
+ if (ufs) {
+ serrno = hasquota(fs, quotatype, qf->qfname,
+ sizeof(qf->qfname));
+ }
if (quotactl(qf->fsname, qcmd, 0, &qf->wordsize) == 0)
return (qf);
- /* We only check the quota file for ufs */
- if (strcmp(fs->fs_vfstype, "ufs")) {
+ if (!ufs) {
errno = 0;
goto error;
- }
- serrno = hasquota(fs, quotatype, qf->qfname, sizeof(qf->qfname));
- if (serrno == 0) {
+ } else if (serrno == 0) {
errno = EOPNOTSUPP;
goto error;
}
Modified: projects/clang800-import/lib/msun/src/e_j0.c
==============================================================================
--- projects/clang800-import/lib/msun/src/e_j0.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/msun/src/e_j0.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -93,8 +93,7 @@ __ieee754_j0(double x)
if(ix>=0x7ff00000) return one/(x*x);
x = fabs(x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sin(x);
- c = cos(x);
+ sincos(x, &s, &c);
ss = s-c;
cc = s+c;
if(ix<0x7fe00000) { /* Make sure x+x does not overflow. */
@@ -173,8 +172,7 @@ __ieee754_y0(double x)
* sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
* to compute the worse one.
*/
- s = sin(x);
- c = cos(x);
+ sincos(x, &s, &c);
ss = s-c;
cc = s+c;
/*
Modified: projects/clang800-import/lib/msun/src/e_j0f.c
==============================================================================
--- projects/clang800-import/lib/msun/src/e_j0f.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/msun/src/e_j0f.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -55,8 +55,7 @@ __ieee754_j0f(float x)
if(ix>=0x7f800000) return one/(x*x);
x = fabsf(x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sinf(x);
- c = cosf(x);
+ sincosf(x, &s, &c);
ss = s-c;
cc = s+c;
if(ix<0x7f000000) { /* Make sure x+x does not overflow. */
@@ -128,8 +127,7 @@ __ieee754_y0f(float x)
* sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
* to compute the worse one.
*/
- s = sinf(x);
- c = cosf(x);
+ sincosf(x, &s, &c);
ss = s-c;
cc = s+c;
/*
Modified: projects/clang800-import/lib/msun/src/e_j1.c
==============================================================================
--- projects/clang800-import/lib/msun/src/e_j1.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/msun/src/e_j1.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -94,8 +94,7 @@ __ieee754_j1(double x)
if(ix>=0x7ff00000) return one/x;
y = fabs(x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sin(y);
- c = cos(y);
+ sincos(y, &s, &c);
ss = -s-c;
cc = s-c;
if(ix<0x7fe00000) { /* make sure y+y not overflow */
@@ -159,8 +158,7 @@ __ieee754_y1(double x)
/* y1(x<0) = NaN and raise invalid exception. */
if(hx<0) return vzero/vzero;
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sin(x);
- c = cos(x);
+ sincos(x, &s, &c);
ss = -s-c;
cc = s-c;
if(ix<0x7fe00000) { /* make sure x+x not overflow */
Modified: projects/clang800-import/lib/msun/src/e_j1f.c
==============================================================================
--- projects/clang800-import/lib/msun/src/e_j1f.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/msun/src/e_j1f.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -56,8 +56,7 @@ __ieee754_j1f(float x)
if(ix>=0x7f800000) return one/x;
y = fabsf(x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sinf(y);
- c = cosf(y);
+ sincosf(y, &s, &c);
ss = -s-c;
cc = s-c;
if(ix<0x7f000000) { /* make sure y+y not overflow */
@@ -114,8 +113,7 @@ __ieee754_y1f(float x)
if(ix==0) return -one/vzero;
if(hx<0) return vzero/vzero;
if(ix >= 0x40000000) { /* |x| >= 2.0 */
- s = sinf(x);
- c = cosf(x);
+ sincosf(x, &s, &c);
ss = -s-c;
cc = s-c;
if(ix<0x7f000000) { /* make sure x+x not overflow */
Modified: projects/clang800-import/lib/msun/src/e_jn.c
==============================================================================
--- projects/clang800-import/lib/msun/src/e_jn.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/msun/src/e_jn.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -54,7 +54,7 @@ double
__ieee754_jn(int n, double x)
{
int32_t i,hx,ix,lx, sgn;
- double a, b, temp, di;
+ double a, b, c, s, temp, di;
double z, w;
/* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
@@ -91,11 +91,12 @@ __ieee754_jn(int n, double x)
* 2 -s+c -c-s
* 3 s+c c-s
*/
+ sincos(x, &s, &c);
switch(n&3) {
- case 0: temp = cos(x)+sin(x); break;
- case 1: temp = -cos(x)+sin(x); break;
- case 2: temp = -cos(x)-sin(x); break;
- case 3: temp = cos(x)-sin(x); break;
+ case 0: temp = c+s; break;
+ case 1: temp = -c+s; break;
+ case 2: temp = -c-s; break;
+ case 3: temp = c-s; break;
}
b = invsqrtpi*temp/sqrt(x);
} else {
@@ -216,7 +217,7 @@ __ieee754_yn(int n, double x)
{
int32_t i,hx,ix,lx;
int32_t sign;
- double a, b, temp;
+ double a, b, c, s, temp;
EXTRACT_WORDS(hx,lx,x);
ix = 0x7fffffff&hx;
@@ -248,11 +249,12 @@ __ieee754_yn(int n, double x)
* 2 -s+c -c-s
* 3 s+c c-s
*/
+ sincos(x, &s, &c);
switch(n&3) {
- case 0: temp = sin(x)-cos(x); break;
- case 1: temp = -sin(x)-cos(x); break;
- case 2: temp = -sin(x)+cos(x); break;
- case 3: temp = sin(x)+cos(x); break;
+ case 0: temp = s-c; break;
+ case 1: temp = -s-c; break;
+ case 2: temp = -s+c; break;
+ case 3: temp = s+c; break;
}
b = invsqrtpi*temp/sqrt(x);
} else {
Modified: projects/clang800-import/lib/msun/tests/trig_test.c
==============================================================================
--- projects/clang800-import/lib/msun/tests/trig_test.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/lib/msun/tests/trig_test.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -160,7 +160,8 @@ ATF_TC_BODY(reduction, tc)
unsigned i;
-#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7
+#if defined(__amd64__) && defined(__clang__) && __clang_major__ >= 7 && \
+ __FreeBSD_cc_version < 1300002
atf_tc_expect_fail("test fails with clang 7+ - bug 234040");
#endif
Modified: projects/clang800-import/libexec/rc/rc.d/growfs
==============================================================================
--- projects/clang800-import/libexec/rc/rc.d/growfs Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/libexec/rc/rc.d/growfs Sun Feb 10 12:49:34 2019 (r343956)
@@ -49,7 +49,20 @@ rcvar="growfs_enable"
growfs_start ()
{
echo "Growing root partition to fill device"
- rootdev=$(df / | tail -n 1 | awk '{ sub("/dev/", "", $1); print $1 }')
+ FSTYPE=$(mount -p | awk '{ if ( $2 == "/") { print $3 }}')
+ FSDEV=$(mount -p | awk '{ if ( $2 == "/") { print $1 }}')
+ case "$FSTYPE" in
+ ufs)
+ rootdev=${FSDEV#/dev/}
+ ;;
+ zfs)
+ pool=${FSDEV%%/*}
+ rootdev=$(zpool list -v $pool | tail -n 1 | awk '{ print $1 }')
+ ;;
+ *)
+ echo "Don't know how to grow root filesystem type: $FSTYPE"
+ return
+ esac
if [ x"$rootdev" = x"${rootdev%/*}" ]; then
# raw device
rawdev="$rootdev"
@@ -91,7 +104,14 @@ growfs_start ()
}
}' dev="$rawdev"
gpart commit "$rootdev"
- growfs -y /dev/"$rootdev"
+ case "$FSTYPE" in
+ ufs)
+ growfs -y /dev/"$rootdev"
+ ;;
+ zfs)
+ zpool online -e $pool $rootdev
+ ;;
+ esac
}
load_rc_config $name
Modified: projects/clang800-import/libexec/talkd/extern.h
==============================================================================
--- projects/clang800-import/libexec/talkd/extern.h Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/libexec/talkd/extern.h Sun Feb 10 12:49:34 2019 (r343956)
@@ -1,7 +1,7 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
- * Copyright (c) 2002 M. Warner Losh. All rights reserved.
+ * Copyright (c) 2002 M. Warner Losh.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
Modified: projects/clang800-import/sbin/dhclient/dhclient.c
==============================================================================
--- projects/clang800-import/sbin/dhclient/dhclient.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/sbin/dhclient/dhclient.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -2348,7 +2348,8 @@ priv_script_go(void)
if (ip)
script_flush_env(ip->client);
- return (wstatus & 0xff);
+ return (WIFEXITED(wstatus) ?
+ WEXITSTATUS(wstatus) : 128 + WTERMSIG(wstatus));
}
void
Modified: projects/clang800-import/sbin/ipfw/tables.c
==============================================================================
--- projects/clang800-import/sbin/ipfw/tables.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/sbin/ipfw/tables.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -282,13 +282,14 @@ ipfw_table_handler(int ac, char *av[])
}
break;
case TOK_LIST:
+ arg = is_all ? (void*)1 : NULL;
if (is_all == 0) {
ipfw_xtable_info i;
if ((error = table_get_info(&oh, &i)) != 0)
err(EX_OSERR, "failed to request table info");
- table_show_one(&i, NULL);
+ table_show_one(&i, arg);
} else {
- error = tables_foreach(table_show_one, NULL, 1);
+ error = tables_foreach(table_show_one, arg, 1);
if (error != 0)
err(EX_OSERR, "failed to request tables list");
}
@@ -821,13 +822,16 @@ table_show_one(ipfw_xtable_info *i, void *arg)
{
ipfw_obj_header *oh;
int error;
+ int is_all;
+ is_all = arg == NULL ? 0 : 1;
+
if ((error = table_do_get_list(i, &oh)) != 0) {
err(EX_OSERR, "Error requesting table %s list", i->tablename);
return (error);
}
- table_show_list(oh, 1);
+ table_show_list(oh, is_all);
free(oh);
return (0);
Modified: projects/clang800-import/sbin/recoverdisk/recoverdisk.c
==============================================================================
--- projects/clang800-import/sbin/recoverdisk/recoverdisk.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/sbin/recoverdisk/recoverdisk.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -125,6 +125,7 @@ read_worklist(off_t t)
new_lump(s, l, state);
d -= l;
}
+ fclose(file);
(void)fprintf(stderr, " done.\n");
/*
* Return the number of bytes already read
Modified: projects/clang800-import/sbin/sysctl/sysctl.8
==============================================================================
--- projects/clang800-import/sbin/sysctl/sysctl.8 Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/sbin/sysctl/sysctl.8 Sun Feb 10 12:49:34 2019 (r343956)
@@ -28,7 +28,7 @@
.\" From: @(#)sysctl.8 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$
.\"
-.Dd September 24, 2018
+.Dd February 8, 2019
.Dt SYSCTL 8
.Os
.Sh NAME
@@ -36,13 +36,13 @@
.Nd get or set kernel state
.Sh SYNOPSIS
.Nm
-.Op Fl bdehiNnoRTtqx
+.Op Fl bdehiNnoTtqWx
.Op Fl B Ar bufsize
.Op Fl f Ar filename
.Ar name Ns Op = Ns Ar value Ns Op , Ns Ar value
.Ar ...
.Nm
-.Op Fl bdehNnoRTtqx
+.Op Fl bdehNnoTtqWx
.Op Fl B Ar bufsize
.Fl a
.Sh DESCRIPTION
Modified: projects/clang800-import/share/man/man4/ng_iface.4
==============================================================================
--- projects/clang800-import/share/man/man4/ng_iface.4 Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/man/man4/ng_iface.4 Sun Feb 10 12:49:34 2019 (r343956)
@@ -35,7 +35,7 @@
.\" $FreeBSD$
.\" $Whistle: ng_iface.8,v 1.5 1999/01/25 23:46:26 archie Exp $
.\"
-.Dd January 12, 2015
+.Dd February 6, 2019
.Dt NG_IFACE 4
.Os
.Sh NAME
@@ -144,6 +144,17 @@ In case when your graph ends up with some kind of seri
synchronous or modem, the
.Nm
is the right place to turn ALTQ on.
+.Sh Nesting
+.Nm
+supports nesting, a configuration when traffic of one
+.Nm
+interface flows through the other.
+The default maximum allowed nesting level is 2.
+It can be changed at runtime setting
+.Xr sysctl 8
+variable
+.Va net.graph.iface.max_nesting
+to the desired level of nesting.
.Sh SEE ALSO
.Xr altq 4 ,
.Xr bpf 4 ,
@@ -151,6 +162,7 @@ is the right place to turn ALTQ on.
.Xr ng_cisco 4 ,
.Xr ifconfig 8 ,
.Xr ngctl 8
+.Xr sysctl
.Sh HISTORY
The
.Nm iface
Modified: projects/clang800-import/share/man/man9/bus_space.9
==============================================================================
--- projects/clang800-import/share/man/man9/bus_space.9 Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/man/man9/bus_space.9 Sun Feb 10 12:49:34 2019 (r343956)
@@ -1,6 +1,7 @@
.\" $NetBSD: bus_space.9,v 1.9 1999/03/06 22:09:29 mycroft Exp $
.\"
-.\" Copyright (c) 2005 M. Warner Losh. All Rights Reserved.
+.\" Copyright (c) 2005 M. Warner Losh.
+.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
Modified: projects/clang800-import/share/man/man9/config_intrhook.9
==============================================================================
--- projects/clang800-import/share/man/man9/config_intrhook.9 Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/man/man9/config_intrhook.9 Sun Feb 10 12:49:34 2019 (r343956)
@@ -1,5 +1,5 @@
.\"
-.\" Copyright (C) 2006 M. Warner Losh <imp at FreeBSD.org>. All rights reserved.
+.\" Copyright (C) 2006 M. Warner Losh <imp at FreeBSD.org>.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
Modified: projects/clang800-import/share/man/man9/pwm.9
==============================================================================
--- projects/clang800-import/share/man/man9/pwm.9 Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/man/man9/pwm.9 Sun Feb 10 12:49:34 2019 (r343956)
@@ -22,7 +22,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd November 12, 2018
+.Dd January 12, 2019
.Dt PWM 9
.Os
.Sh NAME
@@ -79,7 +79,7 @@ Get the current flags for the channel.
Enable the PWM channel.
.It Fn PWM_CHANNEL_ISENABLED "device_t dev" "int channel" "bool *enable"
Test if the PWM channel is enabled.
-.It PWM_CHANNEL_MAX "device_t dev" "int channel" "int *nchannel"
+.It Fn PWM_CHANNEL_MAX "device_t dev" "int channel" "int *nchannel"
Get the maximum number of channels supported by the controller.
.El
.Sh HISTORY
Modified: projects/clang800-import/share/misc/bsd-family-tree
==============================================================================
--- projects/clang800-import/share/misc/bsd-family-tree Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/misc/bsd-family-tree Sun Feb 10 12:49:34 2019 (r343956)
@@ -374,8 +374,8 @@ FreeBSD 5.2 | | |
| | | | | | |
| | | | | | DragonFly 5.2.2
| FreeBSD | | NetBSD 7.2 | |
- | 11.2 | | | | |
- | | | | OpenBSD 6.4 |
+ | 11.2 macOS | | | |
+ | 10.14 | | OpenBSD 6.4 |
| | | | | DragonFly 5.4.0
*--FreeBSD | | v | |
| 12.0 | | | DragonFly 5.4.1
@@ -756,6 +756,7 @@ DragonFly 5.2.2 2018-06-18 [DFB]
FreeBSD 11.2 2018-06-27 [FBD]
NetBSD 8.0 2018-07-17 [NBD]
NetBSD 7.2 2018-08-29 [NBD]
+macOS 10.14 2018-09-24 [APL]
OpenBSD 6.4 2018-10-18 [OBD]
DragonFly 5.4.0 2018-12-03 [DFB]
FreeBSD 12.0 2018-12-11 [FBD]
Modified: projects/clang800-import/share/misc/committers-ports.dot
==============================================================================
--- projects/clang800-import/share/misc/committers-ports.dot Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/misc/committers-ports.dot Sun Feb 10 12:49:34 2019 (r343956)
@@ -150,6 +150,7 @@ jsa [label="Joseph S. Atkinson\njsa at FreeBSD.org\n2010/
jsm [label="Jesper Schmitz Mouridsen\njsm at FreeBSD.org\n2018/06/30"]
junovitch [label="Jason Unovitch\njunovitch at FreeBSD.org\n2015/07/27"]
jylefort [label="Jean-Yves Lefort\njylefort at FreeBSD.org\n2005/04/12"]
+kai [label="Kai Knoblich\nkai at FreeBSD.org\n2019/02/01"]
kami [label="Dominic Fandrey\nkami at FreeBSD.org\n2014/09/09"]
kbowling [label="Kevin Bowling\nkbowling at FreeBSD.org\n2018/09/02"]
kevlo [label="Kevin Lo\nkevlo at FreeBSD.org\n2003/02/21"]
@@ -476,6 +477,8 @@ jadawin -> wen
joerg -> netchild
+joneum -> kai
+
jrm -> dch
jrm -> jwb
@@ -573,6 +576,7 @@ miwi -> gahr
miwi -> jhixson
miwi -> joneum
miwi -> jsm
+miwi -> kai
miwi -> kmoore
miwi -> lme
miwi -> makc
@@ -714,6 +718,7 @@ tcberner -> yuri
tcberner -> fernape
tcberner -> arrowd
tcberner -> rigoletto
+tcberner -> kai
thierry -> jadawin
thierry -> riggs
Modified: projects/clang800-import/share/misc/committers-src.dot
==============================================================================
--- projects/clang800-import/share/misc/committers-src.dot Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/misc/committers-src.dot Sun Feb 10 12:49:34 2019 (r343956)
@@ -216,6 +216,7 @@ jmcneill [label="Jared McNeill\njmcneill at FreeBSD.org\n
jmg [label="John-Mark Gurney\njmg at FreeBSD.org\n1997/02/13"]
jmmv [label="Julio Merino\njmmv at FreeBSD.org\n2013/11/02"]
joerg [label="Joerg Wunsch\njoerg at FreeBSD.org\n1993/11/14"]
+johalun [label="Johannes Lundberg\njohalun at FreeBSD.org\n2019/01/19"]
jon [label="Jonathan Chen\njon at FreeBSD.org\n2000/10/17"]
jonathan [label="Jonathan Anderson\njonathan at FreeBSD.org\n2010/10/07"]
jpaetzel [label="Josh Paetzel\njpaetzel at FreeBSD.org\n2011/01/21"]
@@ -558,6 +559,7 @@ imp -> dmlb
imp -> emax
imp -> furuta
imp -> joe
+imp -> johalun
imp -> jon
imp -> keichii
imp -> kibab
Modified: projects/clang800-import/share/mk/bsd.cpu.mk
==============================================================================
--- projects/clang800-import/share/mk/bsd.cpu.mk Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/mk/bsd.cpu.mk Sun Feb 10 12:49:34 2019 (r343956)
@@ -135,7 +135,7 @@ _CPUCFLAGS = -Wa,-me500 -msoft-float
_CPUCFLAGS = -mcpu=${CPUTYPE} -mno-powerpc64
. endif
. elif ${MACHINE_ARCH} == "powerpcspe"
-_CPUCFLAGS = -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double
+_CPUCFLAGS = -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double -mcpu=8548
. elif ${MACHINE_ARCH} == "powerpc64"
_CPUCFLAGS = -mcpu=${CPUTYPE}
. elif ${MACHINE_CPUARCH} == "mips"
@@ -362,7 +362,7 @@ CFLAGS += -mfloat-abi=softfp
.endif
.if ${MACHINE_ARCH} == "powerpcspe"
-CFLAGS += -mcpu=8540 -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double
+CFLAGS += -mcpu=8548 -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double
.endif
.if ${MACHINE_CPUARCH} == "riscv"
Modified: projects/clang800-import/share/mk/src.opts.mk
==============================================================================
--- projects/clang800-import/share/mk/src.opts.mk Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/mk/src.opts.mk Sun Feb 10 12:49:34 2019 (r343956)
@@ -83,7 +83,6 @@ __DEFAULT_YES_OPTIONS = \
CPP \
CROSS_COMPILER \
CRYPT \
- CTM \
CUSE \
CXX \
CXGBETOOL \
Modified: projects/clang800-import/share/mk/suite.test.mk
==============================================================================
--- projects/clang800-import/share/mk/suite.test.mk Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/share/mk/suite.test.mk Sun Feb 10 12:49:34 2019 (r343956)
@@ -120,5 +120,7 @@ beforecheck:
# etc.
aftercheck:
@cd ${.CURDIR} && ${MAKE} clean
+ @chflags -R 0 "${DESTDIR}"
+ @rm -Rf "${DESTDIR}"
.endif
Modified: projects/clang800-import/stand/efi/libefi/efienv.c
==============================================================================
--- projects/clang800-import/stand/efi/libefi/efienv.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/stand/efi/libefi/efienv.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -48,7 +48,7 @@ efi_getenv(EFI_GUID *g, const char *v, void *data, siz
return (EFI_OUT_OF_RESOURCES);
dl = *len;
rv = RS->GetVariable(uv, g, &attr, &dl, data);
- if (rv == EFI_SUCCESS)
+ if (rv == EFI_SUCCESS || rv == EFI_BUFFER_TOO_SMALL)
*len = dl;
free(uv);
return (rv);
Modified: projects/clang800-import/sys/amd64/conf/GENERIC
==============================================================================
--- projects/clang800-import/sys/amd64/conf/GENERIC Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/sys/amd64/conf/GENERIC Sun Feb 10 12:49:34 2019 (r343956)
@@ -102,8 +102,8 @@ options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9)
options VERBOSE_SYSINIT=0 # Support debug.verbose_sysinit, off by default
# Kernel Sanitizers
-options COVERAGE # Generic kernel coverage. Used by KCOV
-options KCOV # Kernel Coverage Sanitizer
+#options COVERAGE # Generic kernel coverage. Used by KCOV
+#options KCOV # Kernel Coverage Sanitizer
# Warning: KUBSAN can result in a kernel too large for loader to load
#options KUBSAN # Kernel Undefined Behavior Sanitizer
Modified: projects/clang800-import/sys/amd64/conf/NOTES
==============================================================================
--- projects/clang800-import/sys/amd64/conf/NOTES Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/sys/amd64/conf/NOTES Sun Feb 10 12:49:34 2019 (r343956)
@@ -612,9 +612,6 @@ options EFIRT
# Enable 32-bit runtime support for FreeBSD/i386 binaries.
options COMPAT_FREEBSD32
-# Emulate spx device for client side of SVR3 local X interface
-#XXX#options SPX_HACK
-
# Enable (32-bit) a.out binary support
options COMPAT_AOUT
Modified: projects/clang800-import/sys/arm/allwinner/axp81x.c
==============================================================================
--- projects/clang800-import/sys/arm/allwinner/axp81x.c Sun Feb 10 12:45:33 2019 (r343955)
+++ projects/clang800-import/sys/arm/allwinner/axp81x.c Sun Feb 10 12:49:34 2019 (r343956)
@@ -65,9 +65,13 @@ MALLOC_DEFINE(M_AXP8XX_REG, "AXP8xx regulator", "AXP8x
#define AXP_POWERSRC_ACIN (1 << 7)
#define AXP_POWERSRC_VBUS (1 << 5)
#define AXP_POWERSRC_VBAT (1 << 3)
-#define AXP_POWERSRC_CHARING (1 << 2)
+#define AXP_POWERSRC_CHARING (1 << 2) /* Charging Direction */
#define AXP_POWERSRC_SHORTED (1 << 1)
#define AXP_POWERSRC_STARTUP (1 << 0)
+#define AXP_POWERMODE 0x01
+#define AXP_POWERMODE_BAT_CHARGING (1 << 6)
+#define AXP_POWERMODE_BAT_PRESENT (1 << 5)
+#define AXP_POWERMODE_BAT_VALID (1 << 4)
#define AXP_ICTYPE 0x03
#define AXP_POWERCTL1 0x10
#define AXP_POWERCTL1_DCDC7 (1 << 6) /* AXP813/818 only */
@@ -117,14 +121,47 @@ MALLOC_DEFINE(M_AXP8XX_REG, "AXP8xx regulator", "AXP8x
#define AXP_POWERBAT 0x32
#define AXP_POWERBAT_SHUTDOWN (1 << 7)
#define AXP_IRQEN1 0x40
+#define AXP_IRQEN1_ACIN_HI (1 << 6)
+#define AXP_IRQEN1_ACIN_LO (1 << 5)
+#define AXP_IRQEN1_VBUS_HI (1 << 3)
+#define AXP_IRQEN1_VBUS_LO (1 << 2)
#define AXP_IRQEN2 0x41
+#define AXP_IRQEN2_BAT_IN (1 << 7)
+#define AXP_IRQEN2_BAT_NO (1 << 6)
+#define AXP_IRQEN2_BATCHGC (1 << 3)
+#define AXP_IRQEN2_BATCHGD (1 << 2)
#define AXP_IRQEN3 0x42
#define AXP_IRQEN4 0x43
+#define AXP_IRQEN4_BATLVL_LO1 (1 << 1)
+#define AXP_IRQEN4_BATLVL_LO0 (1 << 0)
#define AXP_IRQEN5 0x44
#define AXP_IRQEN5_POKSIRQ (1 << 4)
+#define AXP_IRQEN5_POKLIRQ (1 << 3)
#define AXP_IRQEN6 0x45
+#define AXP_IRQSTAT1 0x48
+#define AXP_IRQSTAT1_ACIN_HI (1 << 6)
+#define AXP_IRQSTAT1_ACIN_LO (1 << 5)
+#define AXP_IRQSTAT1_VBUS_HI (1 << 3)
+#define AXP_IRQSTAT1_VBUS_LO (1 << 2)
+#define AXP_IRQSTAT2 0x49
+#define AXP_IRQSTAT2_BAT_IN (1 << 7)
+#define AXP_IRQSTAT2_BAT_NO (1 << 6)
+#define AXP_IRQSTAT2_BATCHGC (1 << 3)
+#define AXP_IRQSTAT2_BATCHGD (1 << 2)
+#define AXP_IRQSTAT3 0x4a
+#define AXP_IRQSTAT4 0x4b
+#define AXP_IRQSTAT4_BATLVL_LO1 (1 << 1)
+#define AXP_IRQSTAT4_BATLVL_LO0 (1 << 0)
#define AXP_IRQSTAT5 0x4c
#define AXP_IRQSTAT5_POKSIRQ (1 << 4)
+#define AXP_IRQEN5_POKLIRQ (1 << 3)
+#define AXP_IRQSTAT6 0x4d
+#define AXP_BATSENSE_HI 0x78
+#define AXP_BATSENSE_LO 0x79
+#define AXP_BATCHG_HI 0x7a
+#define AXP_BATCHG_LO 0x7b
+#define AXP_BATDISCHG_HI 0x7c
+#define AXP_BATDISCHG_LO 0x7d
#define AXP_GPIO0_CTRL 0x90
#define AXP_GPIO0LDO_CTRL 0x91
#define AXP_GPIO1_CTRL 0x92
@@ -138,7 +175,25 @@ MALLOC_DEFINE(M_AXP8XX_REG, "AXP8xx regulator", "AXP8x
#define AXP_GPIO_FUNC_LDO_OFF 4
#define AXP_GPIO_SIGBIT 0x94
#define AXP_GPIO_PD 0x97
+#define AXP_FUEL_GAUGECTL 0xb8
+#define AXP_FUEL_GAUGECTL_EN (1 << 7)
+#define AXP_BAT_CAP 0xb9
+#define AXP_BAT_CAP_VALID (1 << 7)
+#define AXP_BAT_CAP_PERCENT 0x7f
+
+#define AXP_BAT_MAX_CAP_HI 0xe0
+#define AXP_BAT_MAX_CAP_VALID (1 << 7)
+#define AXP_BAT_MAX_CAP_LO 0xe1
+
+#define AXP_BAT_COULOMB_HI 0xe2
+#define AXP_BAT_COULOMB_VALID (1 << 7)
+#define AXP_BAT_COULOMB_LO 0xe3
+
+#define AXP_BAT_CAP_WARN 0xe6
+#define AXP_BAT_CAP_WARN_LV1 0xf0 /* Bits 4, 5, 6, 7 */
+#define AXP_BAT_CAP_WARN_LV2 0xf /* Bits 0, 1, 2, 3 */
+
static const struct {
const char *name;
uint8_t ctrl_reg;
@@ -710,6 +765,68 @@ axp8xx_intr(void *arg)
dev = arg;
+ error = axp8xx_read(dev, AXP_IRQSTAT1, &val, 1);
+ if (error != 0)
+ return;
+
+ if (val) {
+ if (bootverbose)
+ device_printf(dev, "AXP_IRQSTAT1 val: %x\n", val);
+ if (val & AXP_IRQSTAT1_ACIN_HI)
+ devctl_notify("PMU", "AC", "plugged", NULL);
+ if (val & AXP_IRQSTAT1_ACIN_LO)
+ devctl_notify("PMU", "AC", "unplugged", NULL);
+ if (val & AXP_IRQSTAT1_VBUS_HI)
+ devctl_notify("PMU", "USB", "plugged", NULL);
+ if (val & AXP_IRQSTAT1_VBUS_LO)
+ devctl_notify("PMU", "USB", "unplugged", NULL);
+ /* Acknowledge */
+ axp8xx_write(dev, AXP_IRQSTAT1, val);
+ }
+
+ error = axp8xx_read(dev, AXP_IRQSTAT2, &val, 1);
+ if (error != 0)
+ return;
+
+ if (val) {
+ if (bootverbose)
+ device_printf(dev, "AXP_IRQSTAT2 val: %x\n", val);
+ if (val & AXP_IRQSTAT2_BATCHGD)
+ devctl_notify("PMU", "Battery", "charged", NULL);
+ if (val & AXP_IRQSTAT2_BATCHGC)
+ devctl_notify("PMU", "Battery", "charging", NULL);
+ if (val & AXP_IRQSTAT2_BAT_NO)
+ devctl_notify("PMU", "Battery", "absent", NULL);
+ if (val & AXP_IRQSTAT2_BAT_IN)
+ devctl_notify("PMU", "Battery", "plugged", NULL);
+ /* Acknowledge */
+ axp8xx_write(dev, AXP_IRQSTAT2, val);
+ }
+
+ error = axp8xx_read(dev, AXP_IRQSTAT3, &val, 1);
+ if (error != 0)
+ return;
+
+ if (val) {
+ /* Acknowledge */
+ axp8xx_write(dev, AXP_IRQSTAT3, val);
+ }
+
+ error = axp8xx_read(dev, AXP_IRQSTAT4, &val, 1);
+ if (error != 0)
+ return;
+
+ if (val) {
+ if (bootverbose)
+ device_printf(dev, "AXP_IRQSTAT4 val: %x\n", val);
+ if (val & AXP_IRQSTAT4_BATLVL_LO0)
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list