Re: [PATCH 09/20] arm: add application support

2013-03-06 Thread Jean-Christophe PLAGNIOL-VILLARD
On 13:59 Wed 06 Mar , Alexander Shiyan wrote:
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD 
> > ---
> >  arch/arm/Kconfig   |1 +
> >  arch/arm/Makefile  |6 +-
> >  arch/arm/apps/Kconfig  |   11 
> >  arch/arm/apps/Makefile |6 ++
> >  arch/arm/apps/apps.lds.S   |   64 ++
> >  arch/arm/apps/binfmt.c |  111 
> > 
> >  arch/arm/apps/head.S   |   59 +
> >  arch/arm/apps/include/arch/asm/macro.h |   46 +
> >  arch/arm/apps/include/arch/setjmp.h|   26 
> >  arch/arm/apps/raise.c  |   27 
> >  arch/arm/apps/setjmp.S |   60 +
> >  arch/arm/apps/start.c  |   35 ++
> >  12 files changed, 451 insertions(+), 1 deletion(-)
> >  create mode 100644 arch/arm/apps/Kconfig
> >  create mode 100644 arch/arm/apps/Makefile
> >  create mode 100644 arch/arm/apps/apps.lds.S
> >  create mode 100644 arch/arm/apps/binfmt.c
> >  create mode 100644 arch/arm/apps/head.S
> >  create mode 100644 arch/arm/apps/include/arch/asm/macro.h
> >  create mode 100644 arch/arm/apps/include/arch/setjmp.h
> >  create mode 100644 arch/arm/apps/raise.c
> >  create mode 100644 arch/arm/apps/setjmp.S
> >  create mode 100644 arch/arm/apps/start.c
> ...
> 
> Is this feature really needed? If we Include it, is dramatically increases 
> size of BB.
> We have a scripting, maybe just inclusion a small "C" interpreter is enough?
> Such as "picoc" (http://code.google.com/p/picoc/), for example.
increase?? no
 1 to 2 KiB

on barebox side you just have the syscall

it's nothing and this is optionnal

Best Regards,
J.
> 
> ---

___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


Re: [PATCH 09/20] arm: add application support

2013-03-06 Thread Alexander Shiyan
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD 
> ---
>  arch/arm/Kconfig   |1 +
>  arch/arm/Makefile  |6 +-
>  arch/arm/apps/Kconfig  |   11 
>  arch/arm/apps/Makefile |6 ++
>  arch/arm/apps/apps.lds.S   |   64 ++
>  arch/arm/apps/binfmt.c |  111 
> 
>  arch/arm/apps/head.S   |   59 +
>  arch/arm/apps/include/arch/asm/macro.h |   46 +
>  arch/arm/apps/include/arch/setjmp.h|   26 
>  arch/arm/apps/raise.c  |   27 
>  arch/arm/apps/setjmp.S |   60 +
>  arch/arm/apps/start.c  |   35 ++
>  12 files changed, 451 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/apps/Kconfig
>  create mode 100644 arch/arm/apps/Makefile
>  create mode 100644 arch/arm/apps/apps.lds.S
>  create mode 100644 arch/arm/apps/binfmt.c
>  create mode 100644 arch/arm/apps/head.S
>  create mode 100644 arch/arm/apps/include/arch/asm/macro.h
>  create mode 100644 arch/arm/apps/include/arch/setjmp.h
>  create mode 100644 arch/arm/apps/raise.c
>  create mode 100644 arch/arm/apps/setjmp.S
>  create mode 100644 arch/arm/apps/start.c
...

Is this feature really needed? If we Include it, is dramatically increases size 
of BB.
We have a scripting, maybe just inclusion a small "C" interpreter is enough?
Such as "picoc" (http://code.google.com/p/picoc/), for example.

---
___
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


[PATCH 09/20] arm: add application support

2013-03-06 Thread Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD 
---
 arch/arm/Kconfig   |1 +
 arch/arm/Makefile  |6 +-
 arch/arm/apps/Kconfig  |   11 
 arch/arm/apps/Makefile |6 ++
 arch/arm/apps/apps.lds.S   |   64 ++
 arch/arm/apps/binfmt.c |  111 
 arch/arm/apps/head.S   |   59 +
 arch/arm/apps/include/arch/asm/macro.h |   46 +
 arch/arm/apps/include/arch/setjmp.h|   26 
 arch/arm/apps/raise.c  |   27 
 arch/arm/apps/setjmp.S |   60 +
 arch/arm/apps/start.c  |   35 ++
 12 files changed, 451 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/apps/Kconfig
 create mode 100644 arch/arm/apps/Makefile
 create mode 100644 arch/arm/apps/apps.lds.S
 create mode 100644 arch/arm/apps/binfmt.c
 create mode 100644 arch/arm/apps/head.S
 create mode 100644 arch/arm/apps/include/arch/asm/macro.h
 create mode 100644 arch/arm/apps/include/arch/setjmp.h
 create mode 100644 arch/arm/apps/raise.c
 create mode 100644 arch/arm/apps/setjmp.S
 create mode 100644 arch/arm/apps/start.c

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index f25dcf7..f30859b 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -2,6 +2,7 @@ config ARM
bool
select HAS_KALLSYMS
select HAS_MODULES
+   select HAS_APPLICATIONS
select HAVE_CONFIGURABLE_TEXT_BASE
select HAVE_PBL_IMAGE
select HAVE_IMAGE_COMPRESSION
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 100a3c4..731d92a 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -275,9 +275,13 @@ else
 MACH :=
 endif
 
+APP_LDFLAGS += -L $(shell dirname `$(CC) $(CPPFLAGS) -print-libgcc-file-name`) 
-lgcc
+
 common-y += $(BOARD) $(MACH)
 common-y += arch/arm/lib/ arch/arm/cpu/
+common-$(CONFIG_APPLICATIONS) += arch/arm/apps/
 
 lds-y  := arch/arm/lib/barebox.lds
+apps-lds-y := arch/arm/apps/apps.lds
 
-CLEAN_FILES += include/generated/mach-types.h arch/arm/lib/barebox.lds 
barebox-flash-image
+CLEAN_FILES += include/generated/mach-types.h arch/arm/lib/barebox.lds 
arch/arm/apps/apps.lds barebox-flash-image
diff --git a/arch/arm/apps/Kconfig b/arch/arm/apps/Kconfig
new file mode 100644
index 000..8fcb79d
--- /dev/null
+++ b/arch/arm/apps/Kconfig
@@ -0,0 +1,11 @@
+
+config APP_TEXT_BASE_OFFSET
+   hex
+   default 0x80
+   prompt "application text base offset"
+   help
+ APP_TEXT_BASE = TEXT_BASE - APP_TEXT_BASE_OFFSET
+ all the application will be link at this address
+ the syscall table region of 0x2000 will be add
+ APP_TEXT_BASE - 0x2000 and then the malloc region at
+ APP_TEXT_BASE - 0x2000 - APP_MALLOC_SIZE
diff --git a/arch/arm/apps/Makefile b/arch/arm/apps/Makefile
new file mode 100644
index 000..c7e9a80
--- /dev/null
+++ b/arch/arm/apps/Makefile
@@ -0,0 +1,6 @@
+obj-y += binfmt.o
+app-y += head.o
+app-y += start.o
+app-y += raise.o
+app-y += setjmp.o
+extry-y += apps.lds
diff --git a/arch/arm/apps/apps.lds.S b/arch/arm/apps/apps.lds.S
new file mode 100644
index 000..b6e4ab9
--- /dev/null
+++ b/arch/arm/apps/apps.lds.S
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2013 Jean-Christophe PLAGNIOL-VILLARD 
+ *
+ * Under GPLv2 only
+ *
+ * As a special exception, if other files instantiate templates or use macros
+ * or inline functions from this file, or you compile this file and link it
+ * with other works to produce a work based on this file, this file does not
+ * by itself cause the resulting work to be covered by the GNU General Public
+ * License. However the source code for this file must still be made available
+ * in accordance with section (3) of the GNU General Public License.
+
+ * This exception does not invalidate any other reasons why a work based on
+ * this file might be covered by the GNU General Public License.
+ */
+
+#include 
+#include 
+#include 
+
+#define HEAD_BASE (TEXT_BASE - CONFIG_APP_TEXT_BASE_OFFSET)
+
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(_start)
+SECTIONS
+{
+   . = HEAD_BASE;
+
+   . = ALIGN(4);
+   .text  :
+   {
+   _stext = .;
+   _text = .;
+   *(.text_head_entry*)
+   . = 0x80;
+   KEEP(*(.appinfo.start))
+   __appinfo_start = .;
+   KEEP(*(.appinfo))
+   __appinfo_end = .;
+   KEEP(*(.appinfo.end))
+   *(.text*)
+   }
+
+   /* Discard unwind if enable in barebox */
+   /DISCARD/ : { *(.ARM.ex*) }
+
+   . = ALIGN(4);
+   .rodata : { *(.rodata*) }
+
+   _etext = .; /* End of text and rodata section */
+
+   . = ALIGN(4);
+   .data : { *(.data*) }
+
+   . = ALIGN(4);
+   __bss_start = .;
+