PERFORCE change 156978 for review
Arnar Mar Sig
antab at FreeBSD.org
Sat Jan 31 16:59:42 PST 2009
http://perforce.freebsd.org/chv.cgi?CH=156978
Change 156978 by antab at 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
More information about the p4-projects
mailing list