PERFORCE change 227823 for review
Brooks Davis
brooks at FreeBSD.org
Wed Apr 17 22:24:39 UTC 2013
http://p4web.freebsd.org/@@227823?ac=10
Change 227823 by brooks at brooks_zenith on 2013/04/17 22:23:51
IF beribsd.
Affected files ...
.. //depot/projects/ctsrd/cheribsd/src/lib/libstand/mips/_setjmp.S#4 integrate
.. //depot/projects/ctsrd/cheribsd/src/sys/boot/mips/Makefile#4 integrate
.. //depot/projects/ctsrd/cheribsd/src/sys/mips/beri/beri_pic.c#3 integrate
.. //depot/projects/ctsrd/cheribsd/src/sys/mips/include/cpufunc.h#6 edit
.. //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/bus_space_generic.c#7 edit
Differences ...
==== //depot/projects/ctsrd/cheribsd/src/lib/libstand/mips/_setjmp.S#4 (text+ko) ====
@@ -72,22 +72,6 @@
REG_S s7, ((S7 + 3) * SZREG)(a0)
REG_S sp, ((SP + 3) * SZREG)(a0)
REG_S s8, ((S8 + 3) * SZREG)(a0)
-/* XXXRW: Don't try to save/restore FP in libstand. */
-#if 0
- cfc1 v0, $31 # too bad cant check if FP used
- FP_S $f20, ((20 + 38) * SZREG)(a0)
- FP_S $f21, ((21 + 38) * SZREG)(a0)
- FP_S $f22, ((22 + 38) * SZREG)(a0)
- FP_S $f23, ((23 + 38) * SZREG)(a0)
- FP_S $f24, ((24 + 38) * SZREG)(a0)
- FP_S $f25, ((25 + 38) * SZREG)(a0)
- FP_S $f26, ((26 + 38) * SZREG)(a0)
- FP_S $f27, ((27 + 38) * SZREG)(a0)
- FP_S $f28, ((28 + 38) * SZREG)(a0)
- FP_S $f29, ((29 + 38) * SZREG)(a0)
- FP_S $f30, ((30 + 38) * SZREG)(a0)
- FP_S $f31, ((31 + 38) * SZREG)(a0)
-#endif
REG_S v0, ((32 + 38) * SZREG)(a0)
j ra
move v0, zero
@@ -115,25 +99,6 @@
REG_L v0, ((32 + 38) * SZREG)(a0) # get fpu status
REG_L sp, ((SP + 3) * SZREG)(a0)
REG_L s8, ((S8 + 3) * SZREG)(a0)
-/* XXXRW: Don't try to save/restore FP in libstand. */
-#if 0
-/* Octeon does not have an FPU */
-#if !defined(_MIPS_ARCH_OCTEON)
- ctc1 v0, $31
- FP_L $f20, ((20 + 38) * SZREG)(a0)
- FP_L $f21, ((21 + 38) * SZREG)(a0)
- FP_L $f22, ((22 + 38) * SZREG)(a0)
- FP_L $f23, ((23 + 38) * SZREG)(a0)
- FP_L $f24, ((24 + 38) * SZREG)(a0)
- FP_L $f25, ((25 + 38) * SZREG)(a0)
- FP_L $f26, ((26 + 38) * SZREG)(a0)
- FP_L $f27, ((27 + 38) * SZREG)(a0)
- FP_L $f28, ((28 + 38) * SZREG)(a0)
- FP_L $f29, ((29 + 38) * SZREG)(a0)
- FP_L $f30, ((30 + 38) * SZREG)(a0)
- FP_L $f31, ((31 + 38) * SZREG)(a0)
-#endif /* _MIPS_ARCH_OCTEON */
-#endif
j ra
move v0, a1
==== //depot/projects/ctsrd/cheribsd/src/sys/boot/mips/Makefile#4 (text+ko) ====
==== //depot/projects/ctsrd/cheribsd/src/sys/mips/beri/beri_pic.c#3 (text+ko) ====
@@ -56,7 +56,6 @@
static void bp_write_cfg(struct beripic_softc *, int, uint64_t);
static void bp_detach_resources(device_t);
static char *bp_strconfig(uint64_t, char *, size_t);
-static void bp_print_config(device_t);
static void bp_config_source(device_t, int, int, u_long, u_long);
#ifdef __mips__
static void bp_set_counter_name(device_t, device_t, int);
@@ -217,29 +216,6 @@
}
static void
-bp_print_config(device_t dev)
-{
- char configstr[64];
- struct beripic_softc *sc;
- int src;
- uint64_t config;
-
- sc = device_get_softc(dev);
-
- for (src = 0; src < sc->bp_nsrcs; src++) {
- config = bp_read_cfg(sc, src);
- if (config == 0)
- continue;
-
- device_printf(dev, "src %d: %s\n", src,
- bp_strconfig(config, configstr, sizeof(configstr)));
- if (config & BP_CFG_RESERVED)
- device_printf(dev, "reserved bits not 0: 0x%016jx\n",
- (uintmax_t) config);
- }
-}
-
-static void
bp_config_source(device_t ic, int src, int enable, u_long tid, u_long irq)
{
char configstr[64];
@@ -292,11 +268,13 @@
static int
beripic_fdt_attach(device_t dev)
{
+ char configstr[64];
struct beripic_softc *sc;
struct fdt_ic *fic;
pcell_t nhard, nsoft;
phandle_t ph;
- int error, i;
+ int error, i, src;
+ uint64_t config;
sc = device_get_softc(dev);
sc->bp_dev = dev;
@@ -442,10 +420,22 @@
sc->bp_clear_bst = rman_get_bustag(sc->bp_clear_res);
sc->bp_clear_bsh = rman_get_bushandle(sc->bp_clear_res);
- if (bootverbose)
- bp_print_config(dev);
+ for (src = 0; src < sc->bp_nsrcs; src++) {
+ config = bp_read_cfg(sc, src);
+ if (config == 0)
+ continue;
+
+ if (bootverbose) {
+ device_printf(dev, "initial config: src %d: %s\n", src,
+ bp_strconfig(config, configstr, sizeof(configstr)));
+ if (config & BP_CFG_RESERVED)
+ device_printf(dev,
+ "reserved bits not 0: 0x%016jx\n",
+ (uintmax_t) config);
+ }
- /* XXX: ensure values match reset config */
+ bp_config_source(dev, src, 0, 0, 0);
+ }
fic = malloc(sizeof(*fic), M_BERIPIC, M_WAITOK|M_ZERO);
fic->iph = ph;
==== //depot/projects/ctsrd/cheribsd/src/sys/mips/include/cpufunc.h#6 (text+ko) ====
@@ -354,11 +354,15 @@
#define readb(va) (*(volatile uint8_t *) (va))
#define readw(va) (*(volatile uint16_t *) (va))
#define readl(va) (*(volatile uint32_t *) (va))
-#define readd(va) mips3_ld(va)
+#if defined(__GNUC__) && !defined(__mips_o32)
+#define readq(a) (*(volatile uint64_t *)(a))
+#endif
#define writeb(va, d) (*(volatile uint8_t *) (va) = (d))
#define writew(va, d) (*(volatile uint16_t *) (va) = (d))
#define writel(va, d) (*(volatile uint32_t *) (va) = (d))
-#define writed(va, d) mips3_sd((va), (d))
+#if defined(__GNUC__) && !defined(__mips_o32)
+#define writeq(va, d) (*(volatile uint64_t *) (va) = (d))
+#endif
#endif /* !_MACHINE_CPUFUNC_H_ */
==== //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/bus_space_generic.c#7 (text+ko) ====
@@ -219,11 +219,15 @@
#define rd8(a) readb(a)
#define rd16(a) readw(a)
#define rd32(a) readl(a)
-#define rd64(a) readd(a)
+#ifdef readq
+#define rd64(a) readq((a))
+#endif
#define wr8(a, v) writeb(a, v)
#define wr16(a, v) writew(a, v)
#define wr32(a, v) writel(a, v)
-#define wr64(a, v) writed(a, v)
+#ifdef writeq
+#define wr64(a, v) writeq(a, v)
+#endif
#endif
/* generic bus_space tag */
@@ -441,7 +445,7 @@
uint64_t value)
{
-#ifdef rd64
+#ifdef wr64
wr64(bsh + offset, value);
#else
panic("%s: not implemented", __func__);
@@ -486,7 +490,7 @@
generic_bs_wm_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
const uint64_t *addr, size_t count)
{
-#ifdef rd64
+#ifdef wr64
bus_addr_t baddr = bsh + offset;
while (count--)
@@ -540,7 +544,7 @@
generic_bs_wr_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
const uint64_t *addr, size_t count)
{
-#ifdef rd64
+#ifdef wr64
bus_addr_t baddr = bsh + offset;
while (count--) {
@@ -590,7 +594,7 @@
generic_bs_sm_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
uint64_t value, size_t count)
{
-#ifdef rd64
+#ifdef wr64
bus_addr_t addr = bsh + offset;
while (count--)
@@ -638,7 +642,7 @@
generic_bs_sr_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
uint64_t value, size_t count)
{
-#ifdef rd64
+#ifdef wr64
bus_addr_t addr = bsh + offset;
for (; count != 0; count--, addr += 8)
@@ -716,7 +720,7 @@
generic_bs_c_8(void *t, bus_space_handle_t bsh1, bus_size_t off1,
bus_space_handle_t bsh2, bus_size_t off2, size_t count)
{
-#ifdef rd64
+#if defined(rd64) && defined(wr64)
bus_addr_t addr1 = bsh1 + off1;
bus_addr_t addr2 = bsh2 + off2;
More information about the p4-projects
mailing list