Patchwork [v3] MIPS: ZBOOT: gather string functions into string.c

login
register
mail settings
Submitter Antony Pavlov
Date Jan. 13, 2014, 9:30 p.m.
Message ID <->
Download mbox | patch
Permalink /patch/6344/
State Accepted
Headers show

Comments

Antony Pavlov - Jan. 13, 2014, 9:30 p.m.
In the worst case this adds less then 128 bytes of code
but on the other hand this makes code organization more clear.

Signed-off-by: Antony Pavlov <>
Reviewed-by: Florian Fainelli <>
Cc: 
Cc: Ralf Baechle <>
Cc: John Crispin <>
Cc: Florian Fainelli <>
---
 arch/mips/boot/compressed/Makefile     |  4 ++--
 arch/mips/boot/compressed/decompress.c | 22 ----------------------
 arch/mips/boot/compressed/string.c     | 28 ++++++++++++++++++++++++++++
 3 files changed, 30 insertions(+), 24 deletions(-)
 create mode 100644 arch/mips/boot/compressed/string.c
John Crispin - Jan. 13, 2014, 10:20 p.m.
Hi,

whats the difference between v3 and v2 ?

    John

On 13/01/2014 22:30, Antony Pavlov wrote:
> In the worst case this adds less then 128 bytes of code
> but on the other hand this makes code organization more clear.
>
> Signed-off-by: Antony Pavlov <>
> Reviewed-by: Florian Fainelli <>
> Cc: 
> Cc: Ralf Baechle <>
> Cc: John Crispin <>
> Cc: Florian Fainelli <>
> ---
>  arch/mips/boot/compressed/Makefile     |  4 ++--
>  arch/mips/boot/compressed/decompress.c | 22 ----------------------
>  arch/mips/boot/compressed/string.c     | 28 ++++++++++++++++++++++++++++
>  3 files changed, 30 insertions(+), 24 deletions(-)
>  create mode 100644 arch/mips/boot/compressed/string.c
>
> diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile
> index ca0c343..61af6b6 100644
> --- a/arch/mips/boot/compressed/Makefile
> +++ b/arch/mips/boot/compressed/Makefile
> @@ -27,10 +27,10 @@ KBUILD_AFLAGS := $(LINUXINCLUDE) $(KBUILD_AFLAGS) -D__ASSEMBLY__ \
>  	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
>  	-DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS)
>  
> -targets := head.o decompress.o dbg.o uart-16550.o uart-alchemy.o
> +targets := head.o decompress.o string.o dbg.o uart-16550.o uart-alchemy.o
>  
>  # decompressor objects (linked with vmlinuz)
> -vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/dbg.o
> +vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/dbg.o
>  
>  ifdef CONFIG_DEBUG_ZBOOT
>  vmlinuzobjs-$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550) += $(obj)/uart-16550.o
> diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c
> index a8c6fd6..c00c4dd 100644
> --- a/arch/mips/boot/compressed/decompress.c
> +++ b/arch/mips/boot/compressed/decompress.c
> @@ -43,33 +43,11 @@ void error(char *x)
>  /* activate the code for pre-boot environment */
>  #define STATIC static
>  
> -#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) || \
> -	defined(CONFIG_KERNEL_LZ4)
> -void *memcpy(void *dest, const void *src, size_t n)
> -{
> -	int i;
> -	const char *s = src;
> -	char *d = dest;
> -
> -	for (i = 0; i < n; i++)
> -		d[i] = s[i];
> -	return dest;
> -}
> -#endif
>  #ifdef CONFIG_KERNEL_GZIP
>  #include "../../../../lib/decompress_inflate.c"
>  #endif
>  
>  #ifdef CONFIG_KERNEL_BZIP2
> -void *memset(void *s, int c, size_t n)
> -{
> -	int i;
> -	char *ss = s;
> -
> -	for (i = 0; i < n; i++)
> -		ss[i] = c;
> -	return s;
> -}
>  #include "../../../../lib/decompress_bunzip2.c"
>  #endif
>  
> diff --git a/arch/mips/boot/compressed/string.c b/arch/mips/boot/compressed/string.c
> new file mode 100644
> index 0000000..9de9885
> --- /dev/null
> +++ b/arch/mips/boot/compressed/string.c
> @@ -0,0 +1,28 @@
> +/*
> + * arch/mips/boot/compressed/string.c
> + *
> + * Very small subset of simple string routines
> + */
> +
> +#include <linux/types.h>
> +
> +void *memcpy(void *dest, const void *src, size_t n)
> +{
> +	int i;
> +	const char *s = src;
> +	char *d = dest;
> +
> +	for (i = 0; i < n; i++)
> +		d[i] = s[i];
> +	return dest;
> +}
> +
> +void *memset(void *s, int c, size_t n)
> +{
> +	int i;
> +	char *ss = s;
> +
> +	for (i = 0; i < n; i++)
> +		ss[i] = c;
> +	return s;
> +}
Florian Fainelli - Jan. 14, 2014, 5:26 a.m.
2014/1/13 Antony Pavlov <>:
> On Mon, 13 Jan 2014 23:20:21 +0100
> John Crispin <> wrote:
>
>> Hi,
>>
>> whats the difference between v3 and v2 ?
>>
>
> I have planned to make just "PATCH v2 RESEND" (I don't see any reaction
> on PATCH v2 since October 2013),
> but Florian noted that I can use '#include <linux/types.h>' insted of '#
> include <linux/string.h>' in arch/mips/boot/compressed/string.c
> (see http://www.linux-mips.org/archives/linux-mips/2013-09/msg00337.html).
>
> So I have fixed this minor issue in v3.

This final version looks good to me:

Acked-by: Florian Fainelli <>

>
>>     John
>>
>> On 13/01/2014 22:30, Antony Pavlov wrote:
>> > In the worst case this adds less then 128 bytes of code
>> > but on the other hand this makes code organization more clear.
>> >
>> > Signed-off-by: Antony Pavlov <>
>> > Reviewed-by: Florian Fainelli <>
>> > Cc: 
>> > Cc: Ralf Baechle <>
>> > Cc: John Crispin <>
>> > Cc: Florian Fainelli <>
>> > ---
>> >  arch/mips/boot/compressed/Makefile     |  4 ++--
>> >  arch/mips/boot/compressed/decompress.c | 22 ----------------------
>> >  arch/mips/boot/compressed/string.c     | 28 ++++++++++++++++++++++++++++
>> >  3 files changed, 30 insertions(+), 24 deletions(-)
>> >  create mode 100644 arch/mips/boot/compressed/string.c
>> >
>> > diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile
>> > index ca0c343..61af6b6 100644
>> > --- a/arch/mips/boot/compressed/Makefile
>> > +++ b/arch/mips/boot/compressed/Makefile
>> > @@ -27,10 +27,10 @@ KBUILD_AFLAGS := $(LINUXINCLUDE) $(KBUILD_AFLAGS) -D__ASSEMBLY__ \
>> >     -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
>> >     -DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS)
>> >
>> > -targets := head.o decompress.o dbg.o uart-16550.o uart-alchemy.o
>> > +targets := head.o decompress.o string.o dbg.o uart-16550.o uart-alchemy.o
>> >
>> >  # decompressor objects (linked with vmlinuz)
>> > -vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/dbg.o
>> > +vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/dbg.o
>> >
>> >  ifdef CONFIG_DEBUG_ZBOOT
>> >  vmlinuzobjs-$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550) += $(obj)/uart-16550.o
>> > diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c
>> > index a8c6fd6..c00c4dd 100644
>> > --- a/arch/mips/boot/compressed/decompress.c
>> > +++ b/arch/mips/boot/compressed/decompress.c
>> > @@ -43,33 +43,11 @@ void error(char *x)
>> >  /* activate the code for pre-boot environment */
>> >  #define STATIC static
>> >
>> > -#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) || \
>> > -   defined(CONFIG_KERNEL_LZ4)
>> > -void *memcpy(void *dest, const void *src, size_t n)
>> > -{
>> > -   int i;
>> > -   const char *s = src;
>> > -   char *d = dest;
>> > -
>> > -   for (i = 0; i < n; i++)
>> > -           d[i] = s[i];
>> > -   return dest;
>> > -}
>> > -#endif
>> >  #ifdef CONFIG_KERNEL_GZIP
>> >  #include "../../../../lib/decompress_inflate.c"
>> >  #endif
>> >
>> >  #ifdef CONFIG_KERNEL_BZIP2
>> > -void *memset(void *s, int c, size_t n)
>> > -{
>> > -   int i;
>> > -   char *ss = s;
>> > -
>> > -   for (i = 0; i < n; i++)
>> > -           ss[i] = c;
>> > -   return s;
>> > -}
>> >  #include "../../../../lib/decompress_bunzip2.c"
>> >  #endif
>> >
>> > diff --git a/arch/mips/boot/compressed/string.c b/arch/mips/boot/compressed/string.c
>> > new file mode 100644
>> > index 0000000..9de9885
>> > --- /dev/null
>> > +++ b/arch/mips/boot/compressed/string.c
>> > @@ -0,0 +1,28 @@
>> > +/*
>> > + * arch/mips/boot/compressed/string.c
>> > + *
>> > + * Very small subset of simple string routines
>> > + */
>> > +
>> > +#include <linux/types.h>
>> > +
>> > +void *memcpy(void *dest, const void *src, size_t n)
>> > +{
>> > +   int i;
>> > +   const char *s = src;
>> > +   char *d = dest;
>> > +
>> > +   for (i = 0; i < n; i++)
>> > +           d[i] = s[i];
>> > +   return dest;
>> > +}
>> > +
>> > +void *memset(void *s, int c, size_t n)
>> > +{
>> > +   int i;
>> > +   char *ss = s;
>> > +
>> > +   for (i = 0; i < n; i++)
>> > +           ss[i] = c;
>> > +   return s;
>> > +}
>>
>>
>
>
> --
> --
> Best regards,
>   Antony Pavlov
>
Antony Pavlov - Jan. 14, 2014, 5:31 a.m.
On Mon, 13 Jan 2014 23:20:21 +0100
John Crispin <> wrote:

> Hi,
> 
> whats the difference between v3 and v2 ?
> 

I have planned to make just "PATCH v2 RESEND" (I don't see any reaction
on PATCH v2 since October 2013), 
but Florian noted that I can use '#include <linux/types.h>' insted of '#
include <linux/string.h>' in arch/mips/boot/compressed/string.c
(see http://www.linux-mips.org/archives/linux-mips/2013-09/msg00337.html).

So I have fixed this minor issue in v3.

>     John
> 
> On 13/01/2014 22:30, Antony Pavlov wrote:
> > In the worst case this adds less then 128 bytes of code
> > but on the other hand this makes code organization more clear.
> >
> > Signed-off-by: Antony Pavlov <>
> > Reviewed-by: Florian Fainelli <>
> > Cc: 
> > Cc: Ralf Baechle <>
> > Cc: John Crispin <>
> > Cc: Florian Fainelli <>
> > ---
> >  arch/mips/boot/compressed/Makefile     |  4 ++--
> >  arch/mips/boot/compressed/decompress.c | 22 ----------------------
> >  arch/mips/boot/compressed/string.c     | 28 ++++++++++++++++++++++++++++
> >  3 files changed, 30 insertions(+), 24 deletions(-)
> >  create mode 100644 arch/mips/boot/compressed/string.c
> >
> > diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile
> > index ca0c343..61af6b6 100644
> > --- a/arch/mips/boot/compressed/Makefile
> > +++ b/arch/mips/boot/compressed/Makefile
> > @@ -27,10 +27,10 @@ KBUILD_AFLAGS := $(LINUXINCLUDE) $(KBUILD_AFLAGS) -D__ASSEMBLY__ \
> >  	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
> >  	-DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS)
> >  
> > -targets := head.o decompress.o dbg.o uart-16550.o uart-alchemy.o
> > +targets := head.o decompress.o string.o dbg.o uart-16550.o uart-alchemy.o
> >  
> >  # decompressor objects (linked with vmlinuz)
> > -vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/dbg.o
> > +vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/dbg.o
> >  
> >  ifdef CONFIG_DEBUG_ZBOOT
> >  vmlinuzobjs-$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550) += $(obj)/uart-16550.o
> > diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c
> > index a8c6fd6..c00c4dd 100644
> > --- a/arch/mips/boot/compressed/decompress.c
> > +++ b/arch/mips/boot/compressed/decompress.c
> > @@ -43,33 +43,11 @@ void error(char *x)
> >  /* activate the code for pre-boot environment */
> >  #define STATIC static
> >  
> > -#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) || \
> > -	defined(CONFIG_KERNEL_LZ4)
> > -void *memcpy(void *dest, const void *src, size_t n)
> > -{
> > -	int i;
> > -	const char *s = src;
> > -	char *d = dest;
> > -
> > -	for (i = 0; i < n; i++)
> > -		d[i] = s[i];
> > -	return dest;
> > -}
> > -#endif
> >  #ifdef CONFIG_KERNEL_GZIP
> >  #include "../../../../lib/decompress_inflate.c"
> >  #endif
> >  
> >  #ifdef CONFIG_KERNEL_BZIP2
> > -void *memset(void *s, int c, size_t n)
> > -{
> > -	int i;
> > -	char *ss = s;
> > -
> > -	for (i = 0; i < n; i++)
> > -		ss[i] = c;
> > -	return s;
> > -}
> >  #include "../../../../lib/decompress_bunzip2.c"
> >  #endif
> >  
> > diff --git a/arch/mips/boot/compressed/string.c b/arch/mips/boot/compressed/string.c
> > new file mode 100644
> > index 0000000..9de9885
> > --- /dev/null
> > +++ b/arch/mips/boot/compressed/string.c
> > @@ -0,0 +1,28 @@
> > +/*
> > + * arch/mips/boot/compressed/string.c
> > + *
> > + * Very small subset of simple string routines
> > + */
> > +
> > +#include <linux/types.h>
> > +
> > +void *memcpy(void *dest, const void *src, size_t n)
> > +{
> > +	int i;
> > +	const char *s = src;
> > +	char *d = dest;
> > +
> > +	for (i = 0; i < n; i++)
> > +		d[i] = s[i];
> > +	return dest;
> > +}
> > +
> > +void *memset(void *s, int c, size_t n)
> > +{
> > +	int i;
> > +	char *ss = s;
> > +
> > +	for (i = 0; i < n; i++)
> > +		ss[i] = c;
> > +	return s;
> > +}
> 
>
Antony Pavlov - Jan. 14, 2014, 7:05 a.m.
On Tue, 14 Jan 2014 01:30:56 +0400
Antony Pavlov <> wrote:

> In the worst case this adds less then 128 bytes of code

Sorry! I see a typo here.
Please change "then" to "than" before applying.

> but on the other hand this makes code organization more clear.
> 
> Signed-off-by: Antony Pavlov <>
> Reviewed-by: Florian Fainelli <>
> Cc: 
> Cc: Ralf Baechle <>
> Cc: John Crispin <>
> Cc: Florian Fainelli <>
> ---
>  arch/mips/boot/compressed/Makefile     |  4 ++--
>  arch/mips/boot/compressed/decompress.c | 22 ----------------------
>  arch/mips/boot/compressed/string.c     | 28 ++++++++++++++++++++++++++++
>  3 files changed, 30 insertions(+), 24 deletions(-)
>  create mode 100644 arch/mips/boot/compressed/string.c
> 
> diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile
> index ca0c343..61af6b6 100644
> --- a/arch/mips/boot/compressed/Makefile
> +++ b/arch/mips/boot/compressed/Makefile
> @@ -27,10 +27,10 @@ KBUILD_AFLAGS := $(LINUXINCLUDE) $(KBUILD_AFLAGS) -D__ASSEMBLY__ \
>  	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
>  	-DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS)
>  
> -targets := head.o decompress.o dbg.o uart-16550.o uart-alchemy.o
> +targets := head.o decompress.o string.o dbg.o uart-16550.o uart-alchemy.o
>  
>  # decompressor objects (linked with vmlinuz)
> -vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/dbg.o
> +vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/dbg.o
>  
>  ifdef CONFIG_DEBUG_ZBOOT
>  vmlinuzobjs-$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550) += $(obj)/uart-16550.o
> diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c
> index a8c6fd6..c00c4dd 100644
> --- a/arch/mips/boot/compressed/decompress.c
> +++ b/arch/mips/boot/compressed/decompress.c
> @@ -43,33 +43,11 @@ void error(char *x)
>  /* activate the code for pre-boot environment */
>  #define STATIC static
>  
> -#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) || \
> -	defined(CONFIG_KERNEL_LZ4)
> -void *memcpy(void *dest, const void *src, size_t n)
> -{
> -	int i;
> -	const char *s = src;
> -	char *d = dest;
> -
> -	for (i = 0; i < n; i++)
> -		d[i] = s[i];
> -	return dest;
> -}
> -#endif
>  #ifdef CONFIG_KERNEL_GZIP
>  #include "../../../../lib/decompress_inflate.c"
>  #endif
>  
>  #ifdef CONFIG_KERNEL_BZIP2
> -void *memset(void *s, int c, size_t n)
> -{
> -	int i;
> -	char *ss = s;
> -
> -	for (i = 0; i < n; i++)
> -		ss[i] = c;
> -	return s;
> -}
>  #include "../../../../lib/decompress_bunzip2.c"
>  #endif
>  
> diff --git a/arch/mips/boot/compressed/string.c b/arch/mips/boot/compressed/string.c
> new file mode 100644
> index 0000000..9de9885
> --- /dev/null
> +++ b/arch/mips/boot/compressed/string.c
> @@ -0,0 +1,28 @@
> +/*
> + * arch/mips/boot/compressed/string.c
> + *
> + * Very small subset of simple string routines
> + */
> +
> +#include <linux/types.h>
> +
> +void *memcpy(void *dest, const void *src, size_t n)
> +{
> +	int i;
> +	const char *s = src;
> +	char *d = dest;
> +
> +	for (i = 0; i < n; i++)
> +		d[i] = s[i];
> +	return dest;
> +}
> +
> +void *memset(void *s, int c, size_t n)
> +{
> +	int i;
> +	char *ss = s;
> +
> +	for (i = 0; i < n; i++)
> +		ss[i] = c;
> +	return s;
> +}
> -- 
> 1.8.5.2
>

Patch

diff --git a/arch/mips/boot/compressed/Makefile b/arch/mips/boot/compressed/Makefile
index ca0c343..61af6b6 100644
--- a/arch/mips/boot/compressed/Makefile
+++ b/arch/mips/boot/compressed/Makefile
@@ -27,10 +27,10 @@  KBUILD_AFLAGS := $(LINUXINCLUDE) $(KBUILD_AFLAGS) -D__ASSEMBLY__ \
 	-DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \
 	-DKERNEL_ENTRY=$(VMLINUX_ENTRY_ADDRESS)
 
-targets := head.o decompress.o dbg.o uart-16550.o uart-alchemy.o
+targets := head.o decompress.o string.o dbg.o uart-16550.o uart-alchemy.o
 
 # decompressor objects (linked with vmlinuz)
-vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/dbg.o
+vmlinuzobjs-y := $(obj)/head.o $(obj)/decompress.o $(obj)/string.o $(obj)/dbg.o
 
 ifdef CONFIG_DEBUG_ZBOOT
 vmlinuzobjs-$(CONFIG_SYS_SUPPORTS_ZBOOT_UART16550) += $(obj)/uart-16550.o
diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c
index a8c6fd6..c00c4dd 100644
--- a/arch/mips/boot/compressed/decompress.c
+++ b/arch/mips/boot/compressed/decompress.c
@@ -43,33 +43,11 @@  void error(char *x)
 /* activate the code for pre-boot environment */
 #define STATIC static
 
-#if defined(CONFIG_KERNEL_GZIP) || defined(CONFIG_KERNEL_XZ) || \
-	defined(CONFIG_KERNEL_LZ4)
-void *memcpy(void *dest, const void *src, size_t n)
-{
-	int i;
-	const char *s = src;
-	char *d = dest;
-
-	for (i = 0; i < n; i++)
-		d[i] = s[i];
-	return dest;
-}
-#endif
 #ifdef CONFIG_KERNEL_GZIP
 #include "../../../../lib/decompress_inflate.c"
 #endif
 
 #ifdef CONFIG_KERNEL_BZIP2
-void *memset(void *s, int c, size_t n)
-{
-	int i;
-	char *ss = s;
-
-	for (i = 0; i < n; i++)
-		ss[i] = c;
-	return s;
-}
 #include "../../../../lib/decompress_bunzip2.c"
 #endif
 
diff --git a/arch/mips/boot/compressed/string.c b/arch/mips/boot/compressed/string.c
new file mode 100644
index 0000000..9de9885
--- /dev/null
+++ b/arch/mips/boot/compressed/string.c
@@ -0,0 +1,28 @@ 
+/*
+ * arch/mips/boot/compressed/string.c
+ *
+ * Very small subset of simple string routines
+ */
+
+#include <linux/types.h>
+
+void *memcpy(void *dest, const void *src, size_t n)
+{
+	int i;
+	const char *s = src;
+	char *d = dest;
+
+	for (i = 0; i < n; i++)
+		d[i] = s[i];
+	return dest;
+}
+
+void *memset(void *s, int c, size_t n)
+{
+	int i;
+	char *ss = s;
+
+	for (i = 0; i < n; i++)
+		ss[i] = c;
+	return s;
+}