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