From owner-p4-projects@FreeBSD.ORG Sun Feb 1 00:59:42 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C981E10656E4; Sun, 1 Feb 2009 00:59:41 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8481C10656CF for ; Sun, 1 Feb 2009 00:59:41 +0000 (UTC) (envelope-from antab@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 70C198FC13 for ; Sun, 1 Feb 2009 00:59:41 +0000 (UTC) (envelope-from antab@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n110xfeO079963 for ; Sun, 1 Feb 2009 00:59:41 GMT (envelope-from antab@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n110xfXx079961 for perforce@freebsd.org; Sun, 1 Feb 2009 00:59:41 GMT (envelope-from antab@FreeBSD.org) Date: Sun, 1 Feb 2009 00:59:41 GMT Message-Id: <200902010059.n110xfXx079961@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to antab@FreeBSD.org using -f From: Arnar Mar Sig To: Perforce Change Reviews Cc: Subject: PERFORCE change 156978 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Feb 2009 00:59:42 -0000 http://perforce.freebsd.org/chv.cgi?CH=156978 Change 156978 by antab@antab_farm on 2009/02/01 00:58:58 AVR32 support. The kernel boots on NGW100 but there is still alot of work to be done. At the moment it crashes somewhere in uma_startup3. Affected files ... .. //depot/projects/avr32/src/Makefile.inc1#2 edit .. //depot/projects/avr32/src/sys/avr32/avr32/at32.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/autoconf.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/clock.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/cpu.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/elf_machdep.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/exception.S#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/genassym.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/in_cksum.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/intr.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/locore.S#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/machdep.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/nexus.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/pm_machdep.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/pmap.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/sf_buf.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/support.S#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/tlb.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/trap.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/uboot.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/uio_machdep.c#1 add .. //depot/projects/avr32/src/sys/avr32/avr32/vm_machdep.c#1 add .. //depot/projects/avr32/src/sys/avr32/conf/NGW100#1 add .. //depot/projects/avr32/src/sys/avr32/conf/NGW100.hints#1 add .. //depot/projects/avr32/src/sys/avr32/include/_bus.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/_limits.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/_stdint.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/_types.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/asm.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/at32.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/atomic.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/bus.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/bus_dma.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/clock.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/cpu.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/cpufunc.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/db_machdep.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/debug.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/elf.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/endian.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/exec.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/frame.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/in_cksum.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/intr.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/kdb.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/md_var.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/mutex.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/nexus.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/param.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/pcb.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/pcpu.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/pmap.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/pmc_mdep.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/proc.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/profile.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/psl.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/pte.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/ptrace.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/reg.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/reg_sys.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/reg_usart.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/resource.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/runq.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/setjmp.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/sf_buf.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/signal.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/smp.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/stdarg.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/tlb.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/trap.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/uboot.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/ucontext.h#1 add .. //depot/projects/avr32/src/sys/avr32/include/vmparam.h#1 add .. //depot/projects/avr32/src/sys/conf/Makefile.avr32#1 add .. //depot/projects/avr32/src/sys/conf/files.avr32#1 add .. //depot/projects/avr32/src/sys/conf/kern.mk#2 edit .. //depot/projects/avr32/src/sys/conf/kern.pre.mk#2 edit .. //depot/projects/avr32/src/sys/conf/ldscript.avr32#1 add .. //depot/projects/avr32/src/sys/conf/options.avr32#1 add .. //depot/projects/avr32/src/sys/dev/uart/uart.h#2 edit .. //depot/projects/avr32/src/sys/dev/uart/uart_atmel.h#1 add .. //depot/projects/avr32/src/sys/dev/uart/uart_bus_atmel.c#1 add .. //depot/projects/avr32/src/sys/dev/uart/uart_cpu_at32.c#1 add .. //depot/projects/avr32/src/sys/dev/uart/uart_dev_atmel.c#1 add .. //depot/projects/avr32/src/sys/sys/elf_common.h#2 edit .. //depot/projects/avr32/src/sys/sys/user.h#2 edit Differences ... ==== //depot/projects/avr32/src/Makefile.inc1#2 (text+ko) ==== @@ -126,7 +126,7 @@ TARGET?= ${MACHINE} TARGET_ARCH?= ${MACHINE_ARCH} -KNOWN_ARCHES?= amd64 arm i386 i386/pc98 ia64 mips powerpc sparc64 sparc64/sun4v +KNOWN_ARCHES?= amd64 arm avr32 i386 i386/pc98 ia64 mips powerpc sparc64 sparc64/sun4v .if ${TARGET} == ${TARGET_ARCH} _t= ${TARGET} .else ==== //depot/projects/avr32/src/sys/conf/kern.mk#2 (text+ko) ==== @@ -12,7 +12,9 @@ .else CWARNFLAGS?= -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \ -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual \ - ${_wundef} ${_Wno_pointer_sign} -fformat-extensions + ${_wundef} ${_Wno_pointer_sign} +# antab: Disable format-extensions for now while we dont have a complete toolchain +# -fformat-extensions .if !defined(WITH_GCC3) _Wno_pointer_sign=-Wno-pointer-sign .endif @@ -44,6 +46,14 @@ .if ${MACHINE_ARCH} == "arm" INLINE_LIMIT?= 8000 .endif + +# +# For AVR32, we do.. well nothing special for now +# +.if ${MACHINE_ARCH} == "avr32" +INLINE_LIMIT?= 15000 +.endif + # # For IA-64, we use r13 for the kernel globals pointer and we only use # a very small subset of float registers for integer divides. ==== //depot/projects/avr32/src/sys/conf/kern.pre.mk#2 (text+ko) ==== @@ -142,6 +142,8 @@ SYSTEM_OBJS= locore.o ${MDOBJS} ${OBJS} SYSTEM_OBJS+= ${SYSTEM_CFILES:.c=.o} SYSTEM_OBJS+= hack.So +# antab: Hack for avr32, needs libgcc for now. +SYSTEM_OBJS+= /crosstools/lib/gcc/avr32-linux/4.2.2/libgcc.a .if defined(CTFMERGE) SYSTEM_CTFMERGE= ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SYSTEM_OBJS} vers.o LD+= -g ==== //depot/projects/avr32/src/sys/dev/uart/uart.h#2 (text+ko) ==== @@ -50,6 +50,11 @@ #define uart_setreg(bas, reg, value) \ bus_space_write_1((bas)->bst, (bas)->bsh, uart_regofs(bas, reg), value) +#define uart_getreg_4(bas, reg) \ + bus_space_read_4((bas)->bst, (bas)->bsh, uart_regofs(bas, reg)) +#define uart_setreg_4(bas, reg, value) \ + bus_space_write_4((bas)->bst, (bas)->bsh, uart_regofs(bas, reg), value) + /* * XXX we don't know the length of the bus space address range in use by * the UART. Since barriers don't use the length field currently, we put ==== //depot/projects/avr32/src/sys/sys/elf_common.h#2 (text+ko) ==== @@ -231,6 +231,7 @@ #define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ #define EM_ALPHA_STD 41 /* Digital Alpha (standard value). */ #define EM_ALPHA 0x9026 /* Alpha (written in the absence of an ABI) */ +#define EM_AVR32 0x18ad /* AVR32 magic number from ATMEL */ /* Special section indexes. */ #define SHN_UNDEF 0 /* Undefined, missing, irrelevant. */ @@ -435,6 +436,7 @@ #define DT_LOPROC 0x70000000 /* First processor-specific type. */ #define DT_DEPRECATED_SPARC_REGISTER 0x7000001 +#define DT_AVR32_GOTSZ 0x70000001 /* AVR32 dynamic tags: Total size of GOT in bytes */ #define DT_AUXILIARY 0x7ffffffd /* shared library auxiliary name */ #define DT_USED 0x7ffffffe /* ignored - same as needed */ #define DT_FILTER 0x7fffffff /* shared library filter name */ @@ -623,6 +625,53 @@ #define R_ARM_RPC24 254 #define R_ARM_RBASE 255 +/* Atmel AVR32 relocations. */ +#define R_AVR32_NONE 0 +#define R_AVR32_32 1 +#define R_AVR32_16 2 +#define R_AVR32_8 3 +#define R_AVR32_32_PCREL 4 +#define R_AVR32_16_PCREL 5 +#define R_AVR32_8_PCREL 6 +#define R_AVR32_DIFF32 7 +#define R_AVR32_DIFF16 8 +#define R_AVR32_DIFF8 9 +#define R_AVR32_GOT32 10 +#define R_AVR32_GOT16 11 +#define R_AVR32_GOT8 12 +#define R_AVR32_21S 13 +#define R_AVR32_16U 14 +#define R_AVR32_16S 15 +#define R_AVR32_8S 16 +#define R_AVR32_8S_EXT 17 +#define R_AVR32_22H_PCREL 18 +#define R_AVR32_18W_PCREL 19 +#define R_AVR32_16B_PCREL 20 +#define R_AVR32_16N_PCREL 21 +#define R_AVR32_14UW_PCREL 22 +#define R_AVR32_11H_PCREL 23 +#define R_AVR32_10UW_PCREL 24 +#define R_AVR32_9H_PCREL 25 +#define R_AVR32_9UW_PCREL 26 +#define R_AVR32_HI16 27 +#define R_AVR32_LO16 28 +#define R_AVR32_GOTPC 29 +#define R_AVR32_GOTCALL 30 +#define R_AVR32_LDA_GOT 31 +#define R_AVR32_GOT21SU 32 +#define R_AVR32_GOT18SW 33 +#define R_AVR32_GOT16S 34 +#define R_AVR32_GOT7UW 35 +#define R_AVR32_32_CPENT 36 +#define R_AVR32_CPCALL 37 +#define R_AVR32_16_CP 38 +#define R_AVR32_9W_CP 39 +#define R_AVR32_RELATIVE 40 +#define R_AVR32_GLOB_DAT 41 +#define R_AVR32_JMP_SLOT 42 +#define R_AVR32_ALIGN 43 +#define R_AVR32_NUM 44 + /* Name Value Field Calculation */ #define R_IA_64_NONE 0 /* None */ #define R_IA_64_IMM14 0x21 /* immediate14 S + A */ ==== //depot/projects/avr32/src/sys/sys/user.h#2 (text+ko) ==== @@ -93,6 +93,9 @@ #ifdef __arm__ #define KINFO_PROC_SIZE 792 #endif +#ifdef __avr32__ // antab: look into this later +#define KINFO_PROC_SIZE 792 +#endif #ifdef __ia64__ #define KINFO_PROC_SIZE 1088 #endif