Module Name: src Committed By: matt Date: Thu Jan 23 19:26:55 UTC 2014
Modified Files: src/sys/arch/arm/allwinner: awin_space.c src/sys/arch/evbarm/cubie: cubie_machdep.c cubie_start.S Log Message: Add a few small changes so that the CUBIEBOARDs can run big endian. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/allwinner/awin_space.c cvs rdiff -u -r1.8 -r1.9 src/sys/arch/evbarm/cubie/cubie_machdep.c cvs rdiff -u -r1.2 -r1.3 src/sys/arch/evbarm/cubie/cubie_start.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/allwinner/awin_space.c diff -u src/sys/arch/arm/allwinner/awin_space.c:1.1 src/sys/arch/arm/allwinner/awin_space.c:1.2 --- src/sys/arch/arm/allwinner/awin_space.c:1.1 Wed Sep 4 02:39:01 2013 +++ src/sys/arch/arm/allwinner/awin_space.c Thu Jan 23 19:26:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: awin_space.c,v 1.1 2013/09/04 02:39:01 matt Exp $ */ +/* $NetBSD: awin_space.c,v 1.2 2014/01/23 19:26:55 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: awin_space.c,v 1.1 2013/09/04 02:39:01 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: awin_space.c,v 1.2 2014/01/23 19:26:55 matt Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -48,6 +48,12 @@ bs_protos(bs_notimpl); bs_protos(generic); bs_protos(generic_armv4); +#if __ARMEB__ +#define NSWAP(n) n ## _swap +#else +#define NSWAP(n) n +#endif + struct bus_space awin_bs_tag = { /* cookie */ (void *) 0, @@ -72,38 +78,38 @@ struct bus_space awin_bs_tag = { /* read (single) */ generic_bs_r_1, - generic_armv4_bs_r_2, - generic_bs_r_4, + NSWAP(generic_armv4_bs_r_2), + NSWAP(generic_bs_r_4), bs_notimpl_bs_r_8, /* read multiple */ generic_bs_rm_1, - generic_armv4_bs_rm_2, - generic_bs_rm_4, + NSWAP(generic_armv4_bs_rm_2), + NSWAP(generic_bs_rm_4), bs_notimpl_bs_rm_8, /* read region */ generic_bs_rr_1, - generic_armv4_bs_rr_2, - generic_bs_rr_4, + NSWAP(generic_armv4_bs_rr_2), + NSWAP(generic_bs_rr_4), bs_notimpl_bs_rr_8, /* write (single) */ generic_bs_w_1, - generic_armv4_bs_w_2, - generic_bs_w_4, + NSWAP(generic_armv4_bs_w_2), + NSWAP(generic_bs_w_4), bs_notimpl_bs_w_8, /* write multiple */ generic_bs_wm_1, - generic_armv4_bs_wm_2, - generic_bs_wm_4, + NSWAP(generic_armv4_bs_wm_2), + NSWAP(generic_bs_wm_4), bs_notimpl_bs_wm_8, /* write region */ generic_bs_wr_1, - generic_armv4_bs_wr_2, - generic_bs_wr_4, + NSWAP(generic_armv4_bs_wr_2), + NSWAP(generic_bs_wr_4), bs_notimpl_bs_wr_8, /* set multiple */ @@ -114,7 +120,7 @@ struct bus_space awin_bs_tag = { /* set region */ generic_bs_sr_1, - generic_armv4_bs_sr_2, + NSWAP(generic_armv4_bs_sr_2), bs_notimpl_bs_sr_4, bs_notimpl_bs_sr_8, @@ -127,38 +133,38 @@ struct bus_space awin_bs_tag = { #ifdef __BUS_SPACE_HAS_STREAM_METHODS /* read (single) */ generic_bs_r_1, - generic_armv4_bs_r_2, - generic_bs_r_4, + NSWAP(generic_armv4_bs_r_2), + NSWAP(generic_bs_r_4), bs_notimpl_bs_r_8, /* read multiple */ generic_bs_rm_1, - generic_armv4_bs_rm_2, - generic_bs_rm_4, + NSWAP(generic_armv4_bs_rm_2), + NSWAP(generic_bs_rm_4), bs_notimpl_bs_rm_8, /* read region */ generic_bs_rr_1, - generic_armv4_bs_rr_2, - generic_bs_rr_4, + NSWAP(generic_armv4_bs_rr_2), + NSWAP(generic_bs_rr_4), bs_notimpl_bs_rr_8, /* write (single) */ generic_bs_w_1, - generic_armv4_bs_w_2, - generic_bs_w_4, + NSWAP(generic_armv4_bs_w_2), + NSWAP(generic_bs_w_4), bs_notimpl_bs_w_8, /* write multiple */ generic_bs_wm_1, - generic_armv4_bs_wm_2, - generic_bs_wm_4, + NSWAP(generic_armv4_bs_wm_2), + NSWAP(generic_bs_wm_4), bs_notimpl_bs_wm_8, /* write region */ generic_bs_wr_1, - generic_armv4_bs_wr_2, - generic_bs_wr_4, + NSWAP(generic_armv4_bs_wr_2), + NSWAP(generic_bs_wr_4), bs_notimpl_bs_wr_8, #endif }; Index: src/sys/arch/evbarm/cubie/cubie_machdep.c diff -u src/sys/arch/evbarm/cubie/cubie_machdep.c:1.8 src/sys/arch/evbarm/cubie/cubie_machdep.c:1.9 --- src/sys/arch/evbarm/cubie/cubie_machdep.c:1.8 Mon Sep 9 17:54:38 2013 +++ src/sys/arch/evbarm/cubie/cubie_machdep.c Thu Jan 23 19:26:55 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: cubie_machdep.c,v 1.8 2013/09/09 17:54:38 matt Exp $ */ +/* $NetBSD: cubie_machdep.c,v 1.9 2014/01/23 19:26:55 matt Exp $ */ /* * Machine dependent functions for kernel setup for TI OSK5912 board. @@ -125,7 +125,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cubie_machdep.c,v 1.8 2013/09/09 17:54:38 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cubie_machdep.c,v 1.9 2014/01/23 19:26:55 matt Exp $"); #include "opt_machdep.h" #include "opt_ddb.h" @@ -358,7 +358,12 @@ initarm(void *arg) #ifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS const bool mapallmem_p = true; - KASSERT(ram_size <= KERNEL_VM_BASE - KERNEL_BASE); + if (ram_size > KERNEL_VM_BASE - KERNEL_BASE) { + printf("%s: dropping RAM size from %luMB to %uMB\n", + __func__, (unsigned long) (ram_size >> 20), + (KERNEL_VM_BASE - KERNEL_BASE) >> 20); + ram_size = KERNEL_VM_BASE - KERNEL_BASE; + } #else const bool mapallmem_p = false; #endif Index: src/sys/arch/evbarm/cubie/cubie_start.S diff -u src/sys/arch/evbarm/cubie/cubie_start.S:1.2 src/sys/arch/evbarm/cubie/cubie_start.S:1.3 --- src/sys/arch/evbarm/cubie/cubie_start.S:1.2 Sat Sep 7 00:30:17 2013 +++ src/sys/arch/evbarm/cubie/cubie_start.S Thu Jan 23 19:26:55 2014 @@ -95,10 +95,14 @@ #include <arm/allwinner/awin_reg.h> #include <evbarm/cubie/platform.h> -RCSID("$NetBSD: cubie_start.S,v 1.2 2013/09/07 00:30:17 matt Exp $") +RCSID("$NetBSD: cubie_start.S,v 1.3 2014/01/23 19:26:55 matt Exp $") #if defined(VERBOSE_INIT_ARM) +#ifdef __ARMEB__ +#define XPUTC(n) mov r0, n << 24; bl xputc +#else #define XPUTC(n) mov r0, n; bl xputc +#endif #define COM_MULT 4 #define XPUTC_COM 1 #else @@ -117,6 +121,10 @@ RCSID("$NetBSD: cubie_start.S,v 1.2 2013 .global _C_LABEL(cubie_start) _C_LABEL(cubie_start): +#ifdef __ARMEB__ + setend be /* force big endian */ +#endif + /* Move into supervisor mode and disable IRQs/FIQs. */ cpsid if, #PSR_SVC32_MODE @@ -189,6 +197,7 @@ _C_LABEL(cubie_start): MMU_INIT(AWIN_CORE_PBASE, AWIN_CORE_PBASE, (AWIN_CORE_SIZE + L1_S_SIZE - 1) / L1_S_SIZE, L1_S_PROTO | L1_S_APv7_KRW) + /* end of table */ MMU_INIT(0, 0, 0, 0)