Date: Sun, 20 May 2007 23:09:51 GMT From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 120132 for review Message-ID: <200705202309.l4KN9pT2086521@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=120132 Change 120132 by marcel@marcel_cluster on 2007/05/20 23:08:55 Juniper's platform branch for MPC85xx and Book-E support. Needs work. Affected files ... .. //depot/projects/e500/lib/libc/Makefile#2 edit .. //depot/projects/e500/lib/libc/powerpc/gen/Makefile.inc#2 edit .. //depot/projects/e500/lib/libc/powerpc/gen/eabi.c#1 add .. //depot/projects/e500/lib/libc/powerpc/gen/flt_rounds.c#2 edit .. //depot/projects/e500/lib/libc/powerpc/gen/fpgetmask.c#2 edit .. //depot/projects/e500/lib/libc/powerpc/gen/fpgetround.c#2 edit .. //depot/projects/e500/lib/libc/powerpc/gen/fpgetsticky.c#2 edit .. //depot/projects/e500/lib/libc/powerpc/gen/fpsetmask.c#2 edit .. //depot/projects/e500/lib/libc/powerpc/gen/fpsetround.c#2 edit .. //depot/projects/e500/lib/libc/powerpc/softfloat/milieu.h#1 add .. //depot/projects/e500/lib/libc/powerpc/softfloat/powerpc-gcc.h#1 add .. //depot/projects/e500/lib/libc/powerpc/softfloat/softfloat.h#1 add .. //depot/projects/e500/lib/libstand/Makefile#2 edit .. //depot/projects/e500/lib/msun/powerpc/fenv.h#2 edit .. //depot/projects/e500/share/mk/bsd.cpu.mk#2 edit .. //depot/projects/e500/share/sendmail/Makefile#2 edit .. //depot/projects/e500/sys/boot/Makefile#2 edit .. //depot/projects/e500/sys/boot/common/bootstrap.h#2 edit .. //depot/projects/e500/sys/boot/common/dev_net.c#2 edit .. //depot/projects/e500/sys/boot/common/load_elf.c#2 edit .. //depot/projects/e500/sys/boot/powerpc/Makefile#2 edit .. //depot/projects/e500/sys/boot/powerpc/loader/Makefile#2 delete .. //depot/projects/e500/sys/boot/powerpc/loader/conf.c#2 delete .. //depot/projects/e500/sys/boot/powerpc/loader/help.ofw#2 delete .. //depot/projects/e500/sys/boot/powerpc/loader/ldscript.powerpc#2 delete .. //depot/projects/e500/sys/boot/powerpc/loader/metadata.c#2 delete .. //depot/projects/e500/sys/boot/powerpc/loader/start.c#2 delete .. //depot/projects/e500/sys/boot/powerpc/loader/version#2 delete .. //depot/projects/e500/sys/boot/powerpc/ofw/Makefile#1 add .. //depot/projects/e500/sys/boot/powerpc/ofw/conf.c#1 add .. //depot/projects/e500/sys/boot/powerpc/ofw/help.ofw#1 add .. //depot/projects/e500/sys/boot/powerpc/ofw/ldscript.powerpc#1 add .. //depot/projects/e500/sys/boot/powerpc/ofw/metadata.c#1 add .. //depot/projects/e500/sys/boot/powerpc/ofw/start.c#1 add .. //depot/projects/e500/sys/boot/powerpc/ofw/version#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/Makefile#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/conf.c#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/defs.sh#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/gnu/NOTES#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/gnu/global_data.h#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/gnu/u-boot.h#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/help.uboot#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/ldscript.powerpc#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/metadata.c#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/start.S#1 add .. //depot/projects/e500/sys/boot/powerpc/uboot/version#1 add .. //depot/projects/e500/sys/boot/uboot/Makefile#1 add .. //depot/projects/e500/sys/boot/uboot/common/Makefile.inc#1 add .. //depot/projects/e500/sys/boot/uboot/common/calls.sh#1 add .. //depot/projects/e500/sys/boot/uboot/common/main.c#1 add .. //depot/projects/e500/sys/boot/uboot/gnu/NOTES#1 add .. //depot/projects/e500/sys/boot/uboot/gnu/_exports.h#1 add .. //depot/projects/e500/sys/boot/uboot/lib/Makefile#1 add .. //depot/projects/e500/sys/boot/uboot/lib/console.c#1 add .. //depot/projects/e500/sys/boot/uboot/lib/copy.c#1 add .. //depot/projects/e500/sys/boot/uboot/lib/devicename.c#1 add .. //depot/projects/e500/sys/boot/uboot/lib/disk.c#1 add .. //depot/projects/e500/sys/boot/uboot/lib/elf_freebsd.c#1 add .. //depot/projects/e500/sys/boot/uboot/lib/libuboot.h#1 add .. //depot/projects/e500/sys/boot/uboot/lib/module.c#1 add .. //depot/projects/e500/sys/boot/uboot/lib/net.c#1 add .. //depot/projects/e500/sys/boot/uboot/lib/reboot.c#1 add .. //depot/projects/e500/sys/boot/uboot/lib/time.c#1 add .. //depot/projects/e500/sys/conf/NOTES#2 edit .. //depot/projects/e500/sys/conf/files#2 edit .. //depot/projects/e500/sys/conf/files.powerpc#2 edit .. //depot/projects/e500/sys/conf/ldscript.powerpc#2 edit .. //depot/projects/e500/sys/conf/options.powerpc#2 edit .. //depot/projects/e500/sys/dev/ic/quicc.h#1 add .. //depot/projects/e500/sys/dev/md/md.c#2 edit .. //depot/projects/e500/sys/dev/mii/ciphy.c#2 edit .. //depot/projects/e500/sys/dev/mii/miidevs#2 edit .. //depot/projects/e500/sys/dev/quicc/quicc_bfe.h#1 add .. //depot/projects/e500/sys/dev/quicc/quicc_bfe_ocp.c#1 add .. //depot/projects/e500/sys/dev/quicc/quicc_bus.h#1 add .. //depot/projects/e500/sys/dev/quicc/quicc_core.c#1 add .. //depot/projects/e500/sys/dev/scc/scc_bfe.h#2 edit .. //depot/projects/e500/sys/dev/scc/scc_bfe_ebus.c#2 edit .. //depot/projects/e500/sys/dev/scc/scc_bfe_macio.c#2 edit .. //depot/projects/e500/sys/dev/scc/scc_bfe_quicc.c#1 add .. //depot/projects/e500/sys/dev/scc/scc_bfe_sbus.c#2 edit .. //depot/projects/e500/sys/dev/scc/scc_bus.h#2 edit .. //depot/projects/e500/sys/dev/scc/scc_core.c#2 edit .. //depot/projects/e500/sys/dev/scc/scc_dev_quicc.c#1 add .. //depot/projects/e500/sys/dev/scc/scc_dev_sab82532.c#2 edit .. //depot/projects/e500/sys/dev/scc/scc_dev_z8530.c#2 edit .. //depot/projects/e500/sys/dev/scc/scc_if.m#2 edit .. //depot/projects/e500/sys/dev/tsec/if_tsec.c#1 add .. //depot/projects/e500/sys/dev/tsec/if_tsec.h#1 add .. //depot/projects/e500/sys/dev/tsec/if_tsecreg.h#1 add .. //depot/projects/e500/sys/dev/uart/uart_bus_ocp.c#1 add .. //depot/projects/e500/sys/dev/uart/uart_bus_scc.c#2 edit .. //depot/projects/e500/sys/dev/uart/uart_cpu_alpha.c#1 add .. //depot/projects/e500/sys/dev/uart/uart_cpu_powerpc.c#2 edit .. //depot/projects/e500/sys/dev/uart/uart_dev_quicc.c#1 add .. //depot/projects/e500/sys/gdb/gdb_packet.c#2 edit .. //depot/projects/e500/sys/kern/subr_witness.c#2 edit .. //depot/projects/e500/sys/powerpc/aim/clock.c#1 add .. //depot/projects/e500/sys/powerpc/aim/copyinout.c#1 add .. //depot/projects/e500/sys/powerpc/aim/interrupt.c#1 add .. //depot/projects/e500/sys/powerpc/aim/locore.S#1 add .. //depot/projects/e500/sys/powerpc/aim/machdep.c#1 add .. //depot/projects/e500/sys/powerpc/aim/mem.c#1 add .. //depot/projects/e500/sys/powerpc/aim/nexus.c#1 add .. //depot/projects/e500/sys/powerpc/aim/ofw_machdep.c#1 add .. //depot/projects/e500/sys/powerpc/aim/ofwmagic.S#1 add .. //depot/projects/e500/sys/powerpc/aim/pmap.c#1 add .. //depot/projects/e500/sys/powerpc/aim/swtch.S#1 add .. //depot/projects/e500/sys/powerpc/aim/trap.c#1 add .. //depot/projects/e500/sys/powerpc/aim/trap_subr.S#1 add .. //depot/projects/e500/sys/powerpc/aim/uio_machdep.c#1 add .. //depot/projects/e500/sys/powerpc/aim/uma_machdep.c#1 add .. //depot/projects/e500/sys/powerpc/aim/vm_machdep.c#1 add .. //depot/projects/e500/sys/powerpc/booke/clock.c#1 add .. //depot/projects/e500/sys/powerpc/booke/copyinout.c#1 add .. //depot/projects/e500/sys/powerpc/booke/interrupt.c#1 add .. //depot/projects/e500/sys/powerpc/booke/locore.S#1 add .. //depot/projects/e500/sys/powerpc/booke/machdep.c#1 add .. //depot/projects/e500/sys/powerpc/booke/mem.c#1 add .. //depot/projects/e500/sys/powerpc/booke/pmap.c#1 add .. //depot/projects/e500/sys/powerpc/booke/support.S#1 add .. //depot/projects/e500/sys/powerpc/booke/swtch.S#1 add .. //depot/projects/e500/sys/powerpc/booke/trap.c#1 add .. //depot/projects/e500/sys/powerpc/booke/trap_subr.S#1 add .. //depot/projects/e500/sys/powerpc/booke/uio_machdep.c#1 add .. //depot/projects/e500/sys/powerpc/booke/vm_machdep.c#1 add .. //depot/projects/e500/sys/powerpc/conf/GENERIC#2 edit .. //depot/projects/e500/sys/powerpc/conf/JUNIPER#1 add .. //depot/projects/e500/sys/powerpc/conf/MORNINGSTAR#1 add .. //depot/projects/e500/sys/powerpc/conf/NOTES#2 edit .. //depot/projects/e500/sys/powerpc/include/_bus.h#2 edit .. //depot/projects/e500/sys/powerpc/include/bootinfo.h#2 edit .. //depot/projects/e500/sys/powerpc/include/bus.h#2 edit .. //depot/projects/e500/sys/powerpc/include/float.h#2 edit .. //depot/projects/e500/sys/powerpc/include/fpu.h#2 edit .. //depot/projects/e500/sys/powerpc/include/frame.h#2 edit .. //depot/projects/e500/sys/powerpc/include/gdb_machdep.h#2 edit .. //depot/projects/e500/sys/powerpc/include/hid.h#2 edit .. //depot/projects/e500/sys/powerpc/include/intr_machdep.h#2 edit .. //depot/projects/e500/sys/powerpc/include/kdb.h#2 edit .. //depot/projects/e500/sys/powerpc/include/md_var.h#2 edit .. //depot/projects/e500/sys/powerpc/include/metadata.h#2 edit .. //depot/projects/e500/sys/powerpc/include/ocpbus.h#1 add .. //depot/projects/e500/sys/powerpc/include/pcb.h#2 edit .. //depot/projects/e500/sys/powerpc/include/pcpu.h#2 edit .. //depot/projects/e500/sys/powerpc/include/pmap.h#2 edit .. //depot/projects/e500/sys/powerpc/include/psl.h#2 edit .. //depot/projects/e500/sys/powerpc/include/pte.h#2 edit .. //depot/projects/e500/sys/powerpc/include/sf_buf.h#2 edit .. //depot/projects/e500/sys/powerpc/include/spr.h#2 edit .. //depot/projects/e500/sys/powerpc/include/tlb.h#1 add .. //depot/projects/e500/sys/powerpc/include/trap.h#2 edit .. //depot/projects/e500/sys/powerpc/include/trap_aim.h#1 add .. //depot/projects/e500/sys/powerpc/include/trap_booke.h#1 add .. //depot/projects/e500/sys/powerpc/include/vmparam.h#2 edit .. //depot/projects/e500/sys/powerpc/mpc85xx/lbc.c#1 add .. //depot/projects/e500/sys/powerpc/mpc85xx/lbc.h#1 add .. //depot/projects/e500/sys/powerpc/mpc85xx/lbc_if.m#1 add .. //depot/projects/e500/sys/powerpc/mpc85xx/nexus.c#1 add .. //depot/projects/e500/sys/powerpc/mpc85xx/ocpbus.c#1 add .. //depot/projects/e500/sys/powerpc/mpc85xx/ocpbus.h#1 add .. //depot/projects/e500/sys/powerpc/mpc85xx/opic.c#1 add .. //depot/projects/e500/sys/powerpc/mpc85xx/pci_ocp.c#1 add .. //depot/projects/e500/sys/powerpc/powerpc/autoconf.c#2 edit .. //depot/projects/e500/sys/powerpc/powerpc/bus_machdep.c#1 add .. //depot/projects/e500/sys/powerpc/powerpc/busdma_machdep.c#2 edit .. //depot/projects/e500/sys/powerpc/powerpc/clock.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/copyinout.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/cpu.c#2 edit .. //depot/projects/e500/sys/powerpc/powerpc/db_trace.c#2 edit .. //depot/projects/e500/sys/powerpc/powerpc/gdb_machdep.c#2 edit .. //depot/projects/e500/sys/powerpc/powerpc/genassym.c#2 edit .. //depot/projects/e500/sys/powerpc/powerpc/interrupt.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/locore.S#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/machdep.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/mem.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/nexus.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/ofw_machdep.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/ofwmagic.S#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/swtch.S#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/trap.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/trap_subr.S#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/uio_machdep.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/uma_machdep.c#2 delete .. //depot/projects/e500/sys/powerpc/powerpc/vm_machdep.c#2 delete Differences ... ==== //depot/projects/e500/lib/libc/Makefile#2 (text+ko) ==== @@ -56,7 +56,7 @@ .include "${.CURDIR}/rpc/Makefile.inc" .include "${.CURDIR}/uuid/Makefile.inc" .include "${.CURDIR}/xdr/Makefile.inc" -.if ${MACHINE_ARCH} == "arm" +.if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "powerpc" .include "${.CURDIR}/softfloat/Makefile.inc" .endif .if ${MK_NIS} != "no" ==== //depot/projects/e500/lib/libc/powerpc/gen/Makefile.inc#2 (text+ko) ==== @@ -1,6 +1,6 @@ # $FreeBSD: src/lib/libc/powerpc/gen/Makefile.inc,v 1.8 2005/03/15 15:53:38 das Exp $ -SRCS += _ctx_start.S fabs.S flt_rounds.c fpgetmask.c fpgetround.c \ +SRCS += _ctx_start.S eabi.c fabs.S flt_rounds.c fpgetmask.c fpgetround.c \ fpgetsticky.c fpsetmask.c fpsetround.c \ infinity.c ldexp.c makecontext.c modf.c _setjmp.S \ setjmp.S sigsetjmp.S signalcontext.c syncicache.c \ ==== //depot/projects/e500/lib/libc/powerpc/gen/flt_rounds.c#2 (text+ko) ==== @@ -37,6 +37,7 @@ #include <sys/types.h> #include <machine/float.h> +#ifndef _SOFT_FLOAT static const int map[] = { 1, /* round to nearest */ 0, /* round to zero */ @@ -52,3 +53,4 @@ __asm__ __volatile("mffs %0" : "=f"(fpscr)); return map[(fpscr & 0x03)]; } +#endif ==== //depot/projects/e500/lib/libc/powerpc/gen/fpgetmask.c#2 (text+ko) ==== @@ -43,6 +43,7 @@ #include <sys/types.h> #include <ieeefp.h> +#ifndef _SOFT_FLOAT fp_except_t fpgetmask() { @@ -51,3 +52,4 @@ __asm__("mffs %0" : "=f"(fpscr)); return ((fp_except_t)((fpscr >> 3) & 0x1f)); } +#endif ==== //depot/projects/e500/lib/libc/powerpc/gen/fpgetround.c#2 (text+ko) ==== @@ -43,6 +43,7 @@ #include <sys/types.h> #include <ieeefp.h> +#ifndef _SOFT_FLOAT fp_rnd_t fpgetround() { @@ -51,3 +52,4 @@ __asm__("mffs %0" : "=f"(fpscr)); return ((fp_rnd_t)(fpscr & 0x3)); } +#endif ==== //depot/projects/e500/lib/libc/powerpc/gen/fpgetsticky.c#2 (text+ko) ==== @@ -45,6 +45,7 @@ #include <sys/types.h> #include <ieeefp.h> +#ifndef _SOFT_FLOAT #ifdef __weak_alias __weak_alias(fpgetsticky,_fpgetsticky) #endif @@ -57,3 +58,4 @@ __asm__ __volatile("mffs %0" : "=f"(fpscr)); return ((fp_except_t)((fpscr >> 25) & 0x1f)); } +#endif ==== //depot/projects/e500/lib/libc/powerpc/gen/fpsetmask.c#2 (text+ko) ==== @@ -43,6 +43,7 @@ #include <sys/types.h> #include <ieeefp.h> +#ifndef _SOFT_FLOAT fp_except_t fpsetmask(fp_except_t mask) { @@ -55,3 +56,4 @@ __asm__ __volatile("mtfsf 0xff,%0" :: "f"(fpscr)); return (old); } +#endif ==== //depot/projects/e500/lib/libc/powerpc/gen/fpsetround.c#2 (text+ko) ==== @@ -43,6 +43,7 @@ #include <sys/types.h> #include <ieeefp.h> +#ifndef _SOFT_FLOAT fp_rnd_t fpsetround(fp_rnd_t rnd_dir) { @@ -55,3 +56,4 @@ __asm__ __volatile("mtfsf 0xff,%0" :: "f"(fpscr)); return (old); } +#endif ==== //depot/projects/e500/lib/libstand/Makefile#2 (text+ko) ==== @@ -66,7 +66,7 @@ .PATH: ${.CURDIR}/../libc/quad SRCS+= ashldi3.c ashrdi3.c .PATH: ${.CURDIR}/../libc/powerpc/gen -SRCS+= syncicache.c +SRCS+= eabi.c syncicache.c .endif # _setjmp/_longjmp ==== //depot/projects/e500/lib/msun/powerpc/fenv.h#2 (text+ko) ==== @@ -82,8 +82,13 @@ #define _ENABLE_MASK ((FE_DIVBYZERO | FE_INEXACT | FE_INVALID | \ FE_OVERFLOW | FE_UNDERFLOW) >> _FPUSW_SHIFT) +#ifndef _SOFT_FLOAT #define __mffs(__env) __asm __volatile("mffs %0" : "=f" (*(__env))) #define __mtfsf(__env) __asm __volatile("mtfsf 255,%0" : : "f" (__env)) +#else +#define __mffs(__env) +#define __mtfsf(__env) +#endif union __fpscr { double __d; ==== //depot/projects/e500/share/mk/bsd.cpu.mk#2 (text+ko) ==== @@ -109,6 +109,9 @@ . else _CPUCFLAGS = -mcpu=${CPUTYPE} . endif +. elif ${MACHINE_ARCH} == "powerpc" +# XXX: This needs to be configurable. Use TARGET_USE_SOFTFLOAT? +_CPUCFLAGS += -msoft-float . endif # Set up the list of CPU features based on the CPU type. This is an ==== //depot/projects/e500/share/sendmail/Makefile#2 (text+ko) ==== @@ -4,8 +4,8 @@ SENDMAIL_DIR=${.CURDIR}/../../contrib/sendmail CFDIR= cf -CFDIRS!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( -name CVS -prune \) -o -type d -print) -CFFILES!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( -name CVS -prune \) -o -type f -print) +CFDIRS!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( -name .svn -prune \) -o -type d -print) +CFFILES!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( -name .svn -prune \) -o -type f -print) DDIR= ${DESTDIR}/usr/share/sendmail ==== //depot/projects/e500/sys/boot/Makefile#2 (text+ko) ==== @@ -17,6 +17,11 @@ SUBDIR+= ofw .endif +# Build U-Boot library. +.if ${MACHINE_ARCH} == "powerpc" +SUBDIR+= uboot +.endif + # Pick the machine-dependent subdir based on the target architecture. SUBDIR+= ${MACHINE:S/amd64/i386/:S/sun4v/sparc64/} ==== //depot/projects/e500/sys/boot/common/bootstrap.h#2 (text+ko) ==== @@ -233,13 +233,15 @@ int file_addmodule(struct preloaded_file *fp, char *modname, int version, struct kernel_module **newmp); - /* MI module loaders */ #ifdef __elfN /* Relocation types. */ #define ELF_RELOC_REL 1 #define ELF_RELOC_RELA 2 +/* Relocation offset for some architectures */ +extern u_int64_t __elfN(relocation_offset); + struct elf_file; typedef Elf_Addr (symaddr_fn)(struct elf_file *ef, Elf_Size symidx); ==== //depot/projects/e500/sys/boot/common/dev_net.c#2 (text+ko) ==== @@ -144,7 +144,6 @@ return (error); } } - netdev_opens++; } netdev_opens++; f->f_devdata = &netdev_sock; @@ -245,7 +244,8 @@ printf("net_open: bootparam/whoami RPC failed\n"); return (EIO); } - printf("net_open: client name: %s\n", hostname); + if (debug) + printf("net_open: client name: %s\n", hostname); /* * Ignore the gateway from whoami (unreliable). @@ -259,10 +259,11 @@ } if (smask) { netmask = smask; - printf("net_open: subnet mask: %s\n", intoa(netmask)); + if (debug) + printf("net_open: subnet mask: %s\n", intoa(netmask)); } - if (gateip.s_addr) - printf("net_open: net gateway: %s\n", inet_ntoa(gateip)); + if (gateip.s_addr && debug) + printf("net_open: net gateway: %s\n", inet_ntoa(gateip)); /* Get the root server and pathname. */ if (bp_getfile(sock, "root", &rootip, rootpath)) { @@ -270,7 +271,7 @@ return (EIO); } exit: - /* + /* * If present, strip the server's address off of the rootpath * before passing it along. This allows us to be compatible with * the kernel's diskless (BOOTP_NFSROOT) booting conventions @@ -285,8 +286,10 @@ bcopy(&rootpath[i], &temp[0], strlen(&rootpath[i])+1); bcopy(&temp[0], &rootpath[0], strlen(&rootpath[i])+1); } - printf("net_open: server addr: %s\n", inet_ntoa(rootip)); - printf("net_open: server path: %s\n", rootpath); + if (debug) { + printf("net_open: server addr: %s\n", inet_ntoa(rootip)); + printf("net_open: server path: %s\n", rootpath); + } d = socktodesc(sock); sprintf(temp, "%6D", d->myea, ":"); @@ -303,5 +306,21 @@ static void net_print(int verbose) { - return; + int i, d, cnt; + struct netif_driver *drv; + + cnt = 0; + for (d = 0; netif_drivers[d]; d++) { + drv = netif_drivers[d]; + + for (i = 0; i < drv->netif_nifs; i++) { + printf("\t%s%d:", "net", cnt++); + if (verbose) { + printf(" (%s%d)", drv->netif_bname, + drv->netif_ifs[i].dif_unit); + } + } + } + printf("\n"); + return; } ==== //depot/projects/e500/sys/boot/common/load_elf.c#2 (text+ko) ==== @@ -83,6 +83,8 @@ const char *__elfN(kerneltype) = "elf kernel"; const char *__elfN(moduletype) = "elf module"; +u_int64_t __elfN(relocation_offset) = 0; + /* * Attempt to load the file (file) as an ELF module. It will be stored at * (dest), and a pointer to a module structure describing the loaded object @@ -100,7 +102,7 @@ fp = NULL; bzero(&ef, sizeof(struct elf_file)); - + /* * Open the image, read and validate the ELF header */ @@ -266,9 +268,33 @@ #else off = - (off & 0xff000000u); /* i386 relocates after locore */ #endif +#elif defined(__powerpc__) + /* + * On the purely virtual memory machines like e500, the kernel is + * linked against its final VA range, which is most often not + * available at the loader stage, but only after kernel initializes + * and completes its VM settings. In such cases we cannot use p_vaddr + * field directly to load ELF segments, but put them at some + * 'load-time' locations. + */ + if (off & 0xf0000000u) { + off = -(off & 0xf0000000u); + /* + * FIXME allow for specifying the offset via loader env var - + * hard code 0x01000000 for the moment - needs to be on 16MB + * boundary! + */ + off += 0x01000000; + ehdr->e_entry += off; +#ifdef ELF_VERBOSE + printf("Converted entry 0x%08x\n", ehdr->e_entry); +#endif + } else + off = 0; #else off = 0; /* other archs use direct mapped kernels */ #endif + __elfN(relocation_offset) = off; } ef->off = off; ==== //depot/projects/e500/sys/boot/powerpc/Makefile#2 (text+ko) ==== @@ -1,5 +1,5 @@ # $FreeBSD: src/sys/boot/powerpc/Makefile,v 1.1 2000/10/16 10:46:10 obrien Exp $ -SUBDIR= loader +SUBDIR= ofw uboot .include <bsd.subdir.mk> ==== //depot/projects/e500/sys/conf/NOTES#2 (text+ko) ==== @@ -1739,6 +1739,11 @@ # communications controllers. device scc +# Serial Communications Controller +# Supports the Siemens SAB 82532 and Zilog Z8530 multi-channel +# communications controllers. +device scc + # PCI Universal Communications driver # Supports various multi port PCI I/O cards. device puc ==== //depot/projects/e500/sys/conf/files#2 (text+ko) ==== @@ -867,6 +867,7 @@ dev/puc/puc_pccard.c optional puc pccard dev/puc/puc_pci.c optional puc pci dev/puc/pucdata.c optional puc pci +dev/quicc/quicc_core.c optional quicc dev/ral/rt2560.c optional ral dev/ral/rt2661.c optional ral dev/ral/if_ralrate.c optional ral @@ -888,8 +889,10 @@ dev/sbsh/if_sbsh.c optional sbsh dev/scc/scc_if.m optional scc dev/scc/scc_bfe_ebus.c optional scc ebus +dev/scc/scc_bfe_quicc.c optional scc quicc dev/scc/scc_bfe_sbus.c optional scc fhc | scc sbus dev/scc/scc_core.c optional scc +dev/scc/scc_dev_quicc.c optional scc dev/scc/scc_dev_sab82532.c optional scc dev/scc/scc_dev_z8530.c optional scc dev/scd/scd.c optional scd isa @@ -1051,6 +1054,7 @@ dev/uart/uart_core.c optional uart dev/uart/uart_dbg.c optional uart gdb dev/uart/uart_dev_ns8250.c optional uart uart_ns8250 +dev/uart/uart_dev_quicc.c optional uart scc dev/uart/uart_dev_sab82532.c optional uart uart_sab82532 dev/uart/uart_dev_sab82532.c optional uart scc dev/uart/uart_dev_z8530.c optional uart uart_z8530 ==== //depot/projects/e500/sys/conf/files.powerpc#2 (text+ko) ==== @@ -25,65 +25,26 @@ clean "opt_ah.h" # +crypto/blowfish/bf_enc.c optional ipsec ipsec_esp +crypto/des/des_enc.c optional ipsec ipsec_esp | netsmb dev/fb/fb.c optional sc dev/hwpmc/hwpmc_powerpc.c optional hwpmc dev/kbd/kbd.c optional sc +dev/ofw/openfirm.c optional aim +dev/ofw/ofw_bus_if.m optional aim +dev/ofw/ofw_bus_subr.c optional aim +dev/ofw/ofw_console.c optional aim +dev/ofw/ofw_disk.c optional ofwd aim +dev/powermac_nvram/powermac_nvram.c optional powermac_nvram powermac +dev/quicc/quicc_bfe_ocp.c optional quicc mpc85xx +dev/scc/scc_bfe_macio.c optional scc powermac dev/syscons/scgfbrndr.c optional sc dev/syscons/scterm-sc.c optional sc dev/syscons/scvtb.c optional sc +dev/tsec/if_tsec.c optional tsec +dev/uart/uart_bus_ocp.c optional uart mpc85xx dev/uart/uart_cpu_powerpc.c optional uart kern/syscalls.c optional ktr -powerpc/powerpc/atomic.S standard -powerpc/powerpc/autoconf.c standard -powerpc/powerpc/bcopy.c standard -powerpc/powerpc/busdma_machdep.c standard -powerpc/powerpc/clock.c standard -powerpc/powerpc/copyinout.c standard -powerpc/powerpc/copystr.c standard -powerpc/powerpc/cpu.c standard -powerpc/powerpc/elf_machdep.c standard -powerpc/powerpc/fpu.c standard -powerpc/powerpc/fuswintr.c standard -powerpc/powerpc/gdb_machdep.c optional gdb -powerpc/powerpc/in_cksum.c optional inet -powerpc/powerpc/interrupt.c standard -powerpc/powerpc/intr_machdep.c standard -powerpc/powerpc/locore.S standard no-obj -powerpc/powerpc/machdep.c standard -powerpc/powerpc/mmu_if.m standard -powerpc/powerpc/mmu_oea.c standard -powerpc/powerpc/nexus.c standard -powerpc/powerpc/ofwmagic.S standard -powerpc/powerpc/ofw_machdep.c standard -powerpc/powerpc/openpic.c standard -powerpc/powerpc/pic_if.m standard -powerpc/powerpc/pmap_dispatch.c standard -powerpc/powerpc/sc_machdep.c optional sc -powerpc/powerpc/setjmp.S standard -powerpc/powerpc/sigcode.S standard -powerpc/powerpc/suswintr.c standard -powerpc/powerpc/syncicache.c standard -powerpc/powerpc/sys_machdep.c standard -powerpc/powerpc/swtch.S standard -powerpc/powerpc/trap.c standard -powerpc/powerpc/uio_machdep.c standard -powerpc/powerpc/uma_machdep.c standard -powerpc/powerpc/vm_machdep.c standard - -powerpc/powerpc/db_disasm.c optional ddb -powerpc/powerpc/db_interface.c optional ddb -powerpc/powerpc/db_hwwatch.c optional ddb -powerpc/powerpc/db_trace.c optional ddb - -crypto/blowfish/bf_enc.c optional ipsec ipsec_esp -crypto/des/des_enc.c optional ipsec ipsec_esp | netsmb - -dev/ofw/openfirm.c standard -dev/ofw/ofw_bus_if.m standard -dev/ofw/ofw_bus_subr.c standard -dev/ofw/ofw_console.c standard -dev/ofw/ofw_disk.c optional ofwd - libkern/ashldi3.c standard libkern/ashrdi3.c standard libkern/bcmp.c standard @@ -99,14 +60,39 @@ libkern/ucmpdi2.c standard libkern/udivdi3.c standard libkern/umoddi3.c standard - -powerpc/powerpc/mem.c optional mem -powerpc/powerpc/mp_machdep.c optional smp - -powerpc/ofw/ofw_pci.c optional pci -powerpc/ofw/ofw_pcib_pci.c optional pci -powerpc/ofw/ofw_syscons.c optional sc - +powerpc/aim/clock.c optional aim +powerpc/aim/copyinout.c optional aim +powerpc/aim/interrupt.c optional aim +powerpc/aim/locore.S optional aim no-obj +powerpc/aim/machdep.c optional aim +powerpc/aim/mem.c optional mem aim +powerpc/aim/nexus.c optional aim +powerpc/aim/ofw_machdep.c optional aim +powerpc/aim/ofwmagic.S optional aim +powerpc/aim/swtch.S optional aim +powerpc/aim/trap.c optional aim +powerpc/aim/uio_machdep.c optional aim +powerpc/aim/uma_machdep.c optional aim +powerpc/aim/vm_machdep.c optional aim +powerpc/booke/clock.c optional e500 +powerpc/booke/copyinout.c optional e500 +powerpc/booke/interrupt.c optional e500 +powerpc/booke/locore.S optional e500 no-obj +powerpc/booke/machdep.c optional e500 +powerpc/booke/mem.c optional mem e500 +powerpc/booke/pmap.c optional e500 +powerpc/booke/support.S optional e500 +powerpc/booke/swtch.S optional e500 +powerpc/booke/trap.c optional e500 +powerpc/booke/uio_machdep.c optional e500 +powerpc/booke/vm_machdep.c optional e500 +powerpc/mpc85xx/nexus.c optional mpc85xx +powerpc/mpc85xx/ocpbus.c optional mpc85xx +powerpc/mpc85xx/opic.c optional mpc85xx +powerpc/mpc85xx/pci_ocp.c optional mpc85xx pci +powerpc/ofw/ofw_pci.c optional pci aim +powerpc/ofw/ofw_pcib_pci.c optional pci aim +powerpc/ofw/ofw_syscons.c optional sc aim powerpc/powermac/ata_kauai.c optional powermac ata powerpc/powermac/ata_macio.c optional powermac ata powerpc/powermac/grackle.c optional powermac pci @@ -115,12 +101,37 @@ powerpc/powermac/openpic_macio.c optional powermac pci powerpc/powermac/pswitch.c optional powermac pswitch powerpc/powermac/uninorth.c optional powermac pci - +powerpc/powerpc/atomic.S standard +powerpc/powerpc/autoconf.c standard +powerpc/powerpc/bcopy.c standard +powerpc/powerpc/bus_machdep.c standard +powerpc/powerpc/busdma_machdep.c standard +powerpc/powerpc/copystr.c standard +powerpc/powerpc/cpu.c standard +powerpc/powerpc/db_disasm.c optional ddb +powerpc/powerpc/db_interface.c optional ddb +powerpc/powerpc/db_hwwatch.c optional ddb +powerpc/powerpc/db_memrw.c optional ddb +powerpc/powerpc/db_trace.c optional ddb +powerpc/powerpc/elf_machdep.c standard +powerpc/powerpc/fpu.c optional aim +powerpc/powerpc/fuswintr.c standard +powerpc/powerpc/gdb_machdep.c optional gdb +powerpc/powerpc/in_cksum.c optional inet +powerpc/powerpc/intr_machdep.c standard +powerpc/powerpc/mmu_if.m optional aim +powerpc/powerpc/mmu_oea.c optional aim +powerpc/powerpc/mp_machdep.c optional smp aim +powerpc/powerpc/openpic.c standard +powerpc/powerpc/pic_if.m standard +powerpc/powerpc/pmap_dispatch.c optional aim +powerpc/powerpc/sc_machdep.c optional sc +powerpc/powerpc/setjmp.S standard +powerpc/powerpc/sigcode.S standard +powerpc/powerpc/suswintr.c standard +powerpc/powerpc/syncicache.c standard +powerpc/powerpc/sys_machdep.c standard powerpc/psim/iobus.c optional psim powerpc/psim/ata_iobus.c optional ata psim powerpc/psim/openpic_iobus.c optional psim powerpc/psim/uart_iobus.c optional uart psim - -dev/scc/scc_bfe_macio.c optional scc powermac - -dev/powermac_nvram/powermac_nvram.c optional powermac powermac_nvram ==== //depot/projects/e500/sys/conf/ldscript.powerpc#2 (text+ko) ==== @@ -10,7 +10,22 @@ SECTIONS { /* Read-only sections, merged into text segment: */ - . = 0x00100000 + SIZEOF_HEADERS; + + . = kernbase + SIZEOF_HEADERS; + + /********************************************************/ + /* FIXME: temporary location of text segment */ + .text : + { + *(.text) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t*) + } =0 + _etext = .; + PROVIDE (etext = .); + /********************************************************/ + .interp : { *(.interp) } .hash : { *(.hash) } .dynsym : { *(.dynsym) } @@ -37,15 +52,8 @@ .rela.sbss : { *(.rela.sbss) } .rela.sdata2 : { *(.rela.sdata2) } .rela.sbss2 : { *(.rela.sbss2) } - .text : - { - *(.text) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - *(.gnu.linkonce.t*) - } =0 - _etext = .; - PROVIDE (etext = .); + + .init : { *(.init) } =0 .fini : { *(.fini) } =0 .rodata : { *(.rodata) *(.gnu.linkonce.r*) } ==== //depot/projects/e500/sys/conf/options.powerpc#2 (text+ko) ==== @@ -1,7 +1,8 @@ # $FreeBSD: src/sys/conf/options.powerpc,v 1.9 2004/06/25 13:44:34 grehan Exp $ # Options specific to the powerpc platform kernels -OEA opt_global.h +AIM opt_global.h +E500 opt_global.h IPKDB GFB_DEBUG opt_gfb.h @@ -10,6 +11,7 @@ POWERMAC opt_platform.h PSIM +MPC85xx SC_OFWFB opt_ofwfb.h ==== //depot/projects/e500/sys/dev/md/md.c#2 (text+ko) ==== @@ -1179,7 +1179,7 @@ sc->start = mdstart_preload; #ifdef MD_ROOT if (sc->unit == 0) - rootdevnames[0] = "ufs:/dev/md0"; + rootdevnames[0] = "cd9660:/dev/md0"; #endif mdinit(sc); } @@ -1215,6 +1215,7 @@ ptr = *(u_char **)c; c = preload_search_info(mod, MODINFO_SIZE); len = *(size_t *)c; + ptr = pmap_mapdev((uintptr_t)ptr, len); printf("%s%d: Preloaded image <%s> %d bytes at %p\n", MD_NAME, mdunits, name, len, ptr); sx_xlock(&md_sx); ==== //depot/projects/e500/sys/dev/mii/ciphy.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ __FBSDID("$FreeBSD: src/sys/dev/mii/ciphy.c,v 1.8 2006/12/02 19:36:25 marius Exp $"); /* - * Driver for the Cicada CS8201 10/100/1000 copper PHY. + * Driver for the Cicada CS8201/CS8204 10/100/1000 copper PHY. */ #include <sys/param.h> @@ -91,6 +91,7 @@ MII_PHY_DESC(CICADA, CS8201), MII_PHY_DESC(CICADA, CS8201A), MII_PHY_DESC(CICADA, CS8201B), + MII_PHY_DESC(CICADA, CS8204), MII_PHY_END }; @@ -360,6 +361,7 @@ speed = status & CIPHY_AUXCSR_SPEED; switch (model) { + case MII_MODEL_CICADA_CS8204: case MII_MODEL_CICADA_CS8201: /* Turn off "aux mode" (whatever that means) */ ==== //depot/projects/e500/sys/dev/mii/miidevs#2 (text+ko) ==== @@ -136,6 +136,7 @@ /* Cicada Semiconductor PHYs (now owned by Vitesse?) */ model CICADA CS8201 0x0001 Cicada CS8201 10/100/1000TX PHY +model CICADA CS8204 0x0004 Cicada CS8204 10/100/1000TX PHY model CICADA CS8201A 0x0020 Cicada CS8201 10/100/1000TX PHY model CICADA CS8201B 0x0021 Cicada CS8201 10/100/1000TX PHY @@ -206,6 +207,20 @@ model MARVELL E1111 0x000c Marvell 88E1111 Gigabit PHY model MARVELL E1116 0x0021 Marvell 88E1116 Gigabit PHY model MARVELL E1118 0x0022 Marvell 88E1118 Gigabit PHY +model MARVELL E1000_3 0x0003 Marvell 88E1000 Gigabit PHY +model xxMARVELL E1011 0x0002 Marvell 88E1011 Gigabit PHY +model xxMARVELL E1000_3 0x0003 Marvell 88E1000 Gigabit PHY +model xxMARVELL E1000_5 0x0005 Marvell 88E1000 Gigabit PHY +model xxMARVELL E1111 0x000c Marvell 88E1111 Gigabit PHY +model MARVELL E1000S 0x0004 Marvell 88E1000S Gigabit PHY +model MARVELL E1000_5 0x0005 Marvell 88E1000 Gigabit PHY +model MARVELL E1000_6 0x0006 Marvell 88E1000 Gigabit PHY +model MARVELL E3082 0x0008 Marvell 88E3082 10/100 Fast Ethernet PHY +model MARVELL E1112 0x0009 Marvell 88E1112 Gigabit PHY +model MARVELL E1149 0x000b Marvell 88E1149 Gigabit PHY +model MARVELL E1111 0x000c Marvell 88E1111 Gigabit PHY +model MARVELL E1116 0x0021 Marvell 88E1116 Gigabit PHY +model MARVELL E1118 0x0022 Marvell 88E1118 Gigabit PHY model xxMARVELL E1000 0x0005 Marvell 88E1000 Gigabit PHY model xxMARVELL E1011 0x0002 Marvell 88E1011 Gigabit PHY model xxMARVELL E1000_3 0x0003 Marvell 88E1000 Gigabit PHY ==== //depot/projects/e500/sys/dev/scc/scc_bfe.h#2 (text) ==== @@ -76,7 +76,7 @@ int m_probed:1; int m_sysdev:1; - driver_filter_t *ih; + driver_intr_t *ih; serdev_intr_t *ih_src[SCC_ISRCCNT]; void *ih_arg; }; @@ -110,6 +110,7 @@ int cl_range; }; +extern struct scc_class scc_quicc_class; extern struct scc_class scc_sab82532_class; extern struct scc_class scc_z8530_class; @@ -139,7 +140,7 @@ int scc_bfe_attach(device_t dev); int scc_bfe_detach(device_t dev); -int scc_bfe_probe(device_t dev, u_int regshft, u_int rclk, u_int rid); +int scc_bfe_probe(device_t dev, u_int, u_int); struct resource *scc_bus_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); @@ -147,7 +148,7 @@ int scc_bus_read_ivar(device_t, device_t, int, uintptr_t *); int scc_bus_release_resource(device_t, device_t, int, int, struct resource *); int scc_bus_setup_intr(device_t, device_t, struct resource *, int, - driver_filter_t *, void (*)(void *), void *, void **); + void (*)(void *), void *, void **); int scc_bus_teardown_intr(device_t, device_t, struct resource *, void *); #endif /* _DEV_SCC_BFE_H_ */ ==== //depot/projects/e500/sys/dev/scc/scc_bfe_ebus.c#2 (text) ==== @@ -59,7 +59,7 @@ if (!strcmp(nm, "se") || !strcmp(cmpt, "sab82532")) { device_set_desc(dev, "Siemens SAB 82532 dual channel SCC"); sc->sc_class = &scc_sab82532_class; - return (scc_bfe_probe(dev, EBUS_REGSHFT, EBUS_RCLK, 0)); + return (scc_bfe_probe(dev, EBUS_REGSHFT, EBUS_RCLK)); } return (ENXIO); } ==== //depot/projects/e500/sys/dev/scc/scc_bfe_macio.c#2 (text) ==== @@ -56,7 +56,7 @@ if (!strcmp(nm, "escc")) { device_set_desc(dev, "Zilog Z8530 dual channel SCC"); sc->sc_class = &scc_z8530_class; - return (scc_bfe_probe(dev, MACIO_REGSHFT, MACIO_RCLK, 0)); + return (scc_bfe_probe(dev, MACIO_REGSHFT, MACIO_RCLK)); } return (ENXIO); } ==== //depot/projects/e500/sys/dev/scc/scc_bfe_sbus.c#2 (text) ==== @@ -56,7 +56,7 @@ if (!strcmp(nm, "zs")) { device_set_desc(dev, "Zilog Z8530 dual channel SCC"); sc->sc_class = &scc_z8530_class; - return (scc_bfe_probe(dev, SBUS_REGSHFT, SBUS_RCLK, 0)); + return (scc_bfe_probe(dev, SBUS_REGSHFT, SBUS_RCLK)); } return (ENXIO); } ==== //depot/projects/e500/sys/dev/scc/scc_bus.h#2 (text) ==== @@ -42,6 +42,7 @@ /* Hardware class -- the SCC type. */ #define SCC_CLASS_SAB82532 0 #define SCC_CLASS_Z8530 1 +#define SCC_CLASS_QUICC 2 /* The possible modes supported by the SCC. */ #define SCC_MODE_ASYNC 0x01 ==== //depot/projects/e500/sys/dev/scc/scc_core.c#2 (text) ==== >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200705202309.l4KN9pT2086521>