Commit cdce1f09 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'link_removal' of git://www.jni.nu/cris

* 'link_removal' of git://www.jni.nu/cris:
  [CRIS] Remove links from CRIS build
  [CRIS] Merge asm-offsets.c for both arches into one file.
parents 0242909a c5ec6fb0
...@@ -23,7 +23,8 @@ mach-$(CONFIG_ETRAXFS) := fs ...@@ -23,7 +23,8 @@ mach-$(CONFIG_ETRAXFS) := fs
ifneq ($(arch-y),) ifneq ($(arch-y),)
SARCH := arch-$(arch-y) SARCH := arch-$(arch-y)
inc := -Iarch/cris/include/arch-$(arch-y) -Iarch/cris/include/arch-$(arch-y)/arch inc := -Iarch/cris/include/$(SARCH)
inc += -Iarch/cris/include/$(SARCH)/arch
else else
SARCH := SARCH :=
inc := inc :=
...@@ -52,74 +53,48 @@ KBUILD_CFLAGS := $(subst -fomit-frame-pointer,,$(KBUILD_CFLAGS)) -g ...@@ -52,74 +53,48 @@ KBUILD_CFLAGS := $(subst -fomit-frame-pointer,,$(KBUILD_CFLAGS)) -g
KBUILD_CFLAGS += -fno-omit-frame-pointer KBUILD_CFLAGS += -fno-omit-frame-pointer
endif endif
head-y := arch/$(ARCH)/$(SARCH)/kernel/head.o head-y := arch/cris/$(SARCH)/kernel/head.o
LIBGCC = $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libgcc.a) LIBGCC = $(shell $(CC) $(KBUILD_CFLAGS) -print-file-name=libgcc.a)
core-y += arch/$(ARCH)/kernel/ arch/$(ARCH)/mm/ core-y += arch/cris/kernel/ arch/cris/mm/
core-y += arch/$(ARCH)/$(SARCH)/kernel/ arch/$(ARCH)/$(SARCH)/mm/ core-y += arch/cris/$(SARCH)/kernel/ arch/cris/$(SARCH)/mm/
ifdef CONFIG_ETRAX_ARCH_V32 ifdef CONFIG_ETRAX_ARCH_V32
core-y += arch/$(ARCH)/$(SARCH)/$(MACH)/ core-y += arch/cris/$(SARCH)/$(MACH)/
endif endif
drivers-y += arch/$(ARCH)/$(SARCH)/drivers/ drivers-y += arch/cris/$(SARCH)/drivers/
libs-y += arch/$(ARCH)/$(SARCH)/lib/ $(LIBGCC) libs-y += arch/cris/$(SARCH)/lib/ $(LIBGCC)
# cris source path # cris source path
SRC_ARCH = $(srctree)/arch/$(ARCH) SRC_ARCH = $(srctree)/arch/cris
# cris object files path # cris object files path
OBJ_ARCH = $(objtree)/arch/$(ARCH) OBJ_ARCH = $(objtree)/arch/cris
boot := arch/$(ARCH)/boot boot := arch/cris/$(SARCH)/boot
MACHINE := arch/$(ARCH)/$(SARCH) MACHINE := arch/cris/$(SARCH)
all: zImage all: zImage
zImage Image: vmlinux zImage Image: vmlinux
$(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
archprepare: $(SRC_ARCH)/.links FORCE archprepare:
# Create some links to make all tools happy
$(SRC_ARCH)/.links:
@rm -rf $(SRC_ARCH)/drivers
@ln -sfn $(SARCH)/drivers $(SRC_ARCH)/drivers
@rm -rf $(SRC_ARCH)/boot
@ln -sfn $(SARCH)/boot $(SRC_ARCH)/boot
@rm -rf $(SRC_ARCH)/lib
@ln -sfn $(SARCH)/lib $(SRC_ARCH)/lib
@rm -f $(SRC_ARCH)/arch/mach
@rm -rf $(SRC_ARCH)/arch
@ln -sfn $(SARCH) $(SRC_ARCH)/arch
ifdef CONFIG_ETRAX_ARCH_V32
@ln -sfn ../$(SARCH)/$(MACH) $(SRC_ARCH)/arch/mach
endif
@rm -rf $(SRC_ARCH)/kernel/vmlinux.lds.S
@ln -sfn ../$(SARCH)/vmlinux.lds.S $(SRC_ARCH)/kernel/vmlinux.lds.S
@rm -rf $(SRC_ARCH)/kernel/asm-offsets.c
@ln -sfn ../$(SARCH)/kernel/asm-offsets.c $(SRC_ARCH)/kernel/asm-offsets.c
@touch $@
archclean: archclean:
$(Q)if [ -e arch/$(ARCH)/boot ]; then \ $(Q)if [ -e arch/cris/$(SARCH)/boot ]; then \
$(MAKE) $(clean)=arch/$(ARCH)/boot; \ $(MAKE) $(clean)=arch/cris/$(SARCH)/boot; \
fi fi
CLEAN_FILES += \ CLEAN_FILES += \
$(MACHINE)/boot/zImage \ $(MACHINE)/boot/zImage \
$(MACHINE)/boot/compressed/decompress.bin \ $(MACHINE)/boot/compressed/decompress.bin \
$(MACHINE)/boot/compressed/piggy.gz \ $(MACHINE)/boot/compressed/piggy.gz \
$(MACHINE)/boot/rescue/rescue.bin \ $(MACHINE)/boot/rescue/rescue.bin
$(SRC_ARCH)/.links
MRPROPER_FILES += \ # MRPROPER_FILES +=
$(SRC_ARCH)/drivers \
$(SRC_ARCH)/boot \
$(SRC_ARCH)/lib \
$(SRC_ARCH)/arch \
$(SRC_ARCH)/kernel/vmlinux.lds.S \
$(SRC_ARCH)/kernel/asm-offsets.c
define archhelp define archhelp
echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)' echo '* zImage - Compressed kernel image (arch/cris/boot/zImage)'
echo '* Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' echo '* Image - Uncompressed kernel image (arch/cris/boot/Image)'
endef endef
#include <linux/sched.h>
#include <asm/thread_info.h>
/*
* Generate definitions needed by assembly language modules.
* This code generates raw asm output which is post-processed to extract
* and format the required data.
*/
#define DEFINE(sym, val) \
asm volatile("\n->" #sym " %0 " #val : : "i" (val))
#define BLANK() asm volatile("\n->" : : )
int main(void)
{
#define ENTRY(entry) DEFINE(PT_ ## entry, offsetof(struct pt_regs, entry))
ENTRY(orig_r10);
ENTRY(r13);
ENTRY(r12);
ENTRY(r11);
ENTRY(r10);
ENTRY(r9);
ENTRY(mof);
ENTRY(dccr);
ENTRY(srp);
BLANK();
#undef ENTRY
#define ENTRY(entry) DEFINE(TI_ ## entry, offsetof(struct thread_info, entry))
ENTRY(task);
ENTRY(flags);
ENTRY(preempt_count);
BLANK();
#undef ENTRY
#define ENTRY(entry) DEFINE(THREAD_ ## entry, offsetof(struct thread_struct, entry))
ENTRY(ksp);
ENTRY(usp);
ENTRY(dccr);
BLANK();
#undef ENTRY
#define ENTRY(entry) DEFINE(TASK_ ## entry, offsetof(struct task_struct, entry))
ENTRY(pid);
BLANK();
DEFINE(LCLONE_VM, CLONE_VM);
DEFINE(LCLONE_UNTRACED, CLONE_UNTRACED);
return 0;
}
/* ld script to make the Linux/CRIS kernel
* Authors: Bjorn Wesen (bjornw@axis.com)
*
* It is VERY DANGEROUS to fiddle around with the symbols in this
* script. It is for example quite vital that all generated sections
* that are used are actually named here, otherwise the linker will
* put them at the end, where the init stuff is which is FREED after
* the kernel has booted.
*/
#include <asm-generic/vmlinux.lds.h>
#include <asm/page.h>
jiffies = jiffies_64;
SECTIONS
{
. = DRAM_VIRTUAL_BASE;
dram_start = .;
ibr_start = .;
. = . + 0x4000; /* see head.S and pages reserved at the start */
_text = .; /* Text and read-only data */
text_start = .; /* lots of aliases */
_stext = .;
__stext = .;
.text : {
TEXT_TEXT
SCHED_TEXT
LOCK_TEXT
*(.fixup)
*(.text.__*)
}
_etext = . ; /* End of text section */
__etext = .;
. = ALIGN(4); /* Exception table */
__start___ex_table = .;
__ex_table : { *(__ex_table) }
__stop___ex_table = .;
RODATA
. = ALIGN (4);
___data_start = . ;
__Sdata = . ;
.data : { /* Data */
DATA_DATA
}
__edata = . ; /* End of data section */
_edata = . ;
. = ALIGN(PAGE_SIZE); /* init_task and stack, must be aligned */
.data.init_task : { *(.data.init_task) }
. = ALIGN(PAGE_SIZE); /* Init code and data */
__init_begin = .;
.init.text : {
_sinittext = .;
INIT_TEXT
_einittext = .;
}
.init.data : { INIT_DATA }
. = ALIGN(16);
__setup_start = .;
.init.setup : { *(.init.setup) }
__setup_end = .;
.initcall.init : {
__initcall_start = .;
INITCALLS
__initcall_end = .;
}
.con_initcall.init : {
__con_initcall_start = .;
*(.con_initcall.init)
__con_initcall_end = .;
}
SECURITY_INIT
#ifdef CONFIG_BLK_DEV_INITRD
.init.ramfs : {
__initramfs_start = .;
*(.init.ramfs)
__initramfs_end = .;
}
#endif
__vmlinux_end = .; /* last address of the physical file */
/*
* We fill to the next page, so we can discard all init
* pages without needing to consider what payload might be
* appended to the kernel image.
*/
. = ALIGN(PAGE_SIZE);
__init_end = .;
__data_end = . ; /* Move to _edata ? */
__bss_start = .; /* BSS */
.bss : {
*(COMMON)
*(.bss)
}
. = ALIGN (0x20);
_end = .;
__end = .;
/* Sections to be discarded */
/DISCARD/ : {
EXIT_TEXT
EXIT_DATA
*(.exitcall.exit)
}
dram_end = dram_start + CONFIG_ETRAX_DRAM_SIZE*1024*1024;
}
...@@ -28,7 +28,13 @@ _start: ...@@ -28,7 +28,13 @@ _start:
beq dram_init_finished beq dram_init_finished
nop nop
#include "../../mach/dram_init.S" #if defined CONFIG_ETRAXFS
#include "../../mach-fs/dram_init.S"
#elif defined CONFIG_CRIS_MACH_ARTPEC3
#include "../../mach-a3/dram_init.S"
#else
#error Only ETRAXFS and ARTPEC-3 supported!
#endif
dram_init_finished: dram_init_finished:
...@@ -130,4 +136,10 @@ _cmd_line_addr: ...@@ -130,4 +136,10 @@ _cmd_line_addr:
_boot_source: _boot_source:
.dword 0 .dword 0
#include "../../mach/hw_settings.S" #if defined CONFIG_ETRAXFS
#include "../../mach-fs/hw_settings.S"
#elif defined CONFIG_CRIS_MACH_ARTPEC3
#include "../../mach-a3/hw_settings.S"
#else
#error Only ETRAXFS and ARTPEC-3 supported!
#endif
...@@ -10,8 +10,9 @@ ...@@ -10,8 +10,9 @@
* The macros found in mmu_defs_asm.h uses the ## concatenation operator, so * The macros found in mmu_defs_asm.h uses the ## concatenation operator, so
* -traditional must not be used when assembling this file. * -traditional must not be used when assembling this file.
*/ */
#include <hwregs/reg_rdwr.h> #include <linux/autoconf.h>
#include <arch/memmap.h> #include <arch/memmap.h>
#include <hwregs/reg_rdwr.h>
#include <hwregs/intr_vect.h> #include <hwregs/intr_vect.h>
#include <hwregs/asm/mmu_defs_asm.h> #include <hwregs/asm/mmu_defs_asm.h>
#include <hwregs/asm/reg_map_asm.h> #include <hwregs/asm/reg_map_asm.h>
...@@ -217,7 +218,14 @@ _inflash: ...@@ -217,7 +218,14 @@ _inflash:
beq _dram_initialized beq _dram_initialized
nop nop
#include "../mach/dram_init.S" #if defined CONFIG_ETRAXFS
#include "../mach-fs/dram_init.S"
#elif defined CONFIG_CRIS_MACH_ARTPEC3
#include "../mach-a3/dram_init.S"
#else
#error Only ETRAXFS and ARTPEC-3 supported!
#endif
_dram_initialized: _dram_initialized:
;; Copy the text and data section to DRAM. This depends on that the ;; Copy the text and data section to DRAM. This depends on that the
...@@ -472,4 +480,10 @@ swapper_pg_dir = 0xc0002000 ...@@ -472,4 +480,10 @@ swapper_pg_dir = 0xc0002000
.section ".init.data", "aw" .section ".init.data", "aw"
#include "../mach/hw_settings.S" #if defined CONFIG_ETRAXFS
#include "../mach-fs/hw_settings.S"
#elif defined CONFIG_CRIS_MACH_ARTPEC3
#include "../mach-a3/hw_settings.S"
#else
#error Only ETRAXFS and ARTPEC-3 supported!
#endif
#include <linux/sched.h> #include <linux/sched.h>
#include <asm/thread_info.h> #include <asm/thread_info.h>
#include <linux/autoconf.h>
/* /*
* Generate definitions needed by assembly language modules. * Generate definitions needed by assembly language modules.
...@@ -8,10 +9,14 @@ ...@@ -8,10 +9,14 @@
*/ */
#define DEFINE(sym, val) \ #define DEFINE(sym, val) \
asm volatile("\n->" #sym " %0 " #val : : "i" (val)) asm volatile("\n->" #sym " %0 " #val : : "i" (val))
#define BLANK() asm volatile("\n->" : : ) #define BLANK() asm volatile("\n->" : : )
#if !defined(CONFIG_ETRAX_ARCH_V10) && !defined(CONFIG_ETRAX_ARCH_V32)
#error One of ARCH v10 and ARCH v32 must be true!
#endif
int main(void) int main(void)
{ {
#define ENTRY(entry) DEFINE(PT_ ## entry, offsetof(struct pt_regs, entry)) #define ENTRY(entry) DEFINE(PT_ ## entry, offsetof(struct pt_regs, entry))
...@@ -19,31 +24,41 @@ int main(void) ...@@ -19,31 +24,41 @@ int main(void)
ENTRY(r13); ENTRY(r13);
ENTRY(r12); ENTRY(r12);
ENTRY(r11); ENTRY(r11);
ENTRY(r10); ENTRY(r10);
ENTRY(r9); ENTRY(r9);
#ifdef CONFIG_ETRAX_ARCH_V32
ENTRY(acr); ENTRY(acr);
ENTRY(srs); ENTRY(srs);
ENTRY(mof); #endif
ENTRY(ccs); ENTRY(mof);
ENTRY(srp); #ifdef CONFIG_ETRAX_ARCH_V10
ENTRY(dccr);
#else
ENTRY(ccs);
#endif
ENTRY(srp);
BLANK(); BLANK();
#undef ENTRY #undef ENTRY
#define ENTRY(entry) DEFINE(TI_ ## entry, offsetof(struct thread_info, entry)) #define ENTRY(entry) DEFINE(TI_ ## entry, offsetof(struct thread_info, entry))
ENTRY(task); ENTRY(task);
ENTRY(flags); ENTRY(flags);
ENTRY(preempt_count); ENTRY(preempt_count);
BLANK(); BLANK();
#undef ENTRY #undef ENTRY
#define ENTRY(entry) DEFINE(THREAD_ ## entry, offsetof(struct thread_struct, entry)) #define ENTRY(entry) DEFINE(THREAD_ ## entry, offsetof(struct thread_struct, entry))
ENTRY(ksp); ENTRY(ksp);
ENTRY(usp); ENTRY(usp);
ENTRY(ccs); #ifdef CONFIG_ETRAX_ARCH_V10
BLANK(); ENTRY(dccr);
#else
ENTRY(ccs);
#endif
BLANK();
#undef ENTRY #undef ENTRY
#define ENTRY(entry) DEFINE(TASK_ ## entry, offsetof(struct task_struct, entry)) #define ENTRY(entry) DEFINE(TASK_ ## entry, offsetof(struct task_struct, entry))
ENTRY(pid); ENTRY(pid);
BLANK(); BLANK();
DEFINE(LCLONE_VM, CLONE_VM); DEFINE(LCLONE_VM, CLONE_VM);
DEFINE(LCLONE_UNTRACED, CLONE_UNTRACED); DEFINE(LCLONE_UNTRACED, CLONE_UNTRACED);
return 0; return 0;
} }
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
* the kernel has booted. * the kernel has booted.
*/ */
#include <linux/autoconf.h>
#include <asm-generic/vmlinux.lds.h> #include <asm-generic/vmlinux.lds.h>
#include <asm/page.h> #include <asm/page.h>
...@@ -17,22 +18,26 @@ ...@@ -17,22 +18,26 @@
#define __CONFIG_ETRAX_VMEM_SIZE 0 #define __CONFIG_ETRAX_VMEM_SIZE 0
#endif #endif
jiffies = jiffies_64; jiffies = jiffies_64;
SECTIONS SECTIONS
{ {
. = DRAM_VIRTUAL_BASE; . = DRAM_VIRTUAL_BASE;
dram_start = .; dram_start = .;
#ifdef CONFIG_ETRAX_ARCH_V10
ibr_start = .;
#else
ebp_start = .; ebp_start = .;
/* The boot section is only necessary until the VCS top */ /* The boot section is only necessary until the VCS top */
/* level testbench includes both flash and DRAM. */ /* level testbench includes both flash and DRAM. */
.boot : { *(.boot) } .boot : { *(.boot) }
#endif
/* See head.S and pages reserved at the start. */ /* see head.S and pages reserved at the start */
. = DRAM_VIRTUAL_BASE + 0x4000; . = DRAM_VIRTUAL_BASE + 0x4000;
_text = .; /* Text and read-only data. */ _text = .; /* Text and read-only data. */
text_start = .; /* Lots of aliases. */ text_start = .; /* Lots of aliases. */
_stext = .; _stext = .;
__stext = .; __stext = .;
.text : { .text : {
...@@ -43,10 +48,10 @@ SECTIONS ...@@ -43,10 +48,10 @@ SECTIONS
*(.text.__*) *(.text.__*)
} }
_etext = . ; /* End of text section. */ _etext = . ; /* End of text section. */
__etext = .; __etext = .;
. = ALIGN(4); /* Exception table. */ . = ALIGN(4); /* Exception table. */
__start___ex_table = .; __start___ex_table = .;
__ex_table : { *(__ex_table) } __ex_table : { *(__ex_table) }
__stop___ex_table = .; __stop___ex_table = .;
...@@ -56,16 +61,16 @@ SECTIONS ...@@ -56,16 +61,16 @@ SECTIONS
. = ALIGN (4); . = ALIGN (4);
___data_start = . ; ___data_start = . ;
__Sdata = . ; __Sdata = . ;
.data : { /* Data */ .data : { /* Data */
DATA_DATA DATA_DATA
} }
__edata = . ; /* End of data section. */ __edata = . ; /* End of data section. */
_edata = . ; _edata = . ;
. = ALIGN(PAGE_SIZE); /* init_task and stack, must be aligned. */ . = ALIGN(PAGE_SIZE); /* init_task and stack, must be aligned. */
.data.init_task : { *(.data.init_task) } .data.init_task : { *(.data.init_task) }
. = ALIGN(PAGE_SIZE); /* Init code and data. */ . = ALIGN(PAGE_SIZE); /* Init code and data. */
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
...@@ -77,9 +82,11 @@ SECTIONS ...@@ -77,9 +82,11 @@ SECTIONS
__setup_start = .; __setup_start = .;
.init.setup : { *(.init.setup) } .init.setup : { *(.init.setup) }
__setup_end = .; __setup_end = .;
#ifdef CONFIG_ETRAX_ARCH_V32
__start___param = .; __start___param = .;
__param : { *(__param) } __param : { *(__param) }
__stop___param = .; __stop___param = .;
#endif
.initcall.init : { .initcall.init : {
__initcall_start = .; __initcall_start = .;
INITCALLS INITCALLS
...@@ -93,7 +100,17 @@ SECTIONS ...@@ -93,7 +100,17 @@ SECTIONS
} }
SECURITY_INIT SECURITY_INIT
__vmlinux_end = .; /* Last address of the physical file. */ #ifdef CONFIG_ETRAX_ARCH_V10
#ifdef CONFIG_BLK_DEV_INITRD
.init.ramfs : {
__initramfs_start = .;
*(.init.ramfs)
__initramfs_end = .;
}
#endif
#endif
__vmlinux_end = .; /* Last address of the physical file. */
#ifdef CONFIG_ETRAX_ARCH_V32
PERCPU(PAGE_SIZE) PERCPU(PAGE_SIZE)
.init.ramfs : { .init.ramfs : {
...@@ -101,18 +118,19 @@ SECTIONS ...@@ -101,18 +118,19 @@ SECTIONS
*(.init.ramfs) *(.init.ramfs)
__initramfs_end = .; __initramfs_end = .;
} }
#endif
/* /*
* We fill to the next page, so we can discard all init * We fill to the next page, so we can discard all init
* pages without needing to consider what payload might be * pages without needing to consider what payload might be
* appended to the kernel image. * appended to the kernel image.
*/ */
. = ALIGN (PAGE_SIZE); . = ALIGN(PAGE_SIZE);
__init_end = .; __init_end = .;
__data_end = . ; /* Move to _edata? */ __data_end = . ; /* Move to _edata ? */
__bss_start = .; /* BSS. */ __bss_start = .; /* BSS. */
.bss : { .bss : {
*(COMMON) *(COMMON)
*(.bss) *(.bss)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment