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)
 

Reply via email to