Skip to contentSkip to conversation

sandbox: Add architecture header files

RFC PATCH New Simon Glass 5 participants 57 messages Sep 17, 2011 – Sep 26, 2011

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/20 sandbox: Add architecture header files

---
 arch/sandbox/include/asm/arch-sandbox/clock.h |   25 ++++
 arch/sandbox/include/asm/arch-sandbox/gpio.h  |   29 +++++
 arch/sandbox/include/asm/bitops.h             |  162 +++++++++++++++++++++++++
 arch/sandbox/include/asm/byteorder.h          |   40 ++++++
 arch/sandbox/include/asm/config.h             |   26 ++++
 arch/sandbox/include/asm/global_data.h        |   68 ++++++++++
 arch/sandbox/include/asm/io.h                 |   41 ++++++
 arch/sandbox/include/asm/posix_types.h        |   85 +++++++++++++
 arch/sandbox/include/asm/ptrace.h             |   39 ++++++
 arch/sandbox/include/asm/string.h             |   52 ++++++++
 arch/sandbox/include/asm/system.h             |   36 ++++++
 arch/sandbox/include/asm/types.h              |   72 +++++++++++
 arch/sandbox/include/asm/u-boot-sandbox.h     |   59 +++++++++
 arch/sandbox/include/asm/u-boot.h             |   61 +++++++++
 arch/sandbox/include/asm/unaligned.h          |   41 ++++++
 doc/README.sandbox                            |   47 +++++++
 include/common.h                              |    3 +
 17 files changed, 886 insertions(+), 0 deletions(-)
 create mode 100644 arch/sandbox/include/asm/arch-sandbox/clock.h
 create mode 100644 arch/sandbox/include/asm/arch-sandbox/gpio.h
 create mode 100644 arch/sandbox/include/asm/bitops.h
 create mode 100644 arch/sandbox/include/asm/byteorder.h
 create mode 100644 arch/sandbox/include/asm/config.h
 create mode 100644 arch/sandbox/include/asm/global_data.h
 create mode 100644 arch/sandbox/include/asm/io.h
 create mode 100644 arch/sandbox/include/asm/posix_types.h
 create mode 100644 arch/sandbox/include/asm/ptrace.h
 create mode 100644 arch/sandbox/include/asm/string.h
 create mode 100644 arch/sandbox/include/asm/system.h
 create mode 100644 arch/sandbox/include/asm/types.h
 create mode 100644 arch/sandbox/include/asm/u-boot-sandbox.h
 create mode 100644 arch/sandbox/include/asm/u-boot.h
 create mode 100644 arch/sandbox/include/asm/unaligned.h
 create mode 100644 doc/README.sandbox
arch/sandbox/include/asm/arch-sandbox/clock.h new file +25 -0
new file mode 100644
index 0000000..c6b3ff7
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/* We don't have any peripherals at present */
+enum periph_id {
+	PERIPH_COUNT
+};
arch/sandbox/include/asm/arch-sandbox/gpio.h new file +29 -0
new file mode 100644
index 0000000..7cfdad6
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+enum {
+	GPIO_COUNT	= 255,		/* Number of GPIOs */
+};
+
+int gpio_direction_input(int gp);
+int gpio_direction_output(int gp, int value);
+int gpio_get_value(int gp);
+void gpio_set_value(int gp, int value);
arch/sandbox/include/asm/bitops.h new file +162 -0

162 lines not on this page · raw message

arch/sandbox/include/asm/byteorder.h new file +40 -0
new file mode 100644
index 0000000..ff87284
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __ASM_SANDBOX_BYTEORDER_H
+#define __ASM_SANDBOX_BYTEORDER_H
+
+
+#include <asm/types.h>
+
+#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
+#  define __BYTEORDER_HAS_U64__
+#  define __SWAB_64_THRU_32__
+#endif
+
+#ifdef CONFIG_SANDBOX_BIG_ENDIAN
+#include <linux/byteorder/big_endian.h>
+#else
+#include <linux/byteorder/little_endian.h>
+#endif
+
+#endif
arch/sandbox/include/asm/config.h new file +26 -0
new file mode 100644
index 0000000..2ef0564
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ */
+
+#ifndef _ASM_CONFIG_H_
+#define _ASM_CONFIG_H_
+
+#define CONFIG_SANDBOX_ARCH
+
+#endif
arch/sandbox/include/asm/global_data.h new file +68 -0

68 lines not on this page · raw message

arch/sandbox/include/asm/io.h new file +41 -0

41 lines not on this page · raw message

arch/sandbox/include/asm/posix_types.h new file +85 -0

85 lines not on this page · raw message

arch/sandbox/include/asm/ptrace.h new file +39 -0
new file mode 100644
index 0000000..dcb7d77
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __ASM_SANDBOX_PTRACE_H
+#define __ASM_SANDBOX_PTRACE_H
+
+#ifndef __ASSEMBLY__
+/* This is not used in the sandbox architecture, but required by U-Boot */
+struct pt_regs {
+	long dummy;
+};
+
+#ifdef __KERNEL__
+extern void show_regs(struct pt_regs *);
+
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+#endif
arch/sandbox/include/asm/string.h new file +52 -0

52 lines not on this page · raw message

arch/sandbox/include/asm/system.h new file +36 -0
new file mode 100644
index 0000000..78cdc9fa8
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __ASM_SANDBOX_SYSTEM_H
+#define __ASM_SANDBOX_SYSTEM_H
+
+/* Define this as nops for sandbox architecture */
+static inline void local_irq_save(unsigned flags __attribute__((unused)))
+{
+}
+
+#define local_irq_enable()
+#define local_irq_disable()
+#define local_save_flags(x)
+#define local_irq_restore(x)
+
+#endif
arch/sandbox/include/asm/types.h new file +72 -0

72 lines not on this page · raw message

arch/sandbox/include/asm/u-boot-sandbox.h new file +59 -0

59 lines not on this page · raw message

arch/sandbox/include/asm/u-boot.h new file +61 -0

61 lines not on this page · raw message

arch/sandbox/include/asm/unaligned.h new file +41 -0

41 lines not on this page · raw message

doc/README.sandbox new file +47 -0

47 lines not on this page · raw message

include/common.h +3 -0
index d244bd4..2a39df3 100644
@@ -302,6 +302,9 @@ int	setenv	     (const char *, const char *);
 #ifdef CONFIG_X86		/* x86 version to be fixed! */
 # include <asm/u-boot-x86.h>
 #endif /* CONFIG_X86 */
+#ifdef CONFIG_SANDBOX
+# include <asm/u-boot-sandbox.h>	/* TODO(sjg) what needs to be fixed? */
+#endif
 
 #ifdef CONFIG_AUTO_COMPLETE
 int env_complete(char *var, int maxv, char *cmdv[], int maxsz, char *buf);
Signature · 1 line
1.7.3.1
#1 lore raw

RFC PATCH 2/20 sandbox: Add architecture image support

We won't actually load an image with this architecture, but we still need to define it.

---
 common/image.c  |    5 +++--
 include/image.h |    3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)
common/image.c +3 -2
index d38ce4a..8283561 100644
@@ -1581,7 +1581,7 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag
 			goto error;
 		}
 
-		printf ("   Booting using the fdt blob at 0x%x\n", (int)fdt_blob);
+		printf("   Booting using the fdt blob at 0x%p\n", fdt_blob);
 
 	} else if (images->legacy_hdr_valid &&
 			image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
@@ -1600,7 +1600,8 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag
 		if (fdt_len) {
 
 			fdt_blob = (char *)fdt_data;
-			printf ("   Booting using the fdt at 0x%x\n", (int)fdt_blob);
+			printf("   Booting using the fdt at 0x%p\n",
+				fdt_blob);
 
 			if (fdt_check_header (fdt_blob) != 0) {
 				fdt_error ("image is not a fdt");
include/image.h +3 -0
index 352e4a0..c7fbb88 100644
@@ -106,6 +106,7 @@
 #define IH_ARCH_BLACKFIN	16	/* Blackfin	*/
 #define IH_ARCH_AVR32		17	/* AVR32	*/
 #define IH_ARCH_ST200	        18	/* STMicroelectronics ST200  */
+#define IH_ARCH_SANDBOX		19	/* Sandbox architecture (test only) */
 
 /*
  * Image Types
@@ -506,6 +507,8 @@ static inline int image_check_target_arch (const image_header_t *hdr)
 	if (!image_check_arch (hdr, IH_ARCH_SH))
 #elif defined(__sparc__)
 	if (!image_check_arch (hdr, IH_ARCH_SPARC))
+#elif defined(CONFIG_SANDBOX_ARCH)
+	if (0)
 #else
 # error Unknown CPU type
 #endif
Signature · 1 line
1.7.3.1
#2 lore raw

RFC PATCH 2/20 sandbox: Add architecture image support

Quoted 14 lines · Simon Glass

We won't actually load an image with this architecture, but we still need to define it.

---
 common/image.c  |    5 +++--
 include/image.h |    3 +++
 2 files changed, 6 insertions(+), 2 deletions(-)
common/image.c +0 -0
index d38ce4a..8283561 100644

common/image.c int boot_get_fdt (int flag, int argc, char * const · line 1584

Quoted 4 lines
common/image.c +0 -1
@@ -1581,7 +1581,7 @@ int boot_get_fdt (int flag, int argc, char * const
 argv[], bootm_headers_t *imag goto error;
 		}
 
-		printf ("   Booting using the fdt blob at 0x%x\n", 

(int)fdt_blob);

common/image.c int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag · line 1584

Quoted 1 line
common/image.c +1 -0
+		printf("   Booting using the fdt blob at 0x%p\n", fdt_blob);

Well this is a fix and the patch description doesn't match it.

Can you split it or something?

Cheers

#3 lore raw

RFC PATCH 2/20 sandbox: Add architecture image support

Quoted 18 lines · Marek Vasut
Quoted 17 lines · Simon Glass

We won't actually load an image with this architecture, but we still need to define it.

---
?common/image.c ?| ? ?5 +++--
?include/image.h | ? ?3 +++
?2 files changed, 6 insertions(+), 2 deletions(-)

common/image.c +0 -0
index d38ce4a..8283561 100644
@@ -1581,7 +1581,7 @@ int boot_get_fdt (int flag, int argc, char * const
 argv[], bootm_headers_t *imag goto error;
 ? ? ? ? ? ? ? }
 
Quoted 7 lines

common/image.c int boot_get_fdt (int flag, int argc, char * const · line 1584

Quoted 1 line
common/image.c +0 -1
- ? ? ? ? ? ? printf (" ? Booting using the fdt blob at 0x%x\n",

(int)fdt_blob);

common/image.c int boot_get_fdt (int flag, int argc, char * const · line 1584

Quoted 1 line
common/image.c +1 -0
+ ? ? ? ? ? ? printf(" ? Booting using the fdt blob at 0x%p\n", fdt_blob);

Well this is a fix and the patch description doesn't match it.

Can you split it or something?

Yes ok, there are a couple like this. When this becomes real patch I will separate them out. This one should be split so that image.c and image.h are separate patches.

Regards,
Simon

Quoted 3 lines

Cheers

#4 lore raw

RFC PATCH 3/20 sandbox: Add compiler defines to support a 64-bit x86_64 platform

In reply to Simon Glass

Temporary fix for 64-bit building.

---
 include/compiler.h |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
include/compiler.h +11 -1
index 4e047c7..78f8f0a 100644
@@ -111,11 +111,21 @@ typedef unsigned int uint;
 #include <linux/types.h>
 #include <asm/byteorder.h>
 
+#if __SIZEOF_LONG__ == 8
+# define __WORDSIZE	64
+#elif __SIZEOF_LONG__ == 4
+# define __WORDSIZE	32
+#else
+#error "__SIZEOF_LONG__ has unexpected value"
+#endif
+
 /* Types for `void *' pointers. */
 #if __WORDSIZE == 64
 typedef unsigned long int       uintptr_t;
-#else
+#elif __WORDSIZE == 32
 typedef unsigned int            uintptr_t;
+#else
+#error "__WORDSIZE has unexpected value"
 #endif
 
 #endif
Signature · 1 line
1.7.3.1
#5 lore raw

RFC PATCH 3/20 sandbox: Add compiler defines to support a 64-bit x86_64 platform

Quoted 1 line · On Saturday, September 17, 2011 12:48:42 Simon Glass wrote:

Temporary fix for 64-bit building.

why is it temporary ? why not fix it permanently ?

include/compiler.h typedef unsigned int uint; · line 120

Quoted 13 lines
include/compiler.h +7 -0
 
 #include <linux/types.h>
 #include <asm/byteorder.h>
 
+#if __SIZEOF_LONG__ == 8
+# define __WORDSIZE	64
+#elif __SIZEOF_LONG__ == 4
+# define __WORDSIZE	32
+#else
+#error "__SIZEOF_LONG__ has unexpected value"
+#endif

change "#else" to "#elif !defined __WORDSIZE"
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/e1980e38/attachment.pgp

#6 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

In reply to Simon Glass

This is an initial implementation with all functions defined but not working.

---
 arch/sandbox/config.mk              |   21 ++++++++++++
 arch/sandbox/cpu/sandbox/Makefile   |   47 +++++++++++++++++++++++++++
 arch/sandbox/cpu/sandbox/cpu.c      |   59 +++++++++++++++++++++++++++++++++++
 arch/sandbox/cpu/sandbox/u-boot.lds |   34 ++++++++++++++++++++
 4 files changed, 161 insertions(+), 0 deletions(-)
 create mode 100644 arch/sandbox/config.mk
 create mode 100644 arch/sandbox/cpu/sandbox/Makefile
 create mode 100644 arch/sandbox/cpu/sandbox/cpu.c
 create mode 100644 arch/sandbox/cpu/sandbox/u-boot.lds
arch/sandbox/config.mk new file +21 -0
new file mode 100644
index 0000000..d9956ff
@@ -0,0 +1,21 @@
+# Copyright (c) 2011 The Chromium OS Authors.
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+
+PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__
+LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds
arch/sandbox/cpu/sandbox/Makefile new file +47 -0

47 lines not on this page · raw message

arch/sandbox/cpu/sandbox/cpu.c new file +59 -0

59 lines not on this page · raw message

arch/sandbox/cpu/sandbox/u-boot.lds new file +34 -0
new file mode 100644
index 0000000..2d2e50f
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+SECTIONS
+{
+  __u_boot_cmd_start = .;
+  .u_boot_cmd : { *(.u_boot_cmd) }
+  __u_boot_cmd_end = .;
+  __bss_start = .;
+
+}
+
+INSERT BEFORE .data;
Signature · 1 line
1.7.3.1
#7 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

arch/sandbox/config.mk

Quoted 4 lines · On Saturday, September 17, 2011 12:48:43 Simon Glass wrote:
arch/sandbox/config.mk new file +1 -0
 
+LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds

the top level Makefile should take care of this for you so you can just delete this line

arch/sandbox/cpu/sandbox/cpu.c line 29

Quoted 7 lines
arch/sandbox/cpu/sandbox/cpu.c new file +4 -0
 
+int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+	return -1;
+}

do_reset() is not supposed to return
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/ada43cd9/attachment.pgp

#8 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

Hi Mike,

Quoted 12 lines · Mike Frysinger

arch/sandbox/config.mk

Quoted 4 lines · On Saturday, September 17, 2011 12:48:43 Simon Glass wrote:
arch/sandbox/config.mk new file +1 -0
 
+LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds

the top level Makefile should take care of this for you so you can just delete this line

Quoted 3 lines
arch/sandbox/cpu/sandbox/cpu.c new file +0 -0
Quoted 6 lines

arch/sandbox/cpu/sandbox/cpu.c line 29

Quoted 4 lines
arch/sandbox/cpu/sandbox/cpu.c new file +4 -0
+int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+ ? ? return -1;
+}

do_reset() is not supposed to return

I have adjusted the function meaning (which luckily for me was not defined) so that it can return -1 on failure. This makes my code correct :-)

I think it is reasonable to provide a reset function which might not be able to do its job. That is the current state of sandbox.

Regards,
Simon

Quoted 2 lines

-mike

#9 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

Dear Simon Glass,

Quoted 9 lines · In message <CAPnjgZ1FfRPbU9gtxp9qVM24Ln2R-bWU1OjmrL3E+hijjLwiNQ@mail.gmail.com>…
Quoted 2 lines

do_reset() is not supposed to return

I have adjusted the function meaning (which luckily for me was not defined) so that it can return -1 on failure. This makes my code correct :-)

I think it is reasonable to provide a reset function which might not be able to do its job. That is the current state of sandbox.

No, I don't want to change the current definition of reset().

And "not able to do the job" is something different than "unimplemented".

Why cannot we do a real reset here? Re-exec'in the running binary or performing a longjmp() to the start might be ideas how to implement this.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"The value of marriage is not that adults produce children, but  that
children produce adults."                            - Peter De Vries
#10 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

Hi Wolfgang,

Quoted 6 lines · Wolfgang Denk

Dear Simon Glass,

Quoted 3 lines · In message <CAPnjgZ1FfRPbU9gtxp9qVM24Ln2R-bWU1OjmrL3E+hijjLwiNQ@mail.gmail.com>…
Quoted 2 lines

do_reset() is not supposed to return

Quoted 8 lines
Quoted 6 lines

I have adjusted the function meaning (which luckily for me was not defined) so that it can return -1 on failure. This makes my code correct :-)

I think it is reasonable to provide a reset function which might not be able to do its job. That is the current state of sandbox.

No, I don't want to change the current definition of reset().

OK.

Quoted 8 lines

And "not able to do the job" is something different than "unimplemented".

Why cannot we do a real reset here? Re-exec'in the running binary or performing a longjmp() to the start might be ideas how to implement this.

While this could be done I believe that it might be possible / desirable to exit out of the main loop, rather than longjmp or re-exec. I have not implemented it because I have not got to that bit yet and don't want to put time into a solution I will throw away.

I'm happy to just put:

while (1) ;

in the reset code if you like?

Regards,
Simon

Quoted 12 lines

Best regards,

Wolfgang Denk

--
DENX Software Engineering GmbH, ? ? MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de "The value of marriage is not that adults produce children, but ?that children produce adults." ? ? ? ? ? ? ? ? ? ? ? ? ? ?- Peter De Vries

#11 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

Quoted 27 lines · On Sunday, September 25, 2011 16:18:32 Simon Glass wrote:
Quoted 11 lines · Wolfgang Denk
Quoted 8 lines · Simon Glass
Quoted 1 line

do_reset() is not supposed to return

I have adjusted the function meaning (which luckily for me was not defined) so that it can return -1 on failure. This makes my code correct :-)

I think it is reasonable to provide a reset function which might not be able to do its job. That is the current state of sandbox.

No, I don't want to change the current definition of reset().

OK.

Quoted 6 lines

And "not able to do the job" is something different than "unimplemented".

Why cannot we do a real reset here? Re-exec'in the running binary or performing a longjmp() to the start might be ideas how to implement this.

While this could be done I believe that it might be possible / desirable to exit out of the main loop, rather than longjmp or re-exec. I have not implemented it because I have not got to that bit yet and don't want to put time into a solution I will throw away.

Quoted 5 lines

I'm happy to just put:

while (1) ;

in the reset code if you like?

i would expect "reset" in the sandbox to "exit(1)". how else would you exit ? -mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110926/018b4d6e/attachment.pgp

#12 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

Hi Mike,

Quoted 28 lines · Mike Frysinger
Quoted 27 lines · On Sunday, September 25, 2011 16:18:32 Simon Glass wrote:
Quoted 11 lines · Wolfgang Denk
Quoted 8 lines · Simon Glass
Quoted 1 line

do_reset() is not supposed to return

I have adjusted the function meaning (which luckily for me was not defined) so that it can return -1 on failure. This makes my code correct :-)

I think it is reasonable to provide a reset function which might not be able to do its job. That is the current state of sandbox.

No, I don't want to change the current definition of reset().

OK.

Quoted 6 lines

And "not able to do the job" is something different than "unimplemented".

Why cannot we do a real reset here? Re-exec'in the running binary or performing a longjmp() to the start might be ideas how to implement this.

While this could be done I believe that it might be possible / desirable to exit out of the main loop, rather than longjmp or re-exec. I have not implemented it because I have not got to that bit yet and don't want to put time into a solution I will throw away.

Quoted 9 lines
Quoted 5 lines

I'm happy to just put:

while (1) ;

in the reset code if you like?

i would expect "reset" in the sandbox to "exit(1)". ?how else would you exit ? -mike

Right, I will do that then for now.

Regards,
Simon

#13 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

Quoted 35 lines · Simon Glass

Hi Mike,

Quoted 32 lines · Mike Frysinger
Quoted 31 lines · On Sunday, September 25, 2011 16:18:32 Simon Glass wrote:
Quoted 11 lines · Wolfgang Denk
Quoted 8 lines · Simon Glass
Quoted 1 line

do_reset() is not supposed to return

I have adjusted the function meaning (which luckily for me was not defined) so that it can return -1 on failure. This makes my code correct :-)

I think it is reasonable to provide a reset function which might not be able to do its job. That is the current state of sandbox.

No, I don't want to change the current definition of reset().

OK.

Quoted 6 lines

And "not able to do the job" is something different than "unimplemented".

Why cannot we do a real reset here? Re-exec'in the running binary or performing a longjmp() to the start might be ideas how to implement this.

While this could be done I believe that it might be possible / desirable to exit out of the main loop, rather than longjmp or re-exec. I have not implemented it because I have not got to that bit yet and don't want to put time into a solution I will throw away.

I'm happy to just put:

while (1) ;

Quoted 7 lines
Quoted 5 lines
Quoted 1 line

in the reset code if you like?

i would expect "reset" in the sandbox to "exit(1)". ?how else would you exit ? -mike

Right, I will do that then for now.

Perhaps even nicer would be to define exit codes for the couple of cases where we expect to "leave" U-Boot. So reset, and jump to linux kernel, and perhaps power off. So a script calling the sandbox u-boot can check the reason and possibly rerun it in the reset case.

Thanks,
Anton

Quoted 7 lines

Regards,
Simon
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

#14 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

Hi Anton,

Quoted 42 lines · Anton Staaf
Quoted 41 lines · Simon Glass

Hi Mike,

Quoted 37 lines · Mike Frysinger
Quoted 27 lines · On Sunday, September 25, 2011 16:18:32 Simon Glass wrote:
Quoted 11 lines · Wolfgang Denk
Quoted 8 lines · Simon Glass
Quoted 1 line

do_reset() is not supposed to return

I have adjusted the function meaning (which luckily for me was not defined) so that it can return -1 on failure. This makes my code correct :-)

I think it is reasonable to provide a reset function which might not be able to do its job. That is the current state of sandbox.

No, I don't want to change the current definition of reset().

OK.

Quoted 6 lines

And "not able to do the job" is something different than "unimplemented".

Why cannot we do a real reset here? Re-exec'in the running binary or performing a longjmp() to the start might be ideas how to implement this.

While this could be done I believe that it might be possible / desirable to exit out of the main loop, rather than longjmp or re-exec. I have not implemented it because I have not got to that bit yet and don't want to put time into a solution I will throw away.

Quoted 5 lines

I'm happy to just put:

while (1) ;

in the reset code if you like?

i would expect "reset" in the sandbox to "exit(1)". ?how else would you exit ? -mike

Quoted 6 lines
Quoted 1 line

Right, I will do that then for now.

Perhaps even nicer would be to define exit codes for the couple of cases where we expect to "leave" U-Boot. ?So reset, and jump to linux kernel, and perhaps power off. ?So a script calling the sandbox u-boot can check the reason and possibly rerun it in the reset case.

Given the comments on this thread I will go with exit(EXIT_SUCCESS) for now. But of course we will have to address this in test cases later.

Regards,
Simon

Quoted 12 lines

Thanks,
? ?Anton

Quoted 7 lines

Regards,
Simon
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

#15 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

In reply to Mike Frysinger

Dear Mike Frysinger,

Quoted 2 lines · In message <[email protected]> you wrote:

i would expect "reset" in the sandbox to "exit(1)". how else would you exit ?

"reset" should then use "exit(EXIT_SUCCESS)" as thisis a normal termination of the program, not an error condition.

Best regards,

Wolfgang Denk

Signature · 6 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A Vulcan can  no  sooner  be  disloyal  than  he  can  exist  without
breathing.
	-- Kirk, "The Menagerie", stardate 3012.4
#16 lore raw

RFC PATCH 4/20 sandbox: Add cpu files

Quoted 6 lines · On Monday, September 26, 2011 14:12:21 Wolfgang Denk wrote:
Quoted 2 lines · Mike Frysinger

i would expect "reset" in the sandbox to "exit(1)". how else would you exit ?

"reset" should then use "exit(EXIT_SUCCESS)" as thisis a normal termination of the program, not an error condition.

sure. my point was to use the C library's exit(), not the value.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110926/89c124ce/attachment.pgp

#17 lore raw

RFC PATCH 5/20 sandbox: Add architecture lib files

In reply to Simon Glass

These files are taken from the ARM board implementation and then reduced to remove unneeded cr!uft.

Ideally we would work towards unifying arch/xxx/lib files, particularly board.c.

---
 arch/sandbox/lib/Makefile     |   62 +++++++++
 arch/sandbox/lib/board.c      |  294 +++++++++++++++++++++++++++++++++++++++++
 arch/sandbox/lib/interrupts.c |   39 ++++++
 3 files changed, 395 insertions(+), 0 deletions(-)
 create mode 100644 arch/sandbox/lib/Makefile
 create mode 100644 arch/sandbox/lib/board.c
 create mode 100644 arch/sandbox/lib/interrupts.c
arch/sandbox/lib/Makefile new file +62 -0
new file mode 100644
index 0000000..a724406
@@ -0,0 +1,62 @@
+#
+# Copyright (c) 2011 The Chromium OS Authors.
+#
+# (C) Copyright 2002-2006
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= $(obj)lib$(ARCH).o
+LIBGCC	= $(obj)libgcc.o
+
+COBJS-y	+= board.o
+COBJS-y	+= interrupts.o
+
+SRCS	:= $(COBJS-y:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS-y))
+LGOBJS	:= $(addprefix $(obj),$(GLSOBJS)) \
+	   $(addprefix $(obj),$(GLCOBJS))
+
+# Always build libsandbox.o
+TARGETS	:= $(LIB)
+
+# Build private libgcc only when asked for
+ifdef USE_PRIVATE_LIBGCC
+TARGETS	+= $(LIBGCC)
+endif
+
+all:	$(TARGETS)
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(call cmd_link_o_target, $(OBJS))
+
+$(LIBGCC): $(obj).depend $(LGOBJS)
+	$(call cmd_link_o_target, $(LGOBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
arch/sandbox/lib/board.c new file +294 -0

294 lines not on this page · raw message

arch/sandbox/lib/interrupts.c new file +39 -0
new file mode 100644
index 0000000..d350108
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+
+int interrupt_init(void)
+{
+	return 0;
+}
+
+void enable_interrupts(void)
+{
+	return;
+}
+int disable_interrupts(void)
+{
+	return 0;
+}
Signature · 1 line
1.7.3.1
#18 lore raw

RFC PATCH 5/20 sandbox: Add architecture lib files

Quoted 2 lines · On Saturday, September 17, 2011 12:48:44 Simon Glass wrote:

These files are taken from the ARM board implementation and then reduced to remove unneeded cr!uft.

"cr!uft" -> "cruft"

Quoted 5 lines
arch/sandbox/lib/Makefile new file +1 -0
 
+LIBGCC	= $(obj)libgcc.o
 

arch/sandbox/lib/Makefile line 53

Quoted 10 lines
arch/sandbox/lib/Makefile new file +8 -0
+LGOBJS	:= $(addprefix $(obj),$(GLSOBJS)) \
+	   $(addprefix $(obj),$(GLCOBJS))
 
+# Build private libgcc only when asked for
+ifdef USE_PRIVATE_LIBGCC
+TARGETS	+= $(LIBGCC)
+endif
 
+$(LIBGCC): $(obj).depend $(LGOBJS)
+	$(call cmd_link_o_target, $(LGOBJS))

i think this is arm cruft that should get scrubbed here

arch/sandbox/lib/board.c line 55

Quoted 9 lines
arch/sandbox/lib/board.c new file +6 -0
 
+#ifndef CONFIG_IDENT_STRING
+#define CONFIG_IDENT_STRING ""
+#endif
+
+const char version_string[] =
+	U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ")"CONFIG_IDENT_STRING;

common code takes care of this for you already, so just delete it

arch/sandbox/lib/board.c line 68

Quoted 3 lines
arch/sandbox/lib/board.c new file +3 -0
+static int display_banner(void)
+{
+	printf("\n\n%s\n\n", version_string);

call display_options() instead of writing version_string yourself

Quoted 1 line

+static int display_dram_config(void)

is any of this dram logic needed ? looks like an ARM wart that should get removed from all the sandbox code.

arch/sandbox/lib/board.c line 213

Quoted 3 lines
arch/sandbox/lib/board.c new file +3 -0
+#if !defined(CONFIG_SYS_NO_FLASH)
+static char *failed = "*** failed ***\n";
+#endif

i dont see this getting used anywhere, so punt it
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/4c636a31/attachment.pgp

#19 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

In reply to Simon Glass

Since the sandbox architecture doesn't do relocation, we prefer to call board_init_r() explicitly when board_init_f() returns. Similarly we prefer to call main_loop() when board_init_r returns.

---
 include/common.h |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)
include/common.h +7 -2
index 2a39df3..7ae9bcf 100644
@@ -262,8 +262,13 @@ void	init_cmd_timeout(void);
 void	reset_cmd_timeout(void);
 
 /* arch/$(ARCH)/lib/board.c */
-void	board_init_f  (ulong) __attribute__ ((noreturn));
-void	board_init_r  (gd_t *, ulong) __attribute__ ((noreturn));
+#ifdef CONFIG_SANDBOX
+void	board_init_f(ulong);
+void	board_init_r(gd_t *, ulong);
+#else
+void	board_init_f(ulong) __attribute__ ((noreturn));
+void	board_init_r(gd_t *, ulong) __attribute__ ((noreturn));
+#endif
 int	checkboard    (void);
 int	checkflash    (void);
 int	checkdram     (void);
Signature · 1 line
1.7.3.1
#20 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

Quoted 3 lines · On Saturday, September 17, 2011 12:48:45 Simon Glass wrote:

Since the sandbox architecture doesn't do relocation, we prefer to call board_init_r() explicitly when board_init_f() returns. Similarly we prefer to call main_loop() when board_init_r returns.

NAK; i dont see how sandbox is special. just do what i do in Blackfin's board.c:
board_init_f calls board_init_r
board_init_r does while (1) main_loop()
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/b3972e85/attachment.pgp

#21 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

Hi Mike,

Quoted 9 lines · Mike Frysinger
Quoted 3 lines · On Saturday, September 17, 2011 12:48:45 Simon Glass wrote:

Since the sandbox architecture doesn't do relocation, we prefer to call board_init_r() explicitly when board_init_f() returns. Similarly we prefer to call main_loop() when board_init_r returns.

NAK; i dont see how sandbox is special. ?just do what i do in Blackfin's board.c:
? ? ? ?board_init_f calls board_init_r
? ? ? ?board_init_r does while (1) main_loop()

I have done as you say for now, but this isn't great. It means that the only way back to the top level (say to run another test) is to use setjmp/longjmp. But I will deal with this issue when it actually comes up.

Regards,
Simon

Quoted 2 lines

-mike

#22 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

Dear Simon Glass,

Quoted 2 lines · In message <CAPnjgZ1DfWHum=WuzRh75eU7raf_QbCWorc6YpkhhuBzOP1B0Q@mail.gmail.com>…

On Sat, Sep 17, 2011 at 5:05 PM, Mike Frysinger <[email protected]> wrote:

...

Quoted 1 line
Quoted 1 line

NAK; i dont see how sandbox is special. just do what i do in Blackfin's

...

Quoted 4 lines

I have done as you say for now, but this isn't great. It means that the only way back to the top level (say to run another test) is to use setjmp/longjmp. But I will deal with this issue when it actually comes up.

I think the argument that the sandbox should be implemented and behave like the real implementations is a very important one. Please let's stick to that.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A mouse is an elephant built by the Japanese.
#23 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

Hi Wolfgang,

Quoted 8 lines · Wolfgang Denk

Dear Simon Glass,

Quoted 2 lines · In message <CAPnjgZ1DfWHum=WuzRh75eU7raf_QbCWorc6YpkhhuBzOP1B0Q@mail.gmail.com>…

On Sat, Sep 17, 2011 at 5:05 PM, Mike Frysinger <[email protected]> wrote:

...

Quoted 1 line
Quoted 1 line

NAK; i dont see how sandbox is special. ?just do what i do in Blackfin's

...

Quoted 8 lines
Quoted 4 lines

I have done as you say for now, but this isn't great. It means that the only way back to the top level (say to run another test) is to use setjmp/longjmp. But I will deal with this issue when it actually comes up.

I think the argument that the sandbox should be implemented and behave like the real implementations is a very important one. ?Please let's stick to that.

OK, with RFV patch set v2 I have made the code match existing architectures in this area.

Regards,
Simon

Quoted 11 lines

Best regards,

Wolfgang Denk

--
DENX Software Engineering GmbH, ? ? MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de A mouse is an elephant built by the Japanese.

#24 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

In reply to Simon Glass
Quoted 11 lines · On Friday, September 23, 2011 11:55:11 Simon Glass wrote:
Quoted 9 lines · Mike Frysinger
Quoted 3 lines · On Saturday, September 17, 2011 12:48:45 Simon Glass wrote:

Since the sandbox architecture doesn't do relocation, we prefer to call board_init_r() explicitly when board_init_f() returns. Similarly we prefer to call main_loop() when board_init_r returns.

NAK; i dont see how sandbox is special. just do what i do in Blackfin's board.c:
board_init_f calls board_init_r
board_init_r does while (1) main_loop()

Quoted 4 lines

I have done as you say for now, but this isn't great. It means that the only way back to the top level (say to run another test) is to use setjmp/longjmp. But I will deal with this issue when it actually comes up.

i dont understand what you mean. the main loop allows you to process commands forever and thus test as many commands as you want.

if you're testing something before the main_loop, then i think it is correct that you'd "boot" from scratch, get to the main_loop (and thus pass your test), and then call "reset" to exit. if you want to test something else before main_loop, start all over from scratch.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110926/b7996b97/attachment.pgp

#25 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

Hi Mike,

Quoted 17 lines · Mike Frysinger
Quoted 11 lines · On Friday, September 23, 2011 11:55:11 Simon Glass wrote:
Quoted 9 lines · Mike Frysinger
Quoted 3 lines · On Saturday, September 17, 2011 12:48:45 Simon Glass wrote:

Since the sandbox architecture doesn't do relocation, we prefer to call board_init_r() explicitly when board_init_f() returns. Similarly we prefer to call main_loop() when board_init_r returns.

NAK; i dont see how sandbox is special. ?just do what i do in Blackfin's board.c:
? ? ? ?board_init_f calls board_init_r
? ? ? ?board_init_r does while (1) main_loop()

Quoted 4 lines

I have done as you say for now, but this isn't great. It means that the only way back to the top level (say to run another test) is to use setjmp/longjmp. But I will deal with this issue when it actually comes up.

Quoted 9 lines

i dont understand what you mean. ?the main loop allows you to process commands forever and thus test as many commands as you want.

if you're testing something before the main_loop, then i think it is correct that you'd "boot" from scratch, get to the main_loop (and thus pass your test), and then call "reset" to exit. ?if you want to test something else before main_loop, start all over from scratch.
-mike

In short: at this stage I really don't mind what this particular patch looks like - it will become clear later.

Long version: I think there might be a basic confusion here as to how this test idea is supposed to work. I think I mentioned at some point that the question of the test controller will be resolved later.

The test controller is the thing that kicks off tests. Many of these tests will be for a complete run of U-Boot from start to bootm/reset/whatever.

If the test controller is separate from U-boot and runs U-Boot once for each test then yes: reset and bootm can exit, the main loop never needs to quit, etc.

If the test controller is linked with U-Boot, and is basically just a high-level control function for the rest of the code, then we want reset and bootm to exit back to this test controller code.

I haven't written any tests yes so it isn't yet clear what the trade-offs are, but I suspect that linking at least part of the test controller with U-Boot is going to be attractive so that it can spread its tentacles and see what is going on during the test run.

Regards,
Simon

#26 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

Quoted 45 lines · Simon Glass

Hi Mike,

Quoted 17 lines · Mike Frysinger
Quoted 11 lines · On Friday, September 23, 2011 11:55:11 Simon Glass wrote:
Quoted 9 lines · Mike Frysinger
Quoted 3 lines · On Saturday, September 17, 2011 12:48:45 Simon Glass wrote:

Since the sandbox architecture doesn't do relocation, we prefer to call board_init_r() explicitly when board_init_f() returns. Similarly we prefer to call main_loop() when board_init_r returns.

NAK; i dont see how sandbox is special. ?just do what i do in Blackfin's board.c:
? ? ? ?board_init_f calls board_init_r
? ? ? ?board_init_r does while (1) main_loop()

Quoted 4 lines

I have done as you say for now, but this isn't great. It means that the only way back to the top level (say to run another test) is to use setjmp/longjmp. But I will deal with this issue when it actually comes up.

Quoted 9 lines

i dont understand what you mean. ?the main loop allows you to process commands forever and thus test as many commands as you want.

if you're testing something before the main_loop, then i think it is correct that you'd "boot" from scratch, get to the main_loop (and thus pass your test), and then call "reset" to exit. ?if you want to test something else before main_loop, start all over from scratch.
-mike

In short: at this stage I really don't mind what this particular patch looks like - it will become clear later.

Long version: I think there might be a basic confusion here as to how this test idea is supposed to work. I think I mentioned at some point that the question of the test controller will be resolved later.

The test controller is the thing that kicks off tests. Many of these tests will be for a complete run of U-Boot from start to bootm/reset/whatever.

If the test controller is separate from U-boot and runs U-Boot once for each test then yes: reset and bootm can exit, the main loop never needs to quit, etc.

Quoted 8 lines

If the test controller is linked with U-Boot, and is basically just a high-level control function for the rest of the code, then we want reset and bootm to exit back to this test controller code.

I haven't written any tests yes so it isn't yet clear what the trade-offs are, but I suspect that linking at least part of the test controller with U-Boot is going to be attractive so that it can spread its tentacles and see what is going on during the test run.

I would actually vote for the exact opposite. The test controller should be able to get this information from the mocks of the devices that are used and the input and output it provides and consumes from stdio.

I think it would be better to factor this into two problems. Plus, I'm always a fan of smaller single purpose tools that are composed at the process boundary.

Thanks,
Anton

Quoted 7 lines

Regards,
Simon
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

#27 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

Hi Anton,

Quoted 55 lines · Anton Staaf
Quoted 45 lines · Simon Glass

Hi Mike,

Quoted 17 lines · Mike Frysinger
Quoted 11 lines · On Friday, September 23, 2011 11:55:11 Simon Glass wrote:
Quoted 9 lines · Mike Frysinger
Quoted 3 lines · On Saturday, September 17, 2011 12:48:45 Simon Glass wrote:

Since the sandbox architecture doesn't do relocation, we prefer to call board_init_r() explicitly when board_init_f() returns. Similarly we prefer to call main_loop() when board_init_r returns.

NAK; i dont see how sandbox is special. ?just do what i do in Blackfin's board.c:
? ? ? ?board_init_f calls board_init_r
? ? ? ?board_init_r does while (1) main_loop()

Quoted 4 lines

I have done as you say for now, but this isn't great. It means that the only way back to the top level (say to run another test) is to use setjmp/longjmp. But I will deal with this issue when it actually comes up.

Quoted 9 lines

i dont understand what you mean. ?the main loop allows you to process commands forever and thus test as many commands as you want.

if you're testing something before the main_loop, then i think it is correct that you'd "boot" from scratch, get to the main_loop (and thus pass your test), and then call "reset" to exit. ?if you want to test something else before main_loop, start all over from scratch.
-mike

In short: at this stage I really don't mind what this particular patch looks like - it will become clear later.

Long version: I think there might be a basic confusion here as to how this test idea is supposed to work. I think I mentioned at some point that the question of the test controller will be resolved later.

The test controller is the thing that kicks off tests. Many of these tests will be for a complete run of U-Boot from start to bootm/reset/whatever.

If the test controller is separate from U-boot and runs U-Boot once for each test then yes: reset and bootm can exit, the main loop never needs to quit, etc.

Quoted 8 lines

If the test controller is linked with U-Boot, and is basically just a high-level control function for the rest of the code, then we want reset and bootm to exit back to this test controller code.

I haven't written any tests yes so it isn't yet clear what the trade-offs are, but I suspect that linking at least part of the test controller with U-Boot is going to be attractive so that it can spread its tentacles and see what is going on during the test run.

Quoted 6 lines

I would actually vote for the exact opposite. ?The test controller should be able to get this information from the mocks of the devices that are used and the input and output it provides and consumes from stdio.

I think it would be better to factor this into two problems. ?Plus, I'm always a fan of smaller single purpose tools that are composed at the process boundary.

Yes it seems that we need some sort of config input and results output 'file' which device mocks can consume and produce. For the runtime I am thinking of some device state which is specific to testing. For example, a SPI flash driver might be able to emulate failure to erase a block. This feature would be enabled by config, and perhaps the results output would include the pages read/written, etc.

But I do want to keep this simple...

Regards,
Simon

Quoted 12 lines

Thanks,
? ?Anton

Quoted 7 lines

Regards,
Simon
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

#28 lore raw

RFC PATCH 6/20 sandbox: Allow board_init_f() and board_init_r() to return

Quoted 65 lines · Simon Glass

Hi Anton,

Quoted 55 lines · Anton Staaf
Quoted 45 lines · Simon Glass

Hi Mike,

Quoted 17 lines · Mike Frysinger
Quoted 11 lines · On Friday, September 23, 2011 11:55:11 Simon Glass wrote:
Quoted 9 lines · Mike Frysinger
Quoted 3 lines · On Saturday, September 17, 2011 12:48:45 Simon Glass wrote:

Since the sandbox architecture doesn't do relocation, we prefer to call board_init_r() explicitly when board_init_f() returns. Similarly we prefer to call main_loop() when board_init_r returns.

NAK; i dont see how sandbox is special. ?just do what i do in Blackfin's board.c:
? ? ? ?board_init_f calls board_init_r
? ? ? ?board_init_r does while (1) main_loop()

Quoted 4 lines

I have done as you say for now, but this isn't great. It means that the only way back to the top level (say to run another test) is to use setjmp/longjmp. But I will deal with this issue when it actually comes up.

Quoted 9 lines

i dont understand what you mean. ?the main loop allows you to process commands forever and thus test as many commands as you want.

if you're testing something before the main_loop, then i think it is correct that you'd "boot" from scratch, get to the main_loop (and thus pass your test), and then call "reset" to exit. ?if you want to test something else before main_loop, start all over from scratch.
-mike

In short: at this stage I really don't mind what this particular patch looks like - it will become clear later.

Long version: I think there might be a basic confusion here as to how this test idea is supposed to work. I think I mentioned at some point that the question of the test controller will be resolved later.

The test controller is the thing that kicks off tests. Many of these tests will be for a complete run of U-Boot from start to bootm/reset/whatever.

If the test controller is separate from U-boot and runs U-Boot once for each test then yes: reset and bootm can exit, the main loop never needs to quit, etc.

Quoted 8 lines

If the test controller is linked with U-Boot, and is basically just a high-level control function for the rest of the code, then we want reset and bootm to exit back to this test controller code.

I haven't written any tests yes so it isn't yet clear what the trade-offs are, but I suspect that linking at least part of the test controller with U-Boot is going to be attractive so that it can spread its tentacles and see what is going on during the test run.

Quoted 6 lines

I would actually vote for the exact opposite. ?The test controller should be able to get this information from the mocks of the devices that are used and the input and output it provides and consumes from stdio.

I think it would be better to factor this into two problems. ?Plus, I'm always a fan of smaller single purpose tools that are composed at the process boundary.

Quoted 8 lines

Yes it seems that we need some sort of config input and results output 'file' which device mocks can consume and produce. For the runtime I am thinking of some device state which is specific to testing. For example, a SPI flash driver might be able to emulate failure to erase a block. This feature would be enabled by config, and perhaps the results output would include the pages read/written, etc.

But I do want to keep this simple...

Absolutely. These sorts of details can be worked out later, and match what I was thinking. I just wanted to assert that I didn't think we were shooting ourselves in the foot by exiting with a return code.

Thanks,
Anton

Quoted 16 lines

Regards,
Simon

Quoted 12 lines

Thanks,
? ?Anton

Quoted 7 lines

Regards,
Simon
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

#29 lore raw

RFC PATCH 7/20 sandbox: Add sandbox board

In reply to Simon Glass

This adds basic files for the sandbox board. The lds file is very simple since we can rely mostly on the linker defaults.

---
 board/sandbox/sandbox/Makefile  |   50 ++++++++++++++++++++++++++++++++++++
 board/sandbox/sandbox/sandbox.c |   54 +++++++++++++++++++++++++++++++++++++++
 boards.cfg                      |    1 +
 3 files changed, 105 insertions(+), 0 deletions(-)
 create mode 100644 board/sandbox/sandbox/Makefile
 create mode 100644 board/sandbox/sandbox/sandbox.c
board/sandbox/sandbox/Makefile new file +50 -0
new file mode 100644
index 0000000..ce1c01c
@@ -0,0 +1,50 @@
+#
+# Copyright (c) 2011 The Chromium OS Authors.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundatio; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+$(shell mkdir -p $(obj)../common)
+
+LIB	= $(obj)lib$(BOARD).o
+
+COBJS	:= $(BOARD).o
+
+SRCS	:= $(COBJS:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS))
+
+$(LIB):	$(obj).depend $(OBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS)
+
+clean:
+	rm -f $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
board/sandbox/sandbox/sandbox.c new file +54 -0

54 lines not on this page · raw message

boards.cfg +1 -0
index 8a5bfc1..2af8473 100644
@@ -259,6 +259,7 @@ tcm-bf518                    blackfin    blackfin
 tcm-bf537                    blackfin    blackfin
 eNET                         x86         x86        eNET                -              sc520       eNET:SYS_TEXT_BASE=0x38040000
 eNET_SRAM                    x86         x86        eNET                -              sc520       eNET:SYS_TEXT_BASE=0x19000000
+sandbox                      sandbox     sandbox     sandbox             sandbox        -
 idmr                         m68k        mcf52x2
 TASREG                       m68k        mcf52x2     tasreg              esd
 M5208EVBE                    m68k        mcf52x2     m5208evbe           freescale
Signature · 1 line
1.7.3.1
#30 lore raw

RFC PATCH 7/20 sandbox: Add sandbox board

board/sandbox/sandbox/Makefile line 41

Quoted 8 lines · On Saturday, September 17, 2011 12:48:46 Simon Glass wrote:
board/sandbox/sandbox/Makefile new file +5 -0
 
+clean:
+	rm -f $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak $(obj).depend

these dont get used, so punt them
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/928f50aa/attachment.pgp

#31 lore raw

RFC PATCH 8/20 sandbox: Add board info for architecture

In reply to Simon Glass

This is required for the bdinfo command to work.

---
 common/cmd_bdinfo.c |   34 ++++++++++++++++++++++++++++++----
 1 files changed, 30 insertions(+), 4 deletions(-)
common/cmd_bdinfo.c +30 -4
index 6051120..0faca6f 100644
@@ -31,11 +31,14 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static void print_num(const char *, ulong);
 
-#if !(defined(CONFIG_ARM) || defined(CONFIG_M68K)) || defined(CONFIG_CMD_NET)
+#if !(defined(CONFIG_ARM) || defined(CONFIG_M68K) || defined(CONFIG_SANDBOX))
+	|| defined(CONFIG_CMD_NET)
+#define HAVE_PRINT_ETH
 static void print_eth(int idx);
 #endif
 
-#if (!defined(CONFIG_ARM) && !defined(CONFIG_X86))
+#if (!defined(CONFIG_ARM) && !defined(CONFIG_X86) && !defined(CONFIG_SANDBOX))
+#define HAVE_PRINT_LNUM
 static void print_lnum(const char *, u64);
 #endif
 
@@ -413,6 +416,29 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	return 0;
 }
 
+#elif defined(CONFIG_SANDBOX)
+
+int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+	int i;
+	bd_t *bd = gd->bd;
+
+	print_num("boot_params", (ulong)bd->bi_boot_params);
+
+	for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
+		print_num("DRAM bank", i);
+		print_num("-> start", bd->bi_dram[i].start);
+		print_num("-> size", bd->bi_dram[i].size);
+	}
+
+#if defined(CONFIG_CMD_NET)
+	print_eth(0);
+	printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
+#endif
+	print_num("FB base  ", gd->fb_base);
+	return 0;
+}
+
 #else
  #error "a case for this architecture does not exist!"
 #endif
@@ -422,7 +448,7 @@ static void print_num(const char *name, ulong value)
 	printf("%-12s= 0x%08lX\n", name, value);
 }
 
-#if !(defined(CONFIG_ARM) || defined(CONFIG_M68K)) || defined(CONFIG_CMD_NET)
+#ifdef HAVE_PRINT_ETH
 static void print_eth(int idx)
 {
 	char name[10], *val;
@@ -437,7 +463,7 @@ static void print_eth(int idx)
 }
 #endif
 
-#if (!defined(CONFIG_ARM) && !defined(CONFIG_X86))
+#ifdef HAVE_PRINT_LNUM
 static void print_lnum(const char *name, u64 value)
 {
 	printf("%-12s= 0x%.8llX\n", name, value);
Signature · 1 line
1.7.3.1
#32 lore raw

RFC PATCH 9/20 sandbox: Add bootm support

In reply to Simon Glass

This adds sandbox architecture support to bootm, although it is probably not useful to load sandbox code into the address space and execute it.

These changes at least make the file build correctly on 64-bit machines.

---
 common/cmd_bootm.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
common/cmd_bootm.c +8 -3
index 8909ee7..b16e242 100644
@@ -187,6 +187,8 @@ void arch_preboot_os(void) __attribute__((weak, alias("__arch_preboot_os")));
   #define IH_INITRD_ARCH IH_ARCH_SH
 #elif defined(__sparc__)
   #define IH_INITRD_ARCH IH_ARCH_SPARC
+#elif defined(CONFIG_SANDBOX_ARCH)
+  #define IH_INITRD_ARCH IH_ARCH_SANDBOX
 #else
 # error Unknown CPU type
 #endif
@@ -453,7 +455,9 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)
 static int bootm_start_standalone(ulong iflag, int argc, char * const argv[])
 {
 	char  *s;
+#if BITS_PER_LONG == 32
 	int   (*appl)(int, char * const []);
+#endif
 
 	/* Don't start if "autostart" is set to "no" */
 	if (((s = getenv("autostart")) != NULL) && (strcmp(s, "no") == 0)) {
@@ -462,9 +466,10 @@ static int bootm_start_standalone(ulong iflag, int argc, char * const argv[])
 		setenv("filesize", buf);
 		return 0;
 	}
+#if BITS_PER_LONG == 32
 	appl = (int (*)(int, char * const []))ntohl(images.ep);
 	(*appl)(argc-1, &argv[1]);
-
+#endif
 	return 0;
 }
 
@@ -488,14 +493,14 @@ static cmd_tbl_t cmd_bootm_sub[] = {
 int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	int ret = 0;
-	int state;
+	long state;
 	cmd_tbl_t *c;
 	boot_os_fn *boot_fn;
 
 	c = find_cmd_tbl(argv[1], &cmd_bootm_sub[0], ARRAY_SIZE(cmd_bootm_sub));
 
 	if (c) {
-		state = (int)c->cmd;
+		state = (long)c->cmd;
 
 		/* treat start special since it resets the state machine */
 		if (state == BOOTM_STATE_START) {
Signature · 1 line
1.7.3.1
#33 lore raw

RFC PATCH 9/20 sandbox: Add bootm support

common/cmd_bootm.c static int bootm_start_standalone(ulong iflag, int argc, char * const argv[]) · line 472

Quoted 12 lines · On Saturday, September 17, 2011 12:48:48 Simon Glass wrote:
common/cmd_bootm.c +4 -1
 
+#if BITS_PER_LONG == 32
 	int   (*appl)(int, char * const []);
+#endif
 
+#if BITS_PER_LONG == 32
 	appl = (int (*)(int, char * const []))ntohl(images.ep);
 	(*appl)(argc-1, &argv[1]);
-
+#endif

why do you need this ? if it's because you're converting from a 32bit int to a pointer, then you could address this by putting an (unsigned long) cast between the pointer and the ntohl() call.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/9b8c67d8/attachment.pgp

#34 lore raw

RFC PATCH 9/20 sandbox: Add bootm support

Quoted 8 lines · Mike Frysinger
Quoted 7 lines · On Saturday, September 17, 2011 12:48:48 Simon Glass wrote:
common/cmd_bootm.c +1 -0
 
+#if BITS_PER_LONG == 32

? ? ? int ? (*appl)(int, char * const []);
+#endif

Quoted 9 lines

common/cmd_bootm.c static int bootm_start_standalone(ulong iflag, int argc, char * const argv[]) · line 472

Quoted 5 lines

+#if BITS_PER_LONG == 32
? ? ? appl = (int (*)(int, char * const []))ntohl(images.ep); ? ? ? (*appl)(argc-1, &argv[1]);

common/cmd_bootm.c +1 -1
-
+#endif

why do you need this ? ?if it's because you're converting from a 32bit int to a pointer, then you could address this by putting an (unsigned long) cast between the pointer and the ntohl() call.

OK have done this.

Quoted 2 lines

-mike

#35 lore raw

RFC PATCH 10/20 sandbox: Disable built-in malloc

In reply to Simon Glass

We prefer to U-Boot's malloc but for now it is easier to use the C library's version.

---
 common/Makefile |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
common/Makefile +2 -0
index 2edbd71..8d17a54 100644
@@ -29,7 +29,9 @@ LIB	= $(obj)libcommon.o
 ifndef CONFIG_SPL_BUILD
 COBJS-y += main.o
 COBJS-y += command.o
+ifndef CONFIG_SANDBOX
 COBJS-y += dlmalloc.o
+endif
 COBJS-y += exports.o
 COBJS-$(CONFIG_SYS_HUSH_PARSER) += hush.o
 COBJS-y += image.o
Signature · 1 line
1.7.3.1
#36 lore raw

RFC PATCH 11/20 sandbox: Disable standalone/API support

In reply to Simon Glass

This is not useful on the sandbox architecture since we can simply link all our code with U-Boot.

---
 Makefile |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)
Makefile +6 -3
index e9ba6a4..672b5cd 100644
@@ -137,9 +137,7 @@ unexport CDPATH
 
 # The "tools" are needed early, so put this first
 # Don't include stuff already done in $(LIBS)
-SUBDIRS	= tools \
-	  examples/standalone \
-	  examples/api
+SUBDIRS	= tools
 
 .PHONY : $(SUBDIRS) $(VERSION_FILE)
 
@@ -156,6 +154,11 @@ sinclude $(obj)include/autoconf.mk
 include $(obj)include/config.mk
 export	ARCH CPU BOARD VENDOR SOC
 
+ifndef CONFIG_SANDBOX
+SUBDIRS += examples/standalone \
+	  examples/api
+endif
+
 # set default to nothing for native builds
 ifeq ($(HOSTARCH),$(ARCH))
 CROSS_COMPILE ?=
Signature · 1 line
1.7.3.1
#37 lore raw

RFC PATCH 12/20 sandbox: Force command sections to be 4-byte aligned

In reply to Simon Glass

By default sections are 16-byte aligned on some architectures, but the command name structure (struct cmd_tbl_s) does not have padding to 16 bytes. This reduces the alignment to 4-bytes so that the command table can be accessed correctly on any architecture.

(Note: this needs doing properly)

---
 include/command.h |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
include/command.h +2 -1
index f1accd0..c270110 100644
@@ -117,7 +117,8 @@ extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 #define CMD_FLAG_REPEAT		0x0001	/* repeat last command		*/
 #define CMD_FLAG_BOOTD		0x0002	/* command is from bootd	*/
 
-#define Struct_Section  __attribute__ ((unused,section (".u_boot_cmd")))
+#define Struct_Section  __attribute__((unused, section(".u_boot_cmd"), \
+		aligned(4)))
 
 #ifdef CONFIG_AUTO_COMPLETE
 # define _CMD_COMPLETE(x) x,
Signature · 1 line
1.7.3.1
#38 lore raw

RFC PATCH 13/20 sandbox: Add OS dependent layer

In reply to Simon Glass

We want to keep all OS-dependent code in once place, with a simple interface to U-Boot. For now, this is that place.

---
 arch/sandbox/config.mk        |    2 +-
 board/sandbox/common/Makefile |   47 +++++++++++++++++++++++++++++++++++++++
 board/sandbox/common/os.c     |   49 +++++++++++++++++++++++++++++++++++++++++
 include/os.h                  |   27 ++++++++++++++++++++++
 4 files changed, 124 insertions(+), 1 deletions(-)
 create mode 100644 board/sandbox/common/Makefile
 create mode 100644 board/sandbox/common/os.c
 create mode 100644 include/os.h
arch/sandbox/config.mk +1 -1
index d9956ff..f0f1472 100644
@@ -17,5 +17,5 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 # MA 02111-1307 USA
 
-PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__
+PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__ -I/usr/include
 LDSCRIPT := $(SRCTREE)/$(CPUDIR)/u-boot.lds
board/sandbox/common/Makefile new file +47 -0

47 lines not on this page · raw message

board/sandbox/common/os.c new file +49 -0

49 lines not on this page · raw message

include/os.h new file +27 -0
new file mode 100644
index 0000000..3010920
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+/* Operating System Interface */
+
+ssize_t os_read(int fd, void *buf, size_t count);
+ssize_t os_write(int fd, const void *buf, size_t count);
+int os_open(const char *pathname, int flags);
+int os_close(int fd);
Signature · 1 line
1.7.3.1
#39 lore raw

RFC PATCH 13/20 sandbox: Add OS dependent layer

arch/sandbox/config.mk line 20

Quoted 5 lines · On Saturday, September 17, 2011 12:48:52 Simon Glass wrote:
arch/sandbox/config.mk +1 -1
 
-PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__
+PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__ -I/usr/include

since this gets used by all u-boot files, shouldnt the /usr/include path get added only for specific files/dirs ? the ones that glue the u-boot world to the host C library ?

board/sandbox/common/Makefile line 39

Quoted 8 lines
board/sandbox/common/Makefile new file +5 -0
 
+clean:
+	rm -f $(SOBJS) $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak $(obj).depend

these dont get used, so punt them

board/sandbox/common/os.c

Quoted 2 lines
board/sandbox/common/os.c new file +0 -0

isnt this an "arch" issue and not "board" ?

include/os.h

Quoted 2 lines
include/os.h new file +0 -0

seems like this glue should be in the sandbox arch subdir
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/b8cd60e2/attachment.pgp

#40 lore raw

RFC PATCH 13/20 sandbox: Add OS dependent layer

Hi Mike,

Quoted 10 lines · Mike Frysinger

arch/sandbox/config.mk line 20

Quoted 5 lines · On Saturday, September 17, 2011 12:48:52 Simon Glass wrote:
arch/sandbox/config.mk +1 -1
 
-PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__
+PLATFORM_CPPFLAGS += -DCONFIG_SANDBOX -D__SANDBOX__ -I/usr/include

since this gets used by all u-boot files, shouldnt the /usr/include path get added only for specific files/dirs ? ?the ones that glue the u-boot world to the host C library ?

Yes I tried to do that, but it didn't seem to work. I have put my original attempt - what I would like to do - in the v2 patch series. I will come back to this later but hopefully someone can just point out what is wrong.

Quoted 17 lines

board/sandbox/common/Makefile

Quoted 9 lines
board/sandbox/common/Makefile new file +5 -0
 
+clean:
+ ? ? rm -f $(SOBJS) $(OBJS)
+
+distclean: ? clean
+ ? ? rm -f $(LIB) core *.bak $(obj).depend

these dont get used, so punt them

board/sandbox/common/os.c

Quoted 2 lines
board/sandbox/common/os.c new file +0 -0

isnt this an "arch" issue and not "board" ?

Quoted 5 lines

include/os.h

Quoted 2 lines
include/os.h new file +0 -0

seems like this glue should be in the sandbox arch subdir -mike

I originally had it there, and then decided to move it since I was concerned that we might want to define an os layer which doesn't do OS calls, but perhaps communicates over a network link to a remote test controller, or uses expect scripts to run tests. However, this is pie in the sky at this stage so I am changing back to arch, as you suggest.

Regards,
Simon

Quoted 1 line
#41 lore raw

RFC PATCH 14/20 sandbox: Add board_init()

In reply to Simon Glass

Create a basic empty board_init() to get us running.

---
 board/sandbox/common/Makefile |    2 +-
 board/sandbox/common/board.c  |   25 +++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletions(-)
 create mode 100644 board/sandbox/common/board.c
board/sandbox/common/Makefile +1 -1
index 3289368..eb5062c 100644
@@ -21,7 +21,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(VENDOR).o
 
-COBJS-y += os.o
+COBJS-y += board.o os.o
 
 COBJS	:= $(COBJS-y)
 SRCS	:= $(COBJS:.o=.c)
board/sandbox/common/board.c new file +25 -0
new file mode 100644
index 0000000..de3cf06
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+void board_init(void)
+{
+	/* Nothing to do here for the moment */
+}
Signature · 1 line
1.7.3.1
#42 lore raw

RFC PATCH 15/20 sandbox: Add main program

In reply to Simon Glass

Add a main program so that we can run U-Boot.

---
 board/sandbox/common/Makefile |    2 +-
 board/sandbox/common/main.c   |   34 ++++++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 1 deletions(-)
 create mode 100644 board/sandbox/common/main.c
board/sandbox/common/Makefile +1 -1
index eb5062c..909962d 100644
@@ -21,7 +21,7 @@ include $(TOPDIR)/config.mk
 
 LIB	= $(obj)lib$(VENDOR).o
 
-COBJS-y += board.o os.o
+COBJS-y += board.o main.o os.o
 
 COBJS	:= $(COBJS-y)
 SRCS	:= $(COBJS:.o=.c)
board/sandbox/common/main.c new file +34 -0
new file mode 100644
index 0000000..3753c5c
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+
+int main(int argc, char *argv[])
+{
+	/* Do pre- and post-relocation init, then start up U-Boot */
+	board_init_f(0);
+	board_init_r(0, 0);
+
+	for (;;)
+		main_loop();
+
+	return 0;
+}
Signature · 1 line
1.7.3.1
#43 lore raw

RFC PATCH 16/20 sandbox: Add serial uart

In reply to Simon Glass

This uart simply writes to stdout and reads from stdin. We might imagine instead buffering the data so that a test interface can check output and inject input.

---
 drivers/serial/Makefile  |    1 +
 drivers/serial/sandbox.c |   67 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+), 0 deletions(-)
 create mode 100644 drivers/serial/sandbox.c
drivers/serial/Makefile +1 -0
index 1dcc1c7..6309549 100644
@@ -53,6 +53,7 @@ COBJS-$(CONFIG_SA1100_SERIAL) += serial_sa1100.o
 COBJS-$(CONFIG_S3C24X0_SERIAL) += serial_s3c24x0.o
 COBJS-$(CONFIG_S3C44B0_SERIAL) += serial_s3c44b0.o
 COBJS-$(CONFIG_XILINX_UARTLITE) += serial_xuartlite.o
+COBJS-$(CONFIG_SANDBOX_SERIAL) += sandbox.o
 COBJS-$(CONFIG_SCIF_CONSOLE) += serial_sh.o
 COBJS-$(CONFIG_TEGRA2) += serial_tegra2.o
 
drivers/serial/sandbox.c new file +67 -0

67 lines not on this page · raw message

Signature · 1 line
1.7.3.1
#44 lore raw

RFC PATCH 17/20 sandbox: Add basic config file

In reply to Simon Glass

This includes just a few basic features to illustrate the concept.

---
 include/configs/sandbox.h |   80 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)
 create mode 100644 include/configs/sandbox.h
include/configs/sandbox.h new file +80 -0
new file mode 100644
index 0000000..43c7172
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#define CONFIG_NR_DRAM_BANKS	1
+#define CONFIG_SYS_SDRAM_BASE	0
+#define CONFIG_DRAM_SIZE	(128 << 20)
+
+/* Number of bits in a C 'long' on this architecture */
+#define CONFIG_SANDBOX_BITS_PER_LONG	64
+
+/*
+ * Size of malloc() pool, although we don't actually use this yet.
+ */
+#define CONFIG_SYS_MALLOC_LEN		(4 << 20)	/* 4MB  */
+
+#define	CONFIG_SYS_PROMPT		"=>"	/* Command Prompt */
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2	"> "
+#define	CONFIG_SYS_LONGHELP			/* #undef to save memory */
+#define	CONFIG_SYS_CBSIZE		1024	/* Console I/O Buffer Size */
+
+/* Print Buffer Size */
+#define	CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS	16
+
+/* turn on command-line edit/c/auto */
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_COMMAND_HISTORY
+#define CONFIG_AUTOCOMPLETE
+
+#define CONFIG_ENV_SIZE		8192
+#define CONFIG_ENV_IS_NOWHERE
+
+#define CONFIG_SYS_HZ			1000
+
+/* Memory things - we don't really want a memory test */
+#define CONFIG_SYS_LOAD_ADDR		0x10000000
+#define CONFIG_SYS_MEMTEST_START	0x10000000
+#define CONFIG_SYS_MEMTEST_END		(CONFIG_SYS_MEMTEST_START + 0x1000)
+#define CONFIG_PHYS_64BIT
+
+#define CONFIG_BAUDRATE			115200
+#define CONFIG_SYS_BAUDRATE_TABLE	{4800, 9600, 19200, 38400, 57600,\
+					115200}
+#define CONFIG_SANDBOX_SERIAL
+
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_LMB
+
+/* include default commands */
+#include <config_cmd_default.h>
+
+/* We don't have networking support yet */
+#undef CONFIG_CMD_NET
+#undef CONFIG_CMD_NFS
+
+#define CONFIG_BOOTARGS ""
+
+#define CONFIG_EXTRA_ENV_SETTINGS	"stdin=serial\0" \
+					"stdout=serial,lcd\0" \
+					"stderr=serial,lcd\0"
Signature · 1 line
1.7.3.1
#45 lore raw

RFC PATCH 17/20 sandbox: Add basic config file

include/configs/sandbox.h

Quoted 2 lines · On Saturday, September 17, 2011 12:48:56 Simon Glass wrote:
include/configs/sandbox.h new file +0 -0

missing #ifdef multiple include protection

include/configs/sandbox.h line 24

Quoted 3 lines
include/configs/sandbox.h new file +3 -0
+#define CONFIG_NR_DRAM_BANKS	1
+#define CONFIG_SYS_SDRAM_BASE	0
+#define CONFIG_DRAM_SIZE	(128 << 20)

do you need any of this ?

Quoted 1 line

+#define CONFIG_SYS_PROMPT "=>" /* Command Prompt */

this file has a bunch of "#define<tab>" where it should be "#define<space>"

Quoted 1 line

+#define CONFIG_LMB

i dont think you need this either ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/08ee311e/attachment.pgp

#46 lore raw

RFC PATCH 17/20 sandbox: Add basic config file

Hi Mike,

Quoted 8 lines · Mike Frysinger

include/configs/sandbox.h

Quoted 2 lines · On Saturday, September 17, 2011 12:48:56 Simon Glass wrote:
include/configs/sandbox.h new file +0 -0

missing #ifdef multiple include protection

include/configs/sandbox.h

Quoted 2 lines
include/configs/sandbox.h new file +2 -0
+#define CONFIG_NR_DRAM_BANKS 1
+#define CONFIG_SYS_SDRAM_BASE ? ? ? ?0

I don't need this ^^

Quoted 3 lines
Quoted 1 line

+#define CONFIG_DRAM_SIZE ? ? (128 << 20)

do you need any of this ?

I want to have simulated DRAM, so yes. But I will make it start always at 0 which removes one item.

Quoted 4 lines
Quoted 2 lines

+#define ? ? ?CONFIG_SYS_PROMPT ? ? ? ? ? ? ? "=>" ? ?/* Command Prompt */

this file has a bunch of "#define<tab>" where it should be "#define<space>"

OK, fixed.

Quoted 4 lines
Quoted 2 lines

+#define CONFIG_LMB

i dont think you need this either ?

No, removed.

Regards,
Simon

Quoted 2 lines

-mike

#47 lore raw

RFC PATCH 17/20 sandbox: Add basic config file

Quoted 8 lines · On Friday, September 23, 2011 12:00:15 Simon Glass wrote:
Quoted 4 lines · Mike Frysinger
Quoted 1 line · On Saturday, September 17, 2011 12:48:56 Simon Glass wrote:

+#define CONFIG_DRAM_SIZE (128 << 20)

do you need any of this ?

I want to have simulated DRAM, so yes. But I will make it start always at 0 which removes one item.

which is fine, but i guess the notion of "how much ram do i have" is not standardized anywhere. you're copying the arm tree as the basis of the sandbox arch, so it's including the DRAM conventions that arm uses.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110926/bf598958/attachment.pgp

#48 lore raw

RFC PATCH 17/20 sandbox: Add basic config file

Hi Mike,

Quoted 7 lines · Mike Frysinger
Quoted 6 lines · On Friday, September 23, 2011 12:00:15 Simon Glass wrote:
Quoted 4 lines · Mike Frysinger
Quoted 1 line · On Saturday, September 17, 2011 12:48:56 Simon Glass wrote:

+#define CONFIG_DRAM_SIZE ? ? (128 << 20)

do you need any of this ?

Quoted 8 lines
Quoted 2 lines

I want to have simulated DRAM, so yes. But I will make it start always at 0 which removes one item.

which is fine, but i guess the notion of "how much ram do i have" is not standardized anywhere. ?you're copying the arm tree as the basis of the sandbox arch, so it's including the DRAM conventions that arm uses. -mike

No, not yet. I suppose it will be in a config file somewhere and defined by the test controller. TBD.

Regards,
Simon

#49 lore raw

RFC PATCH 18/20 sandbox: Remove unused variable warnings

In reply to Simon Glass

There are a few variables set but not used - this marks these as unused for the compiler.

---
 common/cmd_mem.c    |    2 +-
 common/cmd_nvedit.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
common/cmd_mem.c +1 -1
index 4daa1b3..1168766 100644
@@ -471,7 +471,7 @@ int do_mem_base (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 int do_mem_loop (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
-	ulong	addr, length, i, junk;
+	ulong	addr, length, i, junk __attribute__((unused));
 	int	size;
 	volatile uint	*longp;
 	volatile ushort *shortp;
common/cmd_nvedit.c +1 -1
index e8b116d..cf6601d 100644
@@ -460,7 +460,7 @@ int do_env_edit(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	char buffer[CONFIG_SYS_CBSIZE];
 	char *init_val;
-	int len;
+	int len __attribute((unused));
 
 	if (argc < 2)
 		return cmd_usage(cmdtp);
Signature · 1 line
1.7.3.1
#50 lore raw

RFC PATCH 18/20 sandbox: Remove unused variable warnings

Quoted 2 lines · On Saturday, September 17, 2011 12:48:57 Simon Glass wrote:

There are a few variables set but not used - this marks these as unused for the compiler.

summary says "sandbox:" but i dont think this has anything to do with sandbox. you're just using a newer compiler.

common/cmd_mem.c int do_mem_base (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) · line 474

Quoted 5 lines
common/cmd_mem.c +1 -1
 
-	ulong	addr, length, i, junk;
+	ulong	addr, length, i, junk __attribute__((unused));

this one is tricky as we just want to read the value from the volatile pointer. i'm guessing do "*longp++;" just adds a different warning ?

common/cmd_nvedit.c int do_env_edit(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) · line 463

Quoted 5 lines
common/cmd_nvedit.c +1 -1
 
-	int len;
+	int len __attribute((unused));

this file though looks like we should just delete "len"
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/df29ac81/attachment.pgp

#51 lore raw

RFC PATCH 18/20 sandbox: Remove unused variable warnings

Hi Mike,

Quoted 7 lines · Mike Frysinger
Quoted 2 lines · On Saturday, September 17, 2011 12:48:57 Simon Glass wrote:

There are a few variables set but not used - this marks these as unused for the compiler.

summary says "sandbox:" but i dont think this has anything to do with sandbox. you're just using a newer compiler.

Quoted 8 lines

common/cmd_mem.c

Quoted 5 lines
common/cmd_mem.c +1 -1
 
- ? ? ulong ? addr, length, i, junk;
+ ? ? ulong ? addr, length, i, junk __attribute__((unused));

this one is tricky as we just want to read the value from the volatile pointer. ?i'm guessing do "*longp++;" just adds a different warning ?

Isn't that a nop?

Well I can just assign it to a different variable - I will use 'size' in my new patch set.

Quoted 8 lines

common/cmd_nvedit.c

Quoted 6 lines
common/cmd_nvedit.c +1 -1
 
- ? ? int len;
+ ? ? int len __attribute((unused));

this file though looks like we should just delete "len"

Yes, done. I don't use lint anyway.

Regards,
Simon

Quoted 2 lines

-mike

#52 lore raw

RFC PATCH 18/20 sandbox: Remove unused variable warnings

Quoted 11 lines · On Friday, September 23, 2011 12:01:46 Simon Glass wrote:
Quoted 10 lines · Mike Frysinger
Quoted 2 lines · On Saturday, September 17, 2011 12:48:57 Simon Glass wrote:

There are a few variables set but not used - this marks these as unused for the compiler.

summary says "sandbox:" but i dont think this has anything to do with sandbox. you're just using a newer compiler.

Quoted 3 lines
common/cmd_mem.c +0 -0
Quoted 7 lines
Quoted 5 lines

common/cmd_mem.c int do_mem_base (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) · line 474

Quoted 2 lines
common/cmd_mem.c +1 -1
-     ulong   addr, length, i, junk;
+     ulong   addr, length, i, junk __attribute__((unused));

this one is tricky as we just want to read the value from the volatile pointer. i'm guessing do "*longp++;" just adds a different warning ?

Isn't that a nop?

if it's volatile, it shouldn't be

Quoted 2 lines

Well I can just assign it to a different variable - I will use 'size' in my new patch set.

Marek Vasut posted a patch which dropped the assignment and it seems to not add any warnings

Quoted 9 lines
Quoted 7 lines

common/cmd_nvedit.c int do_env_edit(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) · line 463

Quoted 5 lines
common/cmd_nvedit.c +1 -1
 
-     int len;
+     int len __attribute((unused));

this file though looks like we should just delete "len"

Yes, done. I don't use lint anyway.

he also posted a fix for this :)
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110926/624ffbd9/attachment.pgp

#53 lore raw

RFC PATCH 18/20 sandbox: Remove unused variable warnings

Hi Mike,

Quoted 18 lines · Mike Frysinger
Quoted 17 lines · On Friday, September 23, 2011 12:01:46 Simon Glass wrote:
Quoted 15 lines · Mike Frysinger
Quoted 2 lines · On Saturday, September 17, 2011 12:48:57 Simon Glass wrote:

There are a few variables set but not used - this marks these as unused for the compiler.

summary says "sandbox:" but i dont think this has anything to do with sandbox. you're just using a newer compiler.

common/cmd_mem.c

Quoted 5 lines
common/cmd_mem.c +1 -1
 
- ? ? ulong ? addr, length, i, junk;
+ ? ? ulong ? addr, length, i, junk __attribute__((unused));

this one is tricky as we just want to read the value from the volatile pointer. ?i'm guessing do "*longp++;" just adds a different warning ?

Quoted 3 lines
Quoted 1 line

Isn't that a nop?

if it's volatile, it shouldn't be

I missed that. checkpatch warns me so badly on volatile that I assumed we didn't use it :-)

Quoted 6 lines
Quoted 3 lines

Well I can just assign it to a different variable - I will use 'size' in my new patch set.

Marek Vasut posted a patch which dropped the assignment and it seems to not add any warnings

Yes, just tried it and it works fine.

Regards,
Simon

Quoted 14 lines
Quoted 10 lines
Quoted 8 lines

common/cmd_nvedit.c

Quoted 6 lines
common/cmd_nvedit.c +1 -1
 
- ? ? int len;
+ ? ? int len __attribute((unused));

this file though looks like we should just delete "len"

Yes, done. I don't use lint anyway.

he also posted a fix for this :)
-mike

#54 lore raw

RFC PATCH 19/20 sandbox: Use uintptr_t for 32/64-bit compatibility

In reply to Simon Glass

This fixes a problems when building on some 64-bit machines.

---
 common/cmd_mem.c     |    2 +-
 common/fdt_support.c |    8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)
common/cmd_mem.c +1 -1
index 1168766..94d3926 100644
@@ -937,7 +937,7 @@ int do_mem_mtest (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 			if (readback != val) {
 				printf ("\nMem error @ 0x%08X: "
 					"found %08lX, expected %08lX\n",
-					(uint)addr, readback, val);
+					(uint)(uintptr_t)addr, readback, val);
 				errs++;
 				if (ctrlc()) {
 					putc ('\n');
common/fdt_support.c +4 -4
index 19b2ef6..9bed3ce 100644
@@ -495,7 +495,7 @@ int fdt_resize(void *blob)
 	total = fdt_num_mem_rsv(blob);
 	for (i = 0; i < total; i++) {
 		fdt_get_mem_rsv(blob, i, &addr, &size);
-		if (addr == (uint64_t)(u32)blob) {
+		if (addr == (uintptr_t)blob) {
 			fdt_del_mem_rsv(blob, i);
 			break;
 		}
@@ -511,14 +511,14 @@ int fdt_resize(void *blob)
 		fdt_size_dt_strings(blob) + 5 * sizeof(struct fdt_reserve_entry);
 
 	/* Make it so the fdt ends on a page boundary */
-	actualsize = ALIGN(actualsize + ((uint)blob & 0xfff), 0x1000);
-	actualsize = actualsize - ((uint)blob & 0xfff);
+	actualsize = ALIGN(actualsize + ((uintptr_t)blob & 0xfff), 0x1000);
+	actualsize = actualsize - ((uintptr_t)blob & 0xfff);
 
 	/* Change the fdt header to reflect the correct size */
 	fdt_set_totalsize(blob, actualsize);
 
 	/* Add the new reservation */
-	ret = fdt_add_mem_rsv(blob, (uint)blob, actualsize);
+	ret = fdt_add_mem_rsv(blob, (uintptr_t)blob, actualsize);
 	if (ret < 0)
 		return ret;
 
Signature · 1 line
1.7.3.1
#55 lore raw

RFC PATCH 20/20 sandbox: Makefile changes to build sandbox architecture

In reply to Simon Glass

At this point U-Boot will build and run on x86 under Linux.

The idea is to define a new architecture called 'sandbox', alongside ARM and x86. This runs natively on Linux to suit the host machine. All hardware access is either omitted or emulated.

The purpose of this system is to test the bulk of the non-hardware-specific U-Boot code. We can mock the SPI flash, GPIOs, UART and keyboard, then test that U-Boot behaves as we wish.

---
 Makefile |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)
Makefile +12 -2
index 672b5cd..136bd75 100644
@@ -200,7 +200,9 @@ endif
 #########################################################################
 # U-Boot objects....order is important (i.e. start must be first)
 
+ifneq ($(CPU),sandbox)
 OBJS  = $(CPUDIR)/start.o
+endif
 ifeq ($(CPU),x86)
 OBJS += $(CPUDIR)/start16.o
 OBJS += $(CPUDIR)/resetvec.o
@@ -401,12 +403,20 @@ $(obj)u-boot.ubl:       $(obj)u-boot-nand.bin
 		$(obj)tools/mkimage -n $(UBL_CONFIG) -T ublimage \
 		-e $(CONFIG_SYS_TEXT_BASE) -d $< $@
 
+ifeq ($(CONFIG_SANDBOX),y)
+GEN_UBOOT = \
+		cd $(LNDIR) && $(CC) -o u-boot $(SYMS) \
+			-Wl,-Map -Wl,u-boot.map -T $(obj)u-boot.lds \
+			-Wl,--start-group $(__LIBS) -Wl,--end-group \
+			$(PLATFORM_LIBS)
+else
 GEN_UBOOT = \
-		UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
-		sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
+		UNDEF_SYM=`$(UNDEF)`; \
 		cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
 			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
 			-Map u-boot.map -o u-boot
+endif
+
 $(obj)u-boot:	depend \
 		$(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
 		$(GEN_UBOOT)
Signature · 1 line
1.7.3.1
#56 lore raw

RFC PATCH 1/20 sandbox: Add architecture header files

In reply to Simon Glass

arch/sandbox/include/asm/arch-sandbox/clock.h line 25

Quoted 6 lines · On Saturday, September 17, 2011 12:48:40 Simon Glass wrote:
arch/sandbox/include/asm/arch-sandbox/clock.h new file +3 -0
 
+enum periph_id {
+	PERIPH_COUNT
+};

is this needed by anything ?

arch/sandbox/include/asm/arch-sandbox/gpio.h line 24

Quoted 6 lines
arch/sandbox/include/asm/arch-sandbox/gpio.h new file +3 -0
 
+enum {
+	GPIO_COUNT	= 255,		/* Number of GPIOs */
+};

are these needed for anything ?

arch/sandbox/include/asm/arch-sandbox/gpio.h line 29

Quoted 4 lines
arch/sandbox/include/asm/arch-sandbox/gpio.h new file +4 -0
+int gpio_direction_input(int gp);
+int gpio_direction_output(int gp, int value);
+int gpio_get_value(int gp);
+void gpio_set_value(int gp, int value);

let's use this new sandbox arch as an excuse to populate asm-generic/ further

Quoted 18 lines
arch/sandbox/include/asm/posix_types.h new file +15 -0
 
+typedef struct {
+#if defined(__KERNEL__) || defined(__USE_ALL)
+	int	val[2];
+#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
+	int	__val[2];
+#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
+} __kernel_fsid_t;
+
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+
+#undef	__FD_SET
+#define __FD_SET(fd, fdsetp) \
+		(((fd_set *)fdsetp)->fds_bits[fd >> 5] |= (1<<(fd & 31)))
+
+#undef	__FD_CLR

arch/sandbox/include/asm/posix_types.h line 81

Quoted 10 lines
arch/sandbox/include/asm/posix_types.h new file +10 -0
+#define __FD_CLR(fd, fdsetp) \
+		(((fd_set *)fdsetp)->fds_bits[fd >> 5] &= ~(1<<(fd & 31)))
+
+#undef	__FD_ISSET
+#define __FD_ISSET(fd, fdsetp) \
+		((((fd_set *)fdsetp)->fds_bits[fd >> 5] & (1<<(fd & 31))) != 0)
+
+#undef	__FD_ZERO
+#define __FD_ZERO(fdsetp) \
+		(memset(fdsetp, 0, sizeof(*(fd_set *)fdsetp)))

pretty sure u-boot doesnt use this, so just drop it

arch/sandbox/include/asm/ptrace.h line 30

Quoted 7 lines
arch/sandbox/include/asm/ptrace.h new file +4 -0
 
+/* This is not used in the sandbox architecture, but required by U-Boot */
+struct pt_regs {
+	long dummy;
+};

does it actually need to have "dummy" ?

arch/sandbox/include/asm/string.h

Quoted 2 lines
arch/sandbox/include/asm/string.h new file +0 -0

this file looks like it should simply include linux/string.h

Quoted 11 lines
arch/sandbox/include/asm/u-boot-sandbox.h new file +8 -0
 
+/* cpu/.../cpu.c */
+int	cpu_init(void);
+int	cleanup_before_linux(void);
+
+/* cpu/.../arch/cpu.c */
+int	arch_cpu_init(void);
+int	arch_misc_init(void);
+

arch/sandbox/include/asm/u-boot-sandbox.h line 54

Quoted 10 lines
arch/sandbox/include/asm/u-boot-sandbox.h new file +10 -0
+/* board/.../... */
+int	board_init(void);
+int	dram_init(void);
+void	dram_init_banksize(void);
+
+/* cpu/.../interrupt.c */
+int	arch_interrupt_init(void);
+void	reset_timer_masked(void);
+ulong	get_timer_masked(void);
+void	udelay_masked(unsigned long usec);

are these actually needed ? or should these get punted ?

arch/sandbox/include/asm/u-boot-sandbox.h line 48

Quoted 2 lines
arch/sandbox/include/asm/u-boot-sandbox.h new file +2 -0
+/* common/cmd_nvedit.c */
+int	setenv(const char *, const char *);

this arch header shouldnt contain prototypes for non-arch stuff

arch/sandbox/include/asm/u-boot-sandbox.h line 57

Quoted 2 lines
arch/sandbox/include/asm/u-boot-sandbox.h new file +2 -0
+/* cpu/.../timer.c */
+int	timer_init(void);

already in common.h

arch/sandbox/include/asm/unaligned.h

Quoted 2 lines
arch/sandbox/include/asm/unaligned.h new file +0 -0

include asm-generic/unaligned.h rather than writing your own
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20110917/e78c09fb/attachment.pgp