svn commit: r304965 - in projects/clang390-import: contrib/ipfilter sys/contrib/ipfilter/netinet sys/ddb sys/dev/bhnd sys/dev/bhnd/bcma sys/dev/bhnd/siba sys/i386/i386 sys/modules
Dimitry Andric
dim at FreeBSD.org
Sun Aug 28 19:48:11 UTC 2016
Author: dim
Date: Sun Aug 28 19:48:08 2016
New Revision: 304965
URL: https://svnweb.freebsd.org/changeset/base/304965
Log:
Merge ^/head r304955 through r304964.
Modified:
projects/clang390-import/contrib/ipfilter/opts.h
projects/clang390-import/sys/contrib/ipfilter/netinet/ip_compat.h
projects/clang390-import/sys/contrib/ipfilter/netinet/ip_fil.h
projects/clang390-import/sys/contrib/ipfilter/netinet/ip_log.c
projects/clang390-import/sys/contrib/ipfilter/netinet/ip_nat.h
projects/clang390-import/sys/contrib/ipfilter/netinet/ip_proxy.h
projects/clang390-import/sys/ddb/db_expr.c
projects/clang390-import/sys/dev/bhnd/bcma/bcma.c
projects/clang390-import/sys/dev/bhnd/bhnd.h
projects/clang390-import/sys/dev/bhnd/bhnd_bus_if.m
projects/clang390-import/sys/dev/bhnd/siba/siba.c
projects/clang390-import/sys/i386/i386/machdep.c
projects/clang390-import/sys/modules/Makefile
Directory Properties:
projects/clang390-import/ (props changed)
projects/clang390-import/contrib/ipfilter/ (props changed)
projects/clang390-import/sys/contrib/ipfilter/ (props changed)
Modified: projects/clang390-import/contrib/ipfilter/opts.h
==============================================================================
--- projects/clang390-import/contrib/ipfilter/opts.h Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/contrib/ipfilter/opts.h Sun Aug 28 19:48:08 2016 (r304965)
@@ -12,7 +12,11 @@
#define __OPTS_H__
#ifndef SOLARIS
-#define SOLARIS (defined(sun) && (defined(__svr4__) || defined(__SVR4)))
+# if defined(sun) && (defined(__svr4__) || defined(__SVR4))
+# define SOLARIS 1
+# else
+# define SOLARIS 0
+# endif
#endif
#define OPT_REMOVE 0x000001
#define OPT_DEBUG 0x000002
Modified: projects/clang390-import/sys/contrib/ipfilter/netinet/ip_compat.h
==============================================================================
--- projects/clang390-import/sys/contrib/ipfilter/netinet/ip_compat.h Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/contrib/ipfilter/netinet/ip_compat.h Sun Aug 28 19:48:08 2016 (r304965)
@@ -32,10 +32,12 @@
# define __KERNEL__
#endif
-#if defined(sun) && (defined(__svr4__) || defined(__SVR4))
-# define SOLARIS 1
-#else
-# define SOLARIS 0
+#ifndef SOLARIS
+# if defined(sun) && (defined(__svr4__) || defined(__SVR4))
+# define SOLARIS 1
+# else
+# define SOLARIS 0
+# endif
#endif
Modified: projects/clang390-import/sys/contrib/ipfilter/netinet/ip_fil.h
==============================================================================
--- projects/clang390-import/sys/contrib/ipfilter/netinet/ip_fil.h Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/contrib/ipfilter/netinet/ip_fil.h Sun Aug 28 19:48:08 2016 (r304965)
@@ -29,7 +29,11 @@
#endif
#ifndef SOLARIS
-# define SOLARIS (defined(sun) && (defined(__svr4__) || defined(__SVR4)))
+# if defined(sun) && (defined(__svr4__) || defined(__SVR4))
+# define SOLARIS 1
+# else
+# define SOLARIS 0
+# endif
#endif
#ifndef __P
Modified: projects/clang390-import/sys/contrib/ipfilter/netinet/ip_log.c
==============================================================================
--- projects/clang390-import/sys/contrib/ipfilter/netinet/ip_log.c Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/contrib/ipfilter/netinet/ip_log.c Sun Aug 28 19:48:08 2016 (r304965)
@@ -19,7 +19,11 @@
# include <osreldate.h>
#endif
#ifndef SOLARIS
-# define SOLARIS (defined(sun) && (defined(__svr4__) || defined(__SVR4)))
+# if defined(sun) && (defined(__svr4__) || defined(__SVR4))
+# define SOLARIS 1
+# else
+# define SOLARIS 0
+# endif
#endif
#include <sys/errno.h>
#include <sys/types.h>
Modified: projects/clang390-import/sys/contrib/ipfilter/netinet/ip_nat.h
==============================================================================
--- projects/clang390-import/sys/contrib/ipfilter/netinet/ip_nat.h Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/contrib/ipfilter/netinet/ip_nat.h Sun Aug 28 19:48:08 2016 (r304965)
@@ -13,8 +13,12 @@
#ifndef __IP_NAT_H__
#define __IP_NAT_H__
-#ifndef SOLARIS
-#define SOLARIS (defined(sun) && (defined(__svr4__) || defined(__SVR4)))
+#ifndef SOLARIS
+# if defined(sun) && (defined(__svr4__) || defined(__SVR4))
+# define SOLARIS 1
+# else
+# define SOLARIS 0
+# endif
#endif
#if defined(__STDC__) || defined(__GNUC__) || defined(_AIX51)
Modified: projects/clang390-import/sys/contrib/ipfilter/netinet/ip_proxy.h
==============================================================================
--- projects/clang390-import/sys/contrib/ipfilter/netinet/ip_proxy.h Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/contrib/ipfilter/netinet/ip_proxy.h Sun Aug 28 19:48:08 2016 (r304965)
@@ -12,8 +12,12 @@
#ifndef __IP_PROXY_H__
#define __IP_PROXY_H__
-#ifndef SOLARIS
-#define SOLARIS (defined(sun) && (defined(__svr4__) || defined(__SVR4)))
+#ifndef SOLARIS
+# if defined(sun) && (defined(__svr4__) || defined(__SVR4))
+# define SOLARIS 1
+# else
+# define SOLARIS 0
+# endif
#endif
#if defined(__STDC__) || defined(__GNUC__) || defined(_AIX51)
Modified: projects/clang390-import/sys/ddb/db_expr.c
==============================================================================
--- projects/clang390-import/sys/ddb/db_expr.c Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/ddb/db_expr.c Sun Aug 28 19:48:08 2016 (r304965)
@@ -57,7 +57,8 @@ db_term(db_expr_t *valuep)
if (!db_value_of_name(db_tok_string, valuep) &&
!db_value_of_name_pcpu(db_tok_string, valuep) &&
!db_value_of_name_vnet(db_tok_string, valuep)) {
- db_error("Symbol not found\n");
+ db_printf("Symbol '%s' not found\n", db_tok_string);
+ db_error(NULL);
/*NOTREACHED*/
}
return (true);
@@ -89,12 +90,14 @@ db_term(db_expr_t *valuep)
}
if (t == tLPAREN) {
if (!db_expression(valuep)) {
- db_error("Syntax error\n");
+ db_printf("Expression syntax error after '%c'\n", '(');
+ db_error(NULL);
/*NOTREACHED*/
}
t = db_read_token();
if (t != tRPAREN) {
- db_error("Syntax error\n");
+ db_printf("Expression syntax error -- expected '%c'\n", ')');
+ db_error(NULL);
/*NOTREACHED*/
}
return (true);
@@ -164,7 +167,9 @@ db_mult_expr(db_expr_t *valuep)
while (t == tSTAR || t == tSLASH || t == tPCT || t == tHASH ||
t == tBIT_AND ) {
if (!db_term(&rhs)) {
- db_printf("Expression syntax error after '%c'\n", '!');
+ db_printf("Expression syntax error after '%c'\n",
+ t == tSTAR ? '*' : t == tSLASH ? '/' : t == tPCT ? '%' :
+ t == tHASH ? '#' : '&');
db_error(NULL);
/*NOTREACHED*/
}
@@ -177,7 +182,7 @@ db_mult_expr(db_expr_t *valuep)
break;
default:
if (rhs == 0) {
- db_error("Divide by 0\n");
+ db_error("Division by 0\n");
/*NOTREACHED*/
}
if (t == tSLASH)
@@ -199,7 +204,6 @@ db_add_expr(db_expr_t *valuep)
{
db_expr_t lhs, rhs;
int t;
- char c;
if (!db_mult_expr(&lhs))
return (false);
@@ -207,8 +211,8 @@ db_add_expr(db_expr_t *valuep)
t = db_read_token();
while (t == tPLUS || t == tMINUS || t == tBIT_OR) {
if (!db_mult_expr(&rhs)) {
- c = db_tok_string[0];
- db_printf("Expression syntax error after '%c'\n", c);
+ db_printf("Expression syntax error after '%c'\n",
+ t == tPLUS ? '+' : t == tMINUS ? '-' : '|');
db_error(NULL);
/*NOTREACHED*/
}
@@ -243,11 +247,14 @@ db_shift_expr(db_expr_t *valuep)
t = db_read_token();
while (t == tSHIFT_L || t == tSHIFT_R) {
if (!db_add_expr(&rhs)) {
- db_error("Syntax error\n");
+ db_printf("Expression syntax error after '%s'\n",
+ t == tSHIFT_L ? "<<" : ">>");
+ db_error(NULL);
/*NOTREACHED*/
}
if (rhs < 0) {
- db_error("Negative shift amount\n");
+ db_printf("Negative shift amount %jd\n", (intmax_t)rhs);
+ db_error(NULL);
/*NOTREACHED*/
}
if (t == tSHIFT_L)
@@ -269,7 +276,6 @@ db_logical_relation_expr(
{
db_expr_t lhs, rhs;
int t;
- char op[3];
if (!db_shift_expr(&lhs))
return (false);
@@ -277,11 +283,11 @@ db_logical_relation_expr(
t = db_read_token();
while (t == tLOG_EQ || t == tLOG_NOT_EQ || t == tGREATER ||
t == tGREATER_EQ || t == tLESS || t == tLESS_EQ) {
- op[0] = db_tok_string[0];
- op[1] = db_tok_string[1];
- op[2] = 0;
if (!db_shift_expr(&rhs)) {
- db_printf("Expression syntax error after \"%s\"\n", op);
+ db_printf("Expression syntax error after '%s'\n",
+ t == tLOG_EQ ? "==" : t == tLOG_NOT_EQ ? "!=" :
+ t == tGREATER ? ">" : t == tGREATER_EQ ? ">=" :
+ t == tLESS ? "<" : "<=");
db_error(NULL);
/*NOTREACHED*/
}
Modified: projects/clang390-import/sys/dev/bhnd/bcma/bcma.c
==============================================================================
--- projects/clang390-import/sys/dev/bhnd/bcma/bcma.c Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/dev/bhnd/bcma/bcma.c Sun Aug 28 19:48:08 2016 (r304965)
@@ -492,6 +492,42 @@ bcma_free_bhnd_dinfo(device_t dev, struc
bcma_free_dinfo(dev, (struct bcma_devinfo *)dinfo);
}
+
+static int
+bcma_get_core_table(device_t dev, device_t child, struct bhnd_core_info **cores,
+ u_int *num_cores)
+{
+ struct bcma_softc *sc;
+ struct bcma_erom erom;
+ const struct bhnd_chipid *cid;
+ struct resource *r;
+ int error;
+ int rid;
+
+ sc = device_get_softc(dev);
+
+ /* Map the EROM table. */
+ cid = BHND_BUS_GET_CHIPID(dev, dev);
+ rid = 0;
+ r = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, cid->enum_addr,
+ cid->enum_addr + BCMA_EROM_TABLE_SIZE, BCMA_EROM_TABLE_SIZE,
+ RF_ACTIVE);
+ if (r == NULL) {
+ device_printf(dev, "failed to allocate EROM resource\n");
+ return (ENXIO);
+ }
+
+ /* Enumerate all declared cores */
+ if ((error = bcma_erom_open(&erom, r, BCMA_EROM_TABLE_START)))
+ goto cleanup;
+
+ error = bcma_erom_get_core_info(&erom, cores, num_cores);
+
+cleanup:
+ bus_release_resource(dev, SYS_RES_MEMORY, rid, r);
+ return (error);
+}
+
/**
* Scan a device enumeration ROM table, adding all valid discovered cores to
* the bus.
@@ -577,6 +613,7 @@ static device_method_t bcma_methods[] =
DEVMETHOD(bhnd_bus_find_hostb_device, bcma_find_hostb_device),
DEVMETHOD(bhnd_bus_alloc_devinfo, bcma_alloc_bhnd_dinfo),
DEVMETHOD(bhnd_bus_free_devinfo, bcma_free_bhnd_dinfo),
+ DEVMETHOD(bhnd_bus_get_core_table, bcma_get_core_table),
DEVMETHOD(bhnd_bus_reset_core, bcma_reset_core),
DEVMETHOD(bhnd_bus_suspend_core, bcma_suspend_core),
DEVMETHOD(bhnd_bus_read_config, bcma_read_config),
Modified: projects/clang390-import/sys/dev/bhnd/bhnd.h
==============================================================================
--- projects/clang390-import/sys/dev/bhnd/bhnd.h Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/dev/bhnd/bhnd.h Sun Aug 28 19:48:08 2016 (r304965)
@@ -425,6 +425,32 @@ bhnd_get_chipid(device_t dev) {
};
/**
+ * Get a list of all cores discoverable on the bhnd bus.
+ *
+ * Enumerates all cores discoverable on @p dev, returning the list in
+ * @p cores and the count in @p num_cores.
+ *
+ * The memory allocated for the list should be freed using
+ * `free(*cores, M_BHND)`. @p cores and @p num_cores are not changed
+ * when an error is returned.
+ *
+ * @param dev A bhnd bus child device.
+ * @param[out] cores The table of core descriptors.
+ * @param[out] num_cores The number of core descriptors in @p cores.
+ *
+ * @retval 0 success
+ * @retval non-zero if an error occurs enumerating @p dev, a regular UNIX
+ * error code should be returned.
+ */
+static inline int
+bhnd_get_core_table(device_t dev, struct bhnd_core_info **cores,
+ u_int *num_cores)
+{
+ return (BHND_BUS_GET_CORE_TABLE(device_get_parent(dev), dev, cores,
+ num_cores));
+}
+
+/**
* If supported by the chipset, return the clock source for the given clock.
*
* This function is only supported on early PWRCTL-equipped chipsets
Modified: projects/clang390-import/sys/dev/bhnd/bhnd_bus_if.m
==============================================================================
--- projects/clang390-import/sys/dev/bhnd/bhnd_bus_if.m Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/dev/bhnd/bhnd_bus_if.m Sun Aug 28 19:48:08 2016 (r304965)
@@ -56,6 +56,13 @@ CODE {
panic("bhnd_bus_get_chipid unimplemented");
}
+ static int
+ bhnd_bus_null_get_core_table(device_t dev, device_t child,
+ struct bhnd_core_info **cores, u_int *num_cores)
+ {
+ panic("bhnd_bus_get_core_table unimplemented");
+ }
+
static bhnd_attach_type
bhnd_bus_null_get_attach_type(device_t dev, device_t child)
{
@@ -271,6 +278,32 @@ METHOD const struct bhnd_chipid * get_ch
} DEFAULT bhnd_bus_null_get_chipid;
/**
+ * Get a list of all cores discoverable on @p dev.
+ *
+ * Enumerates all cores discoverable on @p dev, returning the list in
+ * @p cores and the count in @p num_cores.
+ *
+ * The memory allocated for the list should be freed using
+ * `free(*cores, M_BHND)`. @p cores and @p num_cores are not changed
+ * when an error is returned.
+ *
+ * @param dev The bhnd bus device.
+ * @param child The requesting bhnd bus child.
+ * @param[out] cores The table of core descriptors.
+ * @param[out] num_cores The number of core descriptors in @p cores.
+ *
+ * @retval 0 success
+ * @retval non-zero if an error occurs enumerating @p dev, a regular UNIX
+ * error code should be returned.
+ */
+METHOD int get_core_table {
+ device_t dev;
+ device_t child;
+ struct bhnd_core_info **cores;
+ u_int *num_cores;
+} DEFAULT bhnd_bus_null_get_core_table;
+
+/**
* Return the BHND attachment type of the parent bus.
*
* @param dev The device whose child is being examined.
Modified: projects/clang390-import/sys/dev/bhnd/siba/siba.c
==============================================================================
--- projects/clang390-import/sys/dev/bhnd/siba/siba.c Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/dev/bhnd/siba/siba.c Sun Aug 28 19:48:08 2016 (r304965)
@@ -504,6 +504,76 @@ siba_free_bhnd_dinfo(device_t dev, struc
siba_free_dinfo(dev, (struct siba_devinfo *)dinfo);
}
+
+static int
+siba_get_core_table(device_t dev, device_t child, struct bhnd_core_info **cores,
+ u_int *num_cores)
+{
+ const struct bhnd_chipid *chipid;
+ struct bhnd_core_info *table;
+ struct bhnd_resource *r;
+ int error;
+ int rid;
+
+ /* Fetch the core count from our chip identification */
+ chipid = BHND_BUS_GET_CHIPID(dev, dev);
+
+ /* Allocate our local core table */
+ table = malloc(sizeof(*table) * chipid->ncores, M_BHND, M_NOWAIT);
+ if (table == NULL)
+ return (ENOMEM);
+
+ /* Enumerate all cores. */
+ for (u_int i = 0; i < chipid->ncores; i++) {
+ struct siba_core_id cid;
+ uint32_t idhigh, idlow;
+
+ /* Map the core's register block */
+ rid = 0;
+ r = bhnd_alloc_resource(dev, SYS_RES_MEMORY, &rid,
+ SIBA_CORE_ADDR(i), SIBA_CORE_ADDR(i) + SIBA_CORE_SIZE - 1,
+ SIBA_CORE_SIZE, RF_ACTIVE);
+ if (r == NULL) {
+ error = ENXIO;
+ goto failed;
+ }
+
+ /* Read the core info */
+ idhigh = bhnd_bus_read_4(r, SB0_REG_ABS(SIBA_CFG0_IDHIGH));
+ idlow = bhnd_bus_read_4(r, SB0_REG_ABS(SIBA_CFG0_IDLOW));
+
+ cid = siba_parse_core_id(idhigh, idlow, i, 0);
+ table[i] = cid.core_info;
+
+ /* Determine unit number */
+ for (u_int j = 0; j < i; j++) {
+ if (table[j].vendor == table[i].vendor &&
+ table[j].device == table[i].device)
+ table[i].unit++;
+ }
+
+ /* Release our resource */
+ bhnd_release_resource(dev, SYS_RES_MEMORY, rid, r);
+ r = NULL;
+ }
+
+ /* Provide the result values (performed last to avoid modifying
+ * cores/num_cores if enumeration failed). */
+ *cores = table;
+ *num_cores = chipid->ncores;
+
+ return (0);
+
+failed:
+ if (table != NULL)
+ free(table, M_BHND);
+
+ if (r != NULL)
+ bhnd_release_resource(dev, SYS_RES_MEMORY, rid, r);
+
+ return (error);
+}
+
/**
* Scan the core table and add all valid discovered cores to
* the bus.
@@ -696,6 +766,7 @@ static device_method_t siba_methods[] =
/* BHND interface */
DEVMETHOD(bhnd_bus_find_hostb_device, siba_find_hostb_device),
+ DEVMETHOD(bhnd_bus_get_core_table, siba_get_core_table),
DEVMETHOD(bhnd_bus_alloc_devinfo, siba_alloc_bhnd_dinfo),
DEVMETHOD(bhnd_bus_free_devinfo, siba_free_bhnd_dinfo),
DEVMETHOD(bhnd_bus_reset_core, siba_reset_core),
Modified: projects/clang390-import/sys/i386/i386/machdep.c
==============================================================================
--- projects/clang390-import/sys/i386/i386/machdep.c Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/i386/i386/machdep.c Sun Aug 28 19:48:08 2016 (r304965)
@@ -2636,20 +2636,17 @@ init386(first)
dblfault_tss.tss_cs = GSEL(GCODE_SEL, SEL_KPL);
dblfault_tss.tss_ldt = GSEL(GLDT_SEL, SEL_KPL);
- vm86_initialize();
- getmemsize(first);
- init_param2(physmem);
-
- /* now running on new page tables, configured,and u/iom is accessible */
-
- /*
- * Initialize the console before we print anything out.
- */
- cninit();
-
- if (metadata_missing)
- printf("WARNING: loader(8) metadata is missing!\n");
+ /* Initialize the tss (except for the final esp0) early for vm86. */
+ PCPU_SET(common_tss.tss_esp0, thread0.td_kstack +
+ thread0.td_kstack_pages * PAGE_SIZE - 16);
+ PCPU_SET(common_tss.tss_ss0, GSEL(GDATA_SEL, SEL_KPL));
+ gsel_tss = GSEL(GPROC0_SEL, SEL_KPL);
+ PCPU_SET(tss_gdt, &gdt[GPROC0_SEL].sd);
+ PCPU_SET(common_tssd, *PCPU_GET(tss_gdt));
+ PCPU_SET(common_tss.tss_ioopt, (sizeof (struct i386tss)) << 16);
+ ltr(gsel_tss);
+ /* Initialize the PIC early for vm86 calls. */
#ifdef DEV_ISA
#ifdef DEV_ATPIC
#ifndef PC98
@@ -2671,6 +2668,20 @@ init386(first)
#endif
#endif
+ vm86_initialize();
+ getmemsize(first);
+ init_param2(physmem);
+
+ /* now running on new page tables, configured,and u/iom is accessible */
+
+ /*
+ * Initialize the console before we print anything out.
+ */
+ cninit();
+
+ if (metadata_missing)
+ printf("WARNING: loader(8) metadata is missing!\n");
+
#ifdef DDB
db_fetch_ksymtab(bootinfo.bi_symtab, bootinfo.bi_esymtab);
#endif
@@ -2701,14 +2712,10 @@ init386(first)
}
#endif
PCPU_SET(curpcb, thread0.td_pcb);
- /* make an initial tss so cpu can get interrupt stack on syscall! */
+ /* Move esp0 in the tss to its final place. */
/* Note: -16 is so we can grow the trapframe if we came from vm86 */
PCPU_SET(common_tss.tss_esp0, (vm_offset_t)thread0.td_pcb - 16);
- PCPU_SET(common_tss.tss_ss0, GSEL(GDATA_SEL, SEL_KPL));
- gsel_tss = GSEL(GPROC0_SEL, SEL_KPL);
- PCPU_SET(tss_gdt, &gdt[GPROC0_SEL].sd);
- PCPU_SET(common_tssd, *PCPU_GET(tss_gdt));
- PCPU_SET(common_tss.tss_ioopt, (sizeof (struct i386tss)) << 16);
+ gdt[GPROC0_SEL].sd.sd_type = SDT_SYS386TSS; /* clear busy bit */
ltr(gsel_tss);
/* make a call gate to reenter kernel with */
Modified: projects/clang390-import/sys/modules/Makefile
==============================================================================
--- projects/clang390-import/sys/modules/Makefile Sun Aug 28 19:35:29 2016 (r304964)
+++ projects/clang390-import/sys/modules/Makefile Sun Aug 28 19:48:08 2016 (r304965)
@@ -766,7 +766,7 @@ _epic= epic
_igb= igb
.endif
-.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE} == "i386"
+.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
_cloudabi32= cloudabi32
.endif
.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64"
More information about the svn-src-projects
mailing list