Messages in this thread Patch in this message | | | Date | Sat, 24 Sep 2005 14:30:00 -0400 | From | Brian Gerst <> | Subject | [PATCH] Use .incbin for config_data.gz |
| |
Instead of creating config_data.h, use .incbin in inline assembly to directly include config_data.gz.
Signed-off-by: Brian Gerst <bgerst@didntduck.org> Subject: [PATCH] Use .incbin for config_data.gz
Instead of creating config_data.h, use .incbin in inline assembly to directly include config_data.gz.
Signed-off-by: Brian Gerst <bgerst@didntduck.org>
---
kernel/Makefile | 9 +-------- kernel/configs.c | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 13 deletions(-)
5674a0222370187dbe3401cb7a380c491a13f167 diff --git a/kernel/Makefile b/kernel/Makefile --- a/kernel/Makefile +++ b/kernel/Makefile @@ -41,16 +41,9 @@ ifneq ($(CONFIG_SCHED_NO_NO_OMIT_FRAME_P CFLAGS_sched.o := $(PROFILING) -fno-omit-frame-pointer endif -$(obj)/configs.o: $(obj)/config_data.h +$(obj)/configs.o: $(obj)/config_data.gz -# config_data.h contains the same information as ikconfig.h but gzipped. # Info from config_data can be extracted from /proc/config* targets += config_data.gz $(obj)/config_data.gz: .config FORCE $(call if_changed,gzip) - -quiet_cmd_ikconfiggz = IKCFG $@ - cmd_ikconfiggz = (echo "static const char kernel_config_data[] = MAGIC_START"; cat $< | scripts/bin2c; echo "MAGIC_END;") > $@ -targets += config_data.h -$(obj)/config_data.h: $(obj)/config_data.gz FORCE - $(call if_changed,ikconfiggz) diff --git a/kernel/configs.c b/kernel/configs.c --- a/kernel/configs.c +++ b/kernel/configs.c @@ -46,12 +46,20 @@ */ #define MAGIC_START "IKCFG_ST" #define MAGIC_END "IKCFG_ED" -#include "config_data.h" +asm( +".data\n" +" .ascii \"" MAGIC_START "\"\n" +"kernel_config_data:\n" +" .incbin \"kernel/config_data.gz\"\n" +"kernel_config_data_end:\n" +" .ascii \"" MAGIC_END "\"\n" +".previous\n" +); -#define MAGIC_SIZE (sizeof(MAGIC_START) - 1) -#define kernel_config_data_size \ - (sizeof(kernel_config_data) - 1 - MAGIC_SIZE * 2) +extern const char kernel_config_data[], kernel_config_data_end[]; + +#define kernel_config_data_size (kernel_config_data_end - kernel_config_data) #ifdef CONFIG_IKCONFIG_PROC @@ -69,7 +77,7 @@ ikconfig_read_current(struct file *file, return 0; count = min(len, (size_t)(kernel_config_data_size - pos)); - if (copy_to_user(buf, kernel_config_data + MAGIC_SIZE + pos, count)) + if (copy_to_user(buf, kernel_config_data + pos, count)) return -EFAULT; *offset += count; | |