From owner-p4-projects@FreeBSD.ORG Wed Apr 17 22:24:38 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C6720D3; Wed, 17 Apr 2013 22:24:38 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 8739DD1 for ; Wed, 17 Apr 2013 22:24:38 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) by mx1.freebsd.org (Postfix) with ESMTP id 78556A67 for ; Wed, 17 Apr 2013 22:24:38 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.6/8.14.6) with ESMTP id r3HMOcwZ077361 for ; Wed, 17 Apr 2013 22:24:38 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.6/8.14.6/Submit) id r3HMOcCG077358 for perforce@freebsd.org; Wed, 17 Apr 2013 22:24:38 GMT (envelope-from brooks@freebsd.org) Date: Wed, 17 Apr 2013 22:24:38 GMT Message-Id: <201304172224.r3HMOcCG077358@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 227823 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Apr 2013 22:24:39 -0000 http://p4web.freebsd.org/@@227823?ac=10 Change 227823 by brooks@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;