Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Nov 1998 13:21:35 +0530 (IST)
From:      Kapil Chowksey <kchowksey@hss.hns.com>
To:        freebsd-sparc@FreeBSD.ORG
Subject:   for a change, some code
Message-ID:  <199811180751.NAA29623@tarang.hss.hns.com>

next in thread | raw e-mail | index | archive | help
List,

A while ago, I wrote some bootup code for freebsd/sparc64. It contains
the following :

	1. A serial console driver (for zs chip)
	2. A PROM CIF library
	3. generation of hardclock() using ultrasparc's `tick_cmpr'
           ASR.
	4. RAM probing code which puts this info into `phys_avail'
	   array expected by machine independent vm code.
	5. A pmap_bootstrap() and corresponding DTLB miss handler.
	   (no dirty bit and reference bit support yet) I have some
	   ideas about a fast optimised pmap for sun4u that can be
	   better than solaris or netbsd's TSB based approach.
	6. panic()
	7. support for linker sets.
	8. identification of CPU.

All this code is written from-scratch and I can upload it to some ftp
server if someone cares. But pragmatism calls for borrowing
netbsd/sparc64 code.

Here's an output from the kernel booting up on an ultra 1 :

ok 4000 dload /tftpboot/kernel.aout
Boot device: /sbus/qec/be:,|tftpboot|kernel.aout  File and args: 
36400 
ok go
prom_init: prom_stdout = 0xfffe8700
prom_init: prom_root = 0xf0029588
zs0: zsnode = 0xf005a174
zs0: mapped at = 0xfffd8000
cninit: best_cp is 0x436460
zs0: zscninit() 0xfffd8004
CPU: UltraSparc-I (manuf=0x17, impl=0x10), MAXTL=5, MAXWIN = 7
prom ttable at 0xf0000000
my ttable at 0x428000
pil = 0xd, tick = 0x8000000652bf3efe, tick_cmpr = 0xfffffffffffff261
pil = 0xd, tick = 0x00000006536e4002, tick_cmpr = 0x0000000653840c4f
(0x0000000000000000, 0x0000000007efe000)
(0x0000000007f00000, 0x0000000007f36000)
(locked) va 00000000:fffd8000 -> pa 000001ff:f1100000
firstphys = 0x438000, avail_start = 0x38000
PD1 = 0x0000000000438000, SELF1 = 0x8000000000038037, SELF2 = 0x800000000003a037
firstphys = 0x43c000, avail_start = 0x3c000
i = 0: va(0x0000000000900000) -> pa(0x0000000007f00000)
        OFS=0, 1, 80
        PD2 = 0x000000000043c000, data = 0x800000000003c037
        PT = 0x000000000043e000, data = 0x800000000003e037
        data = 0x8000000007f00037
i = 1: va(0x0000000000902000) -> pa(0x0000000007f02000)
        OFS=0, 1, 81
        data = 0x8000000007f02037
i = 2: va(0x0000000000904000) -> pa(0x0000000007f04000)
        OFS=0, 1, 82
        data = 0x8000000007f04037
i = 3: va(0x0000000000906000) -> pa(0x0000000007f06000)
        OFS=0, 1, 83
        data = 0x8000000007f06037
i = 4: va(0x0000000000908000) -> pa(0x0000000007f08000)
        OFS=0, 1, 84
        data = 0x8000000007f08037
ptbase is 0x0000000000036000
current translations of 0000000000900000:
preparing for a miss ... 0x0000000000000000
dtlb miss handler wrote these translations:
va 00000000:00900000 -> pa 00000000:07f00000
current translations of 0000000000902000:
preparing for a miss ... 0x0000000000000000
dtlb miss handler wrote these translations:
va 00000000:00902000 -> pa 00000000:07f02000
current translations of 0000000000904000:
preparing for a miss ... 0x0000000000000000
dtlb miss handler wrote these translations:
va 00000000:00904000 -> pa 00000000:07f04000
current translations of 0000000000906000:
preparing for a miss ... 0x0000000000000000
dtlb miss handler wrote these translations:
va 00000000:00906000 -> pa 00000000:07f06000
current translations of 0000000000908000:
preparing for a miss ... 0x0000000000000000
dtlb miss handler wrote these translations:
va 00000000:00908000 -> pa 00000000:07f08000
current translations of 000000000090a000:
preparing for a miss ... panic:         tl=1, tt=068, tpc=0x0000000000430b08
                 tstate=0000004400001602
%g1 = 0x0000000000000030
%g2 = 0x000000000090a000
%g3 = 0x0000000000000000
%g4 = 0xfffffffe00000000
%g5 = 0x800000000003e037
%g6 = 0x0000000000036000
%g7 = 0x0000000000000414
Program terminated
ok 

All this is sun4u specific code. I am of the opinion that sun4u must
be a different archiecture from sun4[c,m,] etc. as far as code
organisation is concerned. Device drivers can be shared but not trap
handling, and pmap.

So, if anyone wants first hand knowledge about the sun4u boot
sequence, compilers, sbus etc.; I will be willing to help.

-- 
Kapil Chowksey                         Viva GNU !
kchowksey@hss.hns.com

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-sparc" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811180751.NAA29623>