From owner-freebsd-sparc Sat Dec 22 19: 4:26 2001 Delivered-To: freebsd-sparc@freebsd.org Received: from lukla.Sun.COM (lukla.Sun.COM [192.18.98.31]) by hub.freebsd.org (Postfix) with ESMTP id B71FB37B41A for ; Sat, 22 Dec 2001 19:04:19 -0800 (PST) Received: from esunmail ([129.147.58.121]) by lukla.Sun.COM (8.9.3+Sun/8.9.3) with ESMTP id UAA12973 for ; Sat, 22 Dec 2001 20:05:10 -0700 (MST) Received: from smi.sun.com ([127.0.0.1]) by esunmail.central.sun.com (iPlanet Messaging Server 5.1 (built Sep 5 2001)) with ESMTP id <0GOS00J2K0F3GB@esunmail.central.sun.com> for freebsd-sparc@freebsd.org; Sat, 22 Dec 2001 20:01:51 -0700 (MST) Received: from [192.18.102.130] by esunmail.central.sun.com (mshttpd); Sat, 22 Dec 2001 19:01:51 -0800 Date: Sat, 22 Dec 2001 19:01:51 -0800 From: Jamey Wood Subject: compiling a sparc64 kernel? To: freebsd-sparc@freebsd.org Message-id: <1483c13c42.13c421483c@smi.sun.com> MIME-version: 1.0 X-Mailer: iPlanet Webmail Content-type: text/plain; charset=us-ascii Content-language: en Content-transfer-encoding: 7BIT Content-disposition: inline X-Accept-Language: en Sender: owner-freebsd-sparc@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org I've been trying for a few days to build the sparc64 kernel, but kept running into compiler errors (detailed notes below). I put in some hacks to get everything to compile, but the resulting kernel doesn't look to get as far into a boot as the binary version I downloaded per tmm's sparc64 README. Note that I've got an Ultra 1 (so I understand the boot won't get very far because of no sbus support, which is where I'm hoping I might be able to help the port). For me, tmm's kernel results in: /kernel data=0x202fb8+0xdfdc0 syms=[0x8+0x36210+0x8+0x2887c] Hit [Enter] to boot immediately, or any other key for command prompt. Booting [/kernel]... calling autoload nothing to autoload yet. post autoload jumping to kernel entry at 0xc0030000. sparc64_init: mdp=0xc0344000 kmdp=0xc0344000 boothowto=0 envp=0xc0342000 end=0x0 panic: trap_dmmu_miss: vmspace NULL Debugger("panic") Stopped at 0xc018479c: ta %xcc, 1 And my custom-compiled version (with the potentially bogus hacks I explain in detail below) gets: /kernel data=0x134ab8+0x4d2b8 syms=[0x8+0x255c0+0x8+0x1b653] Hit [Enter] to boot immediately, or any other key for command prompt. Booting [/kernel]... calling autoload nothing to autoload yet. post autoload jumping to kernel entry at 0xc0028000. RED State Exception TL=0000.0000.0000.0005 TT=0000.0000.0000.0080 TPC=0000.0000.c002.4200 TnPC=0000.0000.c002.4204 TSTATE=0000.0099.5800.1506 TL=0000.0000.0000.0004 TT=0000.0000.0000.0010 TPC=0000.0000.c002.4d50 TnPC=0000.0000.c002.4d54 TSTATE=0000.0099.5804.1406 TL=0000.0000.0000.0003 TT=0000.0000.0000.0068 TPC=0000.0000.c002.82a8 TnPC=0000.0000.c002.82ac TSTATE=0000.0099.5800.1506 TL=0000.0000.0000.0002 TT=0000.0000.0000.0034 TPC=0000.0000.c00e.3dac TnPC=0000.0000.c00e.3db0 TSTATE=0000.0099.5800.1605 TL=0000.0000.0000.0001 TT=0000.0000.0000.004e TPC=000 I'm trying to compile from a 5.0-current system (updated buildworld from yesterday), using tmm's toolchain. I'm just looking for an understanding of how to cleanly compile a kernel that'll get as far into the boot as the tmm version. Thanks in advance for any help. --Jamey *** Detailed info on compiler errors and my hacks to get around them /usr/local/bin/sparc64-elf-gcc -D__sparc64__ -D__FreeBSD__=5 -c -O -pipe -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -ansi -g -nostdinc -I- -I. -I../../.. -I../../../dev -I../../../contrib/dev/acpica -I../../../contrib/ipfilter -I ../../../../include -D_KERNEL -ffreestanding -include opt_global.h ../../../sparc64/sparc64/machdep.c ../../../sparc64/sparc64/machdep.c: In function `sparc64_init': ../../../sparc64/sparc64/machdep.c:223: `MODINFOMD_HOWTO' undeclared (first use in this function) ../../../sparc64/sparc64/machdep.c:223: (Each undeclared identifier is reported only once ../../../sparc64/sparc64/machdep.c:223: for each function it appears in.) ../../../sparc64/sparc64/machdep.c:224: `MODINFOMD_ENVP' undeclared (first use in this function) ../../../sparc64/sparc64/machdep.c:225: `MODINFOMD_KERNEND' undeclared (first use in this function) ../../../sparc64/sparc64/machdep.c: In function `Debugger': ../../../sparc64/sparc64/machdep.c:642: void value not ignored as it ought to be ../../../sparc64/sparc64/machdep.c:644: too many arguments to function `critical_exit' *** Error code 1 Stop in /usr/src/sys/sparc64/compile/sparc64. I've tried hacking whatever seems obvious (defining the MODINFOMD_* constants, and changing the critical_exit calls in machdep.c and tick.c to have no arguments). That gets me a little further, but it then dies on: /usr/local/bin/sparc64-elf-gcc -D__sparc64__ -D__FreeBSD__=5 -c -O -pipe -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -ansi -g -nostdinc -I- -I. -I../../.. -I../../../dev -I../../../contrib/dev/acpica -I../../../contrib/ipfilter -I../../../../include -D_KERNEL -ffreestanding -include opt_global.h vers.c linking kernel.debug db_disasm.o: In function `db_disasm': db_disasm.o(.text+0x464): undefined reference to `abs' db_disasm.o(.text+0x668): undefined reference to `abs' So I've tried hacking that one by defining my own abs() function in db_disasm. That does get everything to finally compile and link: linking kernel.debug text data bss dec hex filename 985789 247584 316080 1549453 17a48d kernel.debug /usr/local/bin/sparc64-elf-objcopy --strip-debug kernel.debug kernel But, as I noted earlier, this kernel doesn't get very far into a boot at all, and I'm worried about the hacks I used to get this far. Is the -current tree just temporarily in a state that doesn't compile cleanly? Or am I doing something fundamentally wrong? To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-sparc" in the body of the message