Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Dec 2001 12:04:28 -0800
From:      Jamey Wood <Jamey.Wood@Sun.COM>
To:        freebsd-sparc@freebsd.org
Subject:   Re: compiling a sparc64 kernel?
Message-ID:  <1710517c0b.17c0b17105@smi.sun.com>

next in thread | raw e-mail | index | archive | help
> > Setting pil to 14 does get me all the way to a mountroot prompt:
> 
> Ok, cool.  This is a stopgap at best, I mostly wanted to see what
> was going on.  Thomas would like you to try the patch he posted
> as well, which may print a stray interrupt message.  Revert the
> above change first.

With just Thomas's patch (and _not_ setting pil to 14), I get:

  Booting [/kernel]...
  calling autoload
  nothing to autoload yet.
  post autoload
  jumping to kernel entry at 0xc0028000.
  sparc64_init: mdp=0xc01ba000 kmdp=0xc01ba000 boothowto=0
    envp=0xc01b8000 end=0x0
  Copyri
  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.0000.5000.1507
  TL=0000.0000.0000.0004 TT=0000.0000.0000.0010
  TPC=0000.0000.c002.4d18 TnPC=0000.0000.c002.4d1c
  TSTATE=0000.0000.5004.1407
  TL=0000.0000.0000.0003 TT=0000.0000.0000.0068
  TPC=0000.0000.c002.8798 TnPC=0000.0000.c002.879c
  TSTATE=0000.0000.5000.1507
  TL=0000.0000.0000.0002 TT=0000.0000.0000.0010
  TPC=0000.0000.c00d.80c0 TnPC=0000.0000.c00d.80c4 
  TSTATE=0000.0000.5000.1606
  TL=0000.0000.0000.0001 TT=0000.0000.0000.004e
  TPC=0000.0000.c00d.7bb4 TnPC=0000.0000.c00d.7bb8 
  TSTATE=0000.00a5.0000.1605
 
> > It looks like the probe 
> > should work by looking for "counter-timer" in the OFW?
> 
> Yes, that's the timer chip.  What I think you should do is use
> whatever means necessary to disable the timer early while the
> kernel is still running on the openfirmware trap table.  Right
> around the tick_stop() in sparc64_init().  You'll need to find
> the physical address of the timer's registers by traversing the
> openfirmware device tree and fiddle them using stxa() with asi
> ASI_PHYS_BYPASS_EC_WITH_EBIT.  Look at how the nexus device does
> it in nexus_probe() (sparc64/sparc64/nexus.c).  The timerreg.h
> header from netbsd seems to have definitions for the timer registers
> (timerreg_4u).  From what I've read in comments it seems that there
> are 2, one of which is enabled by the firmware.

Thanks.  I'll try to play around with this.

> We'd also like to see the properties of the timer openfirmware
> device node and of the sbus node itself.  From the ok prompt do
> "cd /" and then "ls" and then navigate through the devices using
> "cd" until you find it, and then do ".properties".

Here's that output:

  ok pwd
  /counter-timer@1f,3c00
  ok .properties
  address                  fffc7c00
                           fffc5860
                           fffc3060
  interrupts               000007f0
                           000007f1
  reg                      000001fe 00003c00 00000000 00000020
                           000001fe 00003860 00000000 00000010
                           000001fe 00003060 00000000 00000010
  name                     counter-timer

--Jamey


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?1710517c0b.17c0b17105>