Changeset 389f41e in mainline


Ignore:
Timestamp:
2005-11-08T11:57:23Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5f85c91
Parents:
5b65205
Message:

new build system almost finished

Files:
30 added
18 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    r5b65205 r389f41e  
    143143
    144144arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in
    145         $(CC) $(DEFS) $(CFLAGS) -E -x c $< | grep -v "^\#" > $@
     145        $(CC) $(DEFS) -DBFD=\"$(BFD)\" $(CFLAGS) -E -x c $< | grep -v "^\#" > $@
    146146
    147147generic/src/debug/real_map.bin: depend arch/$(ARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS)
  • arch/amd64/Makefile.inc

    r5b65205 r389f41e  
    3232BFD_NAME = elf64-x86-64
    3333BFD_ARCH = i386:x86-64
     34BFD = binary
    3435TARGET = amd64-linux-gnu
    3536TOOLCHAIN_DIR = /usr/local/amd64/bin
  • arch/amd64/_link.ld.in

    r5b65205 r389f41e  
    1313#include <arch/mm/page.h>
    1414
    15 OUTPUT_FORMAT(binary)
     15OUTPUT_FORMAT(BFD)
    1616ENTRY(kernel_image_start)
    1717
  • arch/amd64/boot/Makefile

    r5b65205 r389f41e  
    1 .PHONY: nothing build clean
    2 
    3 nothing:
     1.PHONY: build clean
    42
    53build: boot.bin
    64        dd if=boot.bin of=../../../image.bin bs=512 conv=sync
    7         -cat ../../../kernel.bin >>../../../image.bin
     5        -cat ../../../kernel.bin >> ../../../image.bin
    86        dd if=/dev/zero of=../../../image.bin bs=1 seek=1474559 count=1
    97
    108boot.bin: boot.o
    11         ld -T boot.ld -entry _start_0x7c00 --oformat binary boot.o -o $@
     9        $(LD) -T boot.ld -entry _start_0x7c00 --oformat binary boot.o -o $@
    1210
    1311boot.o: boot.S
    14         gcc -E -DKERNEL_SIZE=$(KERNEL_SIZE) boot.S >boot.s
    15         as boot.s -o $@
     12        $(CC) -E -DKERNEL_SIZE=$(KERNEL_SIZE) boot.S > boot.s
     13        $(AS) boot.s -o $@
    1614        rm boot.s
    1715
    1816clean:
    19         -rm *.o *.bin
     17        -rm -f boot.o boot.bin ../../../image.bin
  • arch/ia32/Makefile.inc

    r5b65205 r389f41e  
    3232BFD_NAME = elf32-i386
    3333BFD_ARCH = i386
     34BFD = binary
    3435TARGET = i686-pc-linux-gnu
    3536TOOLCHAIN_DIR = /usr/local/i686/bin
     
    4748ifeq ($(CPU),athlon-xp)
    4849        CFLAGS += -march=athlon-xp -mmmx -msse -m3dnow
    49         DEFS += -DFENCES=486
     50        DEFS += -DFENCES=p3
    5051        CONFIG_SMP = n
    5152        CONFIG_HT = n
     
    5354ifeq ($(CPU),athlon-mp)
    5455        CFLAGS += -march=athlon-mp -mmmx -msse -m3dnow
    55         DEFS += -DFENCES=486
     56        DEFS += -DFENCES=p3
     57        CONFIG_HT = n
    5658endif
    5759ifeq ($(CPU),pentium3)
    58         CFLAGS += -march=pentium3 -mmmx -msse -msse2
    59         DEFS += -DFENCES=486
     60        CFLAGS += -march=pentium3 -mmmx -msse
     61        DEFS += -DFENCES=p3
     62        CONFIG_HT = n
     63endif
     64ifeq ($(CPU),prescott)
     65        CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2 -msse3
     66        DEFS += -DFENCES=p4
    6067endif
    6168ifeq ($(CPU),pentium4)
    62         CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2 -msse3
     69        CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2
    6370        DEFS += -DFENCES=p4
    6471endif
  • arch/ia32/_link.ld.in

    r5b65205 r389f41e  
    1313#include <arch/mm/page.h>
    1414
    15 OUTPUT_FORMAT(binary)
     15OUTPUT_FORMAT(BFD)
    1616ENTRY(kernel_image_start)
    1717
  • arch/ia32/include/barrier.h

    r5b65205 r389f41e  
    4444#define CS_LEAVE_BARRIER()      __asm__ volatile ("" ::: "memory")
    4545
    46 #ifdef __STRONG_ORDERING__
    47 
    48 #define memory_barrier()
    49 #define read_barrier()
    50 #define write_barrier()
    51 
     46#if (FENCES == p4)
     47#       define memory_barrier() __asm__ volatile ("mfence\n" ::: "memory")
     48#       define read_barrier()           __asm__ volatile ("sfence\n" ::: "memory")
     49#       define write_barrier()          __asm__ volatile ("lfence\n" ::: "memory")
     50#elif (FENCES == p3)
     51#       define memory_barrier() __asm__ volatile ("xchgl %%eax,%%eax\n" ::: "memory")
     52#       define read_barrier()           __asm__ volatile ("sfence\n" ::: "memory")
     53#       define write_barrier()          __asm__ volatile ("xchgl %%eax,%%eax\n" ::: "memory")
    5254#else
    53 
    54 #define memory_barrier()        __asm__ volatile ("mfence\n" ::: "memory")
    55 #define read_barrier()          __asm__ volatile ("sfence\n" ::: "memory")
    56 #define write_barrier()         __asm__ volatile ("lfence\n" ::: "memory")
    57 
     55#       error Unsupported FENCES value
    5856#endif
    5957
  • arch/ia64/Makefile.inc

    r5b65205 r389f41e  
    3232BFD_NAME = elf64-little
    3333BFD_ARCH = ia64-elf64
     34BFD = elf64-ia64-little
    3435TARGET = ia64-pc-linux-gnu
    3536TOOLCHAIN_DIR = /usr/local/ia64/bin
  • arch/ia64/_link.ld.in

    r5b65205 r389f41e  
    99#define __ASM__
    1010
    11 OUTPUT_FORMAT(elf64-ia64-little)
     11OUTPUT_FORMAT(BFD)
    1212ENTRY(kernel_image_start)
    1313
  • arch/mips32/Makefile.inc

    r5b65205 r389f41e  
    3030#
    3131
    32 BFD_NAME = elf32-i386
    3332BFD_ARCH = mips
    3433TARGET = mipsel-linux-gnu
     
    3837#
    3938
    40 ifndef CPU
    41         CPU = pentium4
     39ifndef MACHINE
     40        MACHINE = msim
    4241endif
    4342
    44 ## Accepted CPUs
     43KERNEL_LOAD_ADDRESS = 0x80100000
     44CFLAGS += -mno-abicalls -G 0 -fno-zero-initialized-in-bss
     45DEFS += -DMACHINE=${MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS}
     46
     47## Accepted MACHINEs
    4548#
    4649
    47 ifeq ($(CPU),athlon-xp)
    48         CFLAGS += -march=athlon-xp -mmmx -msse -m3dnow
    49         DEFS += -DFENCES=486
    50         CONFIG_SMP = n
    51         CONFIG_HT = n
     50ifeq ($(MACHINE),indy)
     51        # GCC 4.0.1 compiled for mipsEL has problems compiling in
     52        # BigEndian mode with the swl/swr/lwl/lwr instructions.
     53        # We have to compile it with mips-sgi-irix5 to get it right.
     54       
     55        BFD_NAME = elf32-bigmips
     56        BFD = ecoff-bigmips
     57        TARGET = mips-sgi-irix5
     58        TOOLCHAIN_DIR = /usr/local/mips/bin
     59        KERNEL_LOAD_ADDRESS = 0x88002000
     60        CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -march=r4600
    5261endif
    53 ifeq ($(CPU),athlon-mp)
    54         CFLAGS += -march=athlon-mp -mmmx -msse -m3dnow
    55         DEFS += -DFENCES=486
     62ifeq ($(MACHINE}),lgxemul)
     63        BFD_NAME=elf32-tradlittlemips
     64        BFD = ecoff-littlemips
     65        CFLAGS += -DHAVE_FPU -mips3
    5666endif
    57 ifeq ($(CPU),pentium3)
    58         CFLAGS += -march=pentium3 -mmmx -msse -msse2
    59         DEFS += -DFENCES=486
     67ifeq ($(MACHINE),bgxemul)
     68        BFD_NAME=elf32-bigmips
     69        BFD = ecoff-bigmips
     70        TARGET = mips-sgi-irix5
     71        TOOLCHAIN_DIR = /usr/local/mips/bin
     72        CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -mips3
    6073endif
    61 ifeq ($(CPU),pentium4)
    62         CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2 -msse3
    63         DEFS += -DFENCES=p4
     74ifeq ($(MACHINE),msim4kc)
     75        # MSIM needs lwl/swl patch & 4kc instruction patch to work
     76        # otherwise add -mmemcpy -mips3
     77       
     78        BFD_NAME = elf32-tradlittlemips
     79        BFD = binary
     80        CFLAGS += -mhard-float -march=4kc
     81endif
     82ifeq ($(MACHINE),simics)
     83        # SIMICS 4kc emulation is broken, although for instructions
     84        # that do not bother us
     85       
     86        BFD_NAME = elf32-tradlittlemips
     87        BFD = elf32-tradlittlemips
     88        CFLAGS += -mhard-float -mips3
     89endif
     90ifeq ($(MACHINE),msim)
     91        BFD_NAME = elf32-tradlittlemips
     92        BFD = binary
     93        CFLAGS += -mhard-float -mips3
    6494endif
    6595
     
    6797#
    6898
    69 CONFIG_ACPI = y
     99CONFIG_OFW = y
    70100
    71101## Accepted configuration directives
    72102#
    73103
    74 ifeq ($(CONFIG_SMP),y)
    75         DEFS += -DSMP
    76 endif
    77 ifeq ($(CONFIG_HT),y)
    78         DEFS += -DHT
    79 endif
    80104ifeq ($(CONFIG_FPU_LAZY),y)
    81105        DEFS += -DFPU_LAZY
     
    83107
    84108ARCH_SOURCES = \
    85         arch/$(ARCH)/src/context.s \
    86         arch/$(ARCH)/src/debug/panic.s \
    87         arch/$(ARCH)/src/delay.s \
     109        arch/$(ARCH)/src/start.S \
     110        arch/$(ARCH)/src/context.S \
     111        arch/$(ARCH)/src/panic.S \
     112        arch/$(ARCH)/src/mips32.c \
     113        arch/$(ARCH)/src/dummy.S \
     114        arch/$(ARCH)/src/console.c \
    88115        arch/$(ARCH)/src/asm.S \
    89         arch/$(ARCH)/src/proc/scheduler.c \
    90         arch/$(ARCH)/src/bios/bios.c \
    91         arch/$(ARCH)/src/smp/ap.S \
    92         arch/$(ARCH)/src/smp/apic.c \
    93         arch/$(ARCH)/src/smp/mps.c \
    94         arch/$(ARCH)/src/smp/smp.c \
    95         arch/$(ARCH)/src/atomic.S \
    96         arch/$(ARCH)/src/smp/ipi.c \
    97         arch/$(ARCH)/src/ia32.c \
     116        arch/$(ARCH)/src/exception.c \
    98117        arch/$(ARCH)/src/interrupt.c \
    99         arch/$(ARCH)/src/pm.c \
    100         arch/$(ARCH)/src/userspace.c \
     118        arch/$(ARCH)/src/cache.c \
    101119        arch/$(ARCH)/src/cpu/cpu.c \
     120        arch/$(ARCH)/src/mm/asid.c \
    102121        arch/$(ARCH)/src/mm/frame.c \
    103         arch/$(ARCH)/src/mm/memory_init.c \
    104122        arch/$(ARCH)/src/mm/page.c \
    105123        arch/$(ARCH)/src/mm/tlb.c \
    106         arch/$(ARCH)/src/drivers/i8042.c \
    107         arch/$(ARCH)/src/drivers/i8254.c \
    108         arch/$(ARCH)/src/drivers/i8259.c \
    109         arch/$(ARCH)/src/drivers/ega.c \
    110         arch/$(ARCH)/src/boot/boot.S \
    111         arch/$(ARCH)/src/boot/memmap.S \
    112         arch/$(ARCH)/src/fpu_context.c\
    113         arch/$(ARCH)/src/fmath.c
    114 
    115 
    116 
    117 
    118 
    119 
    120 
    121 
    122 
    123 
    124 
    125 
    126 
    127 
    128 
    129 
    130 DEFS= -DMACHINE=${MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS}
    131 CFLAGS=-mno-abicalls -G 0 -nostdlib -fno-builtin -O2  -fno-zero-initialized-in-bss
    132 LFLAGS=
    133 
    134 # GCC 4.0.1 compiled for mipsEL has problems compiling in
    135 # BigEndian mode with the swl/swr/lwl/lwr instructions.
    136 # We have to compile it with mips-sgi-irix5 to get it right.
    137 ifeq (${MACHINE},indy)
    138  MIPS_TARGET=mips-sgi-irix5
    139  MIPS_CC_DIR=/usr/local/mips/bin
    140  MIPS_BINUTILS_DIR=/usr/local/mips/bin
    141 
    142  CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -DFPU_LAZY -march=r4600
    143  BFD = ecoff-bigmips
    144  KERNEL_LOAD_ADDRESS = 0x88002000
    145  BFD_NAME=elf32-bigmips
    146 endif
    147 
    148 ifeq (${MACHINE},lgxemul)
    149  CFLAGS += -DHAVE_FPU -DFPU_LAZY -mips3
    150  BFD = ecoff-littlemips
    151  KERNEL_LOAD_ADDRESS = 0x80100000
    152  BFD_NAME=elf32-tradlittlemips
    153 endif
    154 
    155 ifeq (${MACHINE},bgxemul)
    156  MIPS_TARGET=mips-sgi-irix5
    157  MIPS_CC_DIR=/usr/local/mips/bin
    158  MIPS_BINUTILS_DIR=/usr/local/mips/bin
    159 
    160  CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -DFPU_LAZY -mips3
    161  BFD = ecoff-bigmips
    162  KERNEL_LOAD_ADDRESS = 0x80100000
    163  BFD_NAME=elf32-bigmips
    164 endif
    165 
    166 # MSIM needs lwl/swl patch & 4kc instruction patch to work
    167 # otherwise add -mmemcpy -mips3
    168 ifeq (${MACHINE},msim4kc)
    169  BFD = binary
    170  CFLAGS += -mhard-float -march=4kc
    171  KERNEL_LOAD_ADDRESS = 0x80100000
    172  BFD_NAME=elf32-tradlittlemips
    173 endif
    174 
    175 ifeq (${MACHINE},msim)
    176  BFD = binary
    177  CFLAGS += -mhard-float -mips3
    178  KERNEL_LOAD_ADDRESS = 0x80100000
    179  BFD_NAME=elf32-tradlittlemips
    180 endif
    181 
    182 # SIMICS 4kc emulation is broken, although for instructions
    183 # that do not bother us
    184 ifeq (${MACHINE},simics)
    185  BFD = elf32-tradlittlemips
    186  CFLAGS += -mhard-float -mips3
    187  KERNEL_LOAD_ADDRESS = 0x80100000
    188  BFD_NAME=elf32-tradlittlemips
    189 endif
    190 
    191 arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in
    192         $(CC) $(CFLAGS) -C -DBFD=${BFD} -E -x c $< | grep -v "^\#" > $@
    193 
    194 arch_sources= \
    195         generic/src/arch/start.S \
    196         generic/src/arch/context.S \
    197         generic/src/arch/panic.S \
    198         generic/src/arch/mips32.c \
    199         generic/src/arch/dummy.S \
    200         generic/src/arch/console.c \
    201         generic/src/arch/asm.S \
    202         generic/src/arch/exception.c \
    203         generic/src/arch/interrupt.c \
    204         generic/src/arch/cache.c \
    205         generic/src/arch/cpu/cpu.c \
    206         generic/src/arch/mm/asid.c \
    207         generic/src/arch/mm/frame.c \
    208         generic/src/arch/mm/page.c \
    209         generic/src/arch/mm/tlb.c \
    210         generic/src/arch/mm/vm.c \
    211         generic/src/arch/fpu_context.c \
    212         generic/src/arch/fmath.c \
    213         generic/src/arch/drivers/arc.c
     124        arch/$(ARCH)/src/mm/vm.c \
     125        arch/$(ARCH)/src/fpu_context.c \
     126        arch/$(ARCH)/src/fmath.c \
     127        arch/$(ARCH)/src/drivers/arc.c
  • arch/mips32/_link.ld.in

    r5b65205 r389f41e  
    1010
    1111OUTPUT_FORMAT(BFD)
    12 
    1312OUTPUT_ARCH(mips)
    1413
  • arch/mips32/boot/Makefile

    r5b65205 r389f41e  
    1 MIPS_BINUTILS_DIR=/usr/local/mipsel/bin
    2 MIPS_TARGET=mipsel-linux-gnu
     1.PHONY: build clean
    32
    4 .PHONY: nothing build
    5 
    6 nothing:
     3CFLAGS = -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mips3 -I../include
    74
    85build: boot.bin
    96        cp boot.bin ../../../load.bin
    107
    11 AS=$(MIPS_BINUTILS_DIR)/$(MIPS_TARGET)-as
    12 CC=$(MIPS_BINUTILS_DIR)/$(MIPS_TARGET)-gcc
    13 LD=$(MIPS_BINUTILS_DIR)/$(MIPS_TARGET)-ld
     8boot.bin: boot.o
     9        $(LD) -e start -T _link.ld boot.o -o $@
    1410
    15 AFLAGS=-mips2 -I../../../generic/include
    16 LFLAGS=--oformat=binary -e start -T _link.ld
    17 
    18 .S.o:
    19         $(CC) $(ASFLAGS) -c -o $@ $<
    20 
    21 boot.bin: boot.o
    22         $(LD) $(LFLAGS) $< -o $@
    23 
     11boot.o: boot.S
     12        $(CC) $(CFLAGS) -c boot.S -o $@
    2413
    2514clean:
    26         -rm *.o *.bin
     15        -rm -f boot.o boot.bin ../../../load.bin
  • arch/mips32/boot/boot.S

    r5b65205 r389f41e  
    3333.set nomacro
    3434
    35 #include <arch/asm/boot.h>
    36 
    37 #ifndef KERNEL_LOAD_ADDRESS
    38 # define KERNEL_LOAD_ADDRESS 0x80100000
    39 #endif
     35#define KERNEL_LOAD_ADDRESS 0x80100000
    4036       
    4137.global start
  • arch/ppc32/Makefile.inc

    r5b65205 r389f41e  
    3232BFD_NAME = elf32-powerpc
    3333BFD_ARCH = powerpc
     34BFD = elf32-powerpc
    3435TARGET = ppc-linux-gnu
    3536TOOLCHAIN_DIR = /usr/local/ppc/bin
  • arch/ppc32/_link.ld.in

    r5b65205 r389f41e  
    99#define __ASM__
    1010
    11 OUTPUT_FORMAT("elf32-powerpc")
     11OUTPUT_FORMAT(BFD)
    1212ENTRY(kernel_image_start)
    1313
  • arch/sparc64/Makefile.inc

    r5b65205 r389f41e  
    3232BFD_NAME = elf64-sparc
    3333BFD_ARCH = sparc
     34BFD = elf64-sparc
    3435TARGET = sparc64-linux-gnu
    3536TOOLCHAIN_DIR = /usr/local/sparc64/bin
  • arch/sparc64/_link.ld.in

    r5b65205 r389f41e  
    99#define __ASM__
    1010
    11 OUTPUT_FORMAT("elf64-sparc")
     11OUTPUT_FORMAT(BFD)
    1212ENTRY(kernel_image_start)
    1313
  • build.ia32

    r5b65205 r389f41e  
    33function syntax {
    44        echo "Syntax:"
    5         echo " build.<arch> [-compiler <compiler>] [-cpu <cpu>]"
     5        echo " build.<arch> [-compiler <compiler>] [-cpu <cpu>] [-machine <machine>]"
    66        echo
    77        echo "<arch>     ... amd64, *ia32, ia64, mips32, ppc32, sparc64"
    88        echo "<compiler> ... native, *cross"
    9         echo "<cpu>      ... for ia32: athlon-xp, athlon-mp, pentium3, *pentium4"
     9        echo "<cpu>      ... for ia32: athlon-xp, athlon-mp, pentium3, *pentium4, prescott"
     10        echo "<machine>  ... for mips32: *msim, msim4kc, simics, lgxemul, bgxemul, indy"
    1011        echo
    1112}
     
    2122        case "$1" in
    2223                -compiler)
     24                        if [ -z "$2" ]; then
     25                                syntax
     26                                exit 1
     27                        fi
    2328                        ARGS="$ARGS COMPILER=$2"
    2429                        shift
    2530                        ;;
    2631                -cpu)
     32                        if [ -z "$2" ]; then
     33                                syntax
     34                                exit 1
     35                        fi
    2736                        ARGS="$ARGS CPU=$2"
     37                        shift
     38                        ;;
     39                -machine)
     40                        if [ -z "$2" ]; then
     41                                syntax
     42                                exit 1
     43                        fi
     44                        ARGS="$ARGS MACHINE=$2"
    2845                        shift
    2946                        ;;
Note: See TracChangeset for help on using the changeset viewer.