「BSD小僧の日記」
2005/10版 その3



2005/10/21 (金)

3年と249日目

なんとか起きられたので気合いを入れて朝を過ごす。

また新型に乗れなくなってきたな。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbarm (Armadillo-9)

distccdの設定をしてpkgsrc/mail/cyrus-imapdを作ったら、あっさり完了。distccは偉大だ。

distccdを動かす側で、こんなスクリプトをでっちあげた。

#!/bin/sh
MACHINE=$1
DATE=$2
ALLOWADDR=$3
MYIPADDR=192.168.100.32
DISTCCD=/usr/pkg/bin/distccd
USER=nobody
TOOLCHAIN_BIN=/export/t/${DATE}/${MACHINE}/bin
case ${MACHINE} in
evbppc|macppc|mpc860)
        ARCH=powerpc
        ;;
evbarm)
        ARCH=arm
        ;;
dreamcast|hpcsh|landisk)
        ARCH=sh3el
        ;;
*)
        echo unsupported machine
        exit 1
        ;;
esac
ln -sf ${TOOLCHAIN_BIN}/${ARCH}--netbsdelf-gcc ${TOOLCHAIN_BIN}/cc
ln -sf ${TOOLCHAIN_BIN}/${ARCH}--netbsdelf-gcc ${TOOLCHAIN_BIN}/gcc
ln -sf ${TOOLCHAIN_BIN}/${ARCH}--netbsdelf-c++ ${TOOLCHAIN_BIN}/c++
ln -sf ${TOOLCHAIN_BIN}/${ARCH}--netbsdelf-g++ ${TOOLCHAIN_BIN}/g++
env PATH=${TOOLCHAIN_BIN}:${PATH} ${DISTCCD} --listen ${MYIPADDR} --user ${USER} --allow ${ALLOWADDR}


[View Log(0)] [Trackback]
Name: Comment:

2005/10/22 (土)

3年と250日目

多摩方面へ。

やる気満々。


[View Log(0)] [Trackback]
Name: Comment:

華麗なる招待

ピチカートファイヴの名曲。何ともいえない感覚がとても気に入っている。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbppc (OBS200)

tqphyの話のつづき。

tqphyはなぜかアドレス0に反応してphyが二つattachされてしまう。configで回避しようとしたもののukphyがconfigに入っていると結局ukphyでattachされてしまい、emacにtqphyとukphyがぶら下がるという事象だった。

OBS200のrtkはukphyなのでukphyを削ることもできず、emacとrtkが共存できないじゃないかと日記に書いていた。

次の日、いつもお世話になっているTさんからメールが来ていた。メールによると、元のconfigのように

tqphy*  at mii? phy 0                  # TDK Semiconductor PHYs
ukphy*  at mii? phy ?                   # generic unknown PHYs

とPHYにmiiを指定するのではなく、

tqphy*  at emac? phy 0                  # TDK Semiconductor PHYs
ukphy*  at rtk? phy ?                   # generic unknown PHYs

のようにemacやrtkを明示的に指定すれば良いのでは、とのことだった。

さっそくやってみる。

+4000000,
00450000-04000000 -> 007a4000-04000000 = 385c000
Board config data:
  mem_size = 67108864
  mac_address_local = 00:80:6d:51:0e:7d
  processor_speed = 200000000
  plb_speed = 100000000
  pci_speed = 33000000
  PLL Mode Register = 0xa6b2c000
  Chip Pin Strapping Register = 0x6ab08c00
Loaded initial symtab at 0x709a80, strtab at 0x72dbbc, # entries 9143
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.
NetBSD 3.99.9 (OPENBLOCKS200) #15: Sat Oct 22 10:33:30 UTC 2005
        root@mini:/usr/export/o/20050924/evbppc/sys/arch/evbppc/compile/OPENBLOCKS200
Model: OpenBlockS S/R IBM PowerPC 405GP Board
total memory = 65536 KB
avail memory = 57280 KB
plb0 (root)
cpu0 at plb0: 200MHz 405GP (Revision 1.69)
Instruction cache size 8192 line size 32
Data cache size 8192 line size 32
PVR: owner 401 core family 1 cache 0 version 5 asic 5
ecc0 at plb0 irq 16: ECC controller
opb0 at plb0
com0 at opb0 addr 0xef600300 irq 0: ns16550a, working fifo
com0: console
com1 at opb0 addr 0xef600400 irq 1: ns16550a, working fifo
emac0 at opb0 addr 0xef600800 irq 9: 405GP EMAC
emac0: interrupting at irqs 9 .. 15
emac0: Ethernet address 00:80:6d:51:0e:7d
tqphy0 at emac0 phy 0: 78Q2120 10/100 media interface, rev. 11
tqphy0: wildcard address
OUI 0x00039c model 0x0014 rev 11 at emac0 phy 1 not configured
ifmedia_set: no match for 0x20/0xffffffff
gpio0 at opb0 addr 0xef600700: On-Chip GPIO controller
gpiic0 at opb0 addr 0xef600500 irq 2: On-Chip IIC controller
iic0 at gpiic0: I2C bus
wdog0 at opb0: 5 second period
pchb0 at plb0
pchb0: IBM PPC 405GP PCI Bridge (rev. 0x01)
pci0 at pchb0
pci0: i/o space, memory space enabled
IBM PPC 405GP PCI Bridge (host bridge, revision 0x01) at pci0 dev 0 function 0 not configured
rtk0 at pci0 dev 7 function 0: Realtek 8139 10/100BaseTX
rtk0: interrupting at irq 28
rtk0: Ethernet address 00:80:6d:51:0e:7e
ukphy0 at rtk0 phy 7: Generic IEEE 802.3u media interface
ukphy0: OUI 0x000000, model 0x0000, rev. 0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
pbus at plb0 not configured
biomask 1c00 netmask 1c08 ttymask 1c08
emac0: emac_wol_intr
emac0: receive error: bad packet
emac0: receive error: packet too long
emac0: emac_txde_intr
emac0: emac_rxde_intr
emac0: emac_wol_intr
emac0: emac_txde_intr
emac0: emac_rxde_intr
Setting PIT to 200000000/100 = 2000000
root device: emac0
dump device: 
file system (default generic): nfs
root on emac0
nfs_boot: trying DHCP/BOOTP
emac0: MII timed out
emac0: MII timed out
emac0: MII timed out

あれ、希望どおりemacにtqphyとrtkにukphyがattachされて、tqphyの二つ目のPHYが無視されているのにemacがMII timed outを連発して使えない (つまり、元々の不具合どおり)。

よくメールを見てみると次のように書いてあった。

tqphy*  at emac? phy 1                  # TDK Semiconductor PHYs
ukphy*  at rtk? phy ?                   # generic unknown PHYs

そういえば、tqphyはアドレス0に問答無用で反応するという話だったので、明示的にアドレス1を使うようにphy 1と指定しなければいけなかったのか。

ということでやってみる。

+4000000,
00450000-04000000 -> 007a4000-04000000 = 385c000
Board config data:
  mem_size = 67108864
  mac_address_local = 00:80:6d:51:0e:7d
  processor_speed = 200000000
  plb_speed = 100000000
  pci_speed = 33000000
  PLL Mode Register = 0xa6b2c000
  Chip Pin Strapping Register = 0x6ab08c00
Loaded initial symtab at 0x709a80, strtab at 0x72dbbc, # entries 9143
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.
NetBSD 3.99.9 (OPENBLOCKS200) #16: Sat Oct 22 11:05:57 UTC 2005
        root@mini:/usr/export/o/20050924/evbppc/sys/arch/evbppc/compile/OPENBLOCKS200
Model: OpenBlockS S/R IBM PowerPC 405GP Board
total memory = 65536 KB
avail memory = 57280 KB
plb0 (root)
cpu0 at plb0: 200MHz 405GP (Revision 1.69)
Instruction cache size 8192 line size 32
Data cache size 8192 line size 32
PVR: owner 401 core family 1 cache 0 version 5 asic 5
ecc0 at plb0 irq 16: ECC controller
opb0 at plb0
com0 at opb0 addr 0xef600300 irq 0: ns16550a, working fifo
com0: console
com1 at opb0 addr 0xef600400 irq 1: ns16550a, working fifo
emac0 at opb0 addr 0xef600800 irq 9: 405GP EMAC
emac0: interrupting at irqs 9 .. 15
emac0: Ethernet address 00:80:6d:51:0e:7d
OUI 0x00039c model 0x0014 rev 11 at emac0 phy 0 not configured
tqphy0 at emac0 phy 1: 78Q2120 10/100 media interface, rev. 11
tqphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
gpio0 at opb0 addr 0xef600700: On-Chip GPIO controller
gpiic0 at opb0 addr 0xef600500 irq 2: On-Chip IIC controller
iic0 at gpiic0: I2C bus
wdog0 at opb0: 5 second period
pchb0 at plb0
pchb0: IBM PPC 405GP PCI Bridge (rev. 0x01)
pci0 at pchb0
pci0: i/o space, memory space enabled
IBM PPC 405GP PCI Bridge (host bridge, revision 0x01) at pci0 dev 0 function 0 not configured
rtk0 at pci0 dev 7 function 0: Realtek 8139 10/100BaseTX
rtk0: interrupting at irq 28
rtk0: Ethernet address 00:80:6d:51:0e:7e
ukphy0 at rtk0 phy 7: Generic IEEE 802.3u media interface
ukphy0: OUI 0x000000, model 0x0000, rev. 0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
pbus at plb0 not configured
biomask 1c00 netmask 1c08 ttymask 1c08
emac0: emac_wol_intr
emac0: emac_txde_intr
emac0: emac_rxde_intr
emac0: emac_wol_intr
emac0: emac_txde_intr
emac0: emac_rxde_intr
Setting PIT to 200000000/100 = 2000000
root device: emac0
dump device: 
file system (default generic): nfs
root on emac0
nfs_boot: trying DHCP/BOOTP
nfs_boot: BOOTP next-server: 192.168.100.32
nfs_boot: my_name=obs200
nfs_boot: my_addr=192.168.100.81
nfs_boot: my_mask=255.255.255.0
root on mini:/usr/obs266
root time: 0x435a1e0b
inittodr: rtc not present - CHECK AND RESET THE DATE.
init path (default /sbin/init): 
init: copying out path `/sbin/init' 11
/etc/rc.conf is not configured.  Multiuser boot aborted.
Enter pathname of shell or RETURN for /bin/sh: 
Terminal type? [unknown] 
Terminal type is unknown.
We recommend creating a non-root account and using su(1) for root access.
obs200# uname -a
NetBSD obs200 3.99.9 NetBSD 3.99.9 (OPENBLOCKS200) #16: Sat Oct 22 11:05:57 UTC 2005  root@mini:/usr/export/o/20050924/evbppc/sys/arch/evbppc/compile/OPENBLOCKS200 evbppc
obs200# ls
.cshrc     bin        etc        mnt        netbsd.img sbin       usr
.profile   dev        lib        netbsd     rescue     stand      var
altroot    dig.core   libexec    netbsd.gdb root       tmp
obs200#

おぉ、すばらしい。emacはtqphyの一つ目を無視して二つ目を使い、rtkはukphyをちゃんと使っている。

動作も支障がない。

とりあえず、これで一つ幸せになれるということか。

--- sys/arch/evbppc/conf/OPENBLOCKS200.orig     2005-10-06 14:51:34.000000000 +0000
+++ sys/arch/evbppc/conf/OPENBLOCKS200  2005-10-22 11:05:13.000000000 +0000
@@ -173,10 +173,10 @@
 viaide* at pci? dev ? function ?       # VIA/AMD/Nvidia IDE controllers
 atabus* at ata?
 
-tlp*   at pci? dev ? function ?        # DECchip 21x4x and clones
+rtk*   at pci? dev ? function ?        # Realtek 8129/8139
 
-lxtphy*        at mii? phy ?                   # Level One LXT-970 PHYs
-ukphy* at mii? phy ?                   # generic unknown PHYs
+tqphy* at emac? phy 1                  # TDK Semiconductor PHYs
+ukphy* at rtk? phy ?                   # generic unknown PHYs
 
 #cardslot* at cbb?
 #cardbus* at cardslot?

先のメールでは、tqphyの問題は難しいのでsend-prして詳しい人に任せるのが良さそう、とのこと。いよいよsend-prするかなぁ。

どういうsend-prが良いのだろう。

  1. tqphyでPHYが二つattachされる
  2. tqphyのrevisionは11でsys/dev/mii/tqphyreg.hにある不具合がfixされたものである
  3. tqphyにPHYを一つだけattachさせるためconfigのphyを直接指定したらうまくいった
  4. しかし、OPENBLOCKS200にはrtkも接続されており、ukphyも使いたい
  5. しかたがないのでmiiじゃなくてemacやrtkを直接指定したら動く

タイトルはどうするかなぁ。duplicate attachment of tqphyとか?


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbarm

なんかdbにおちていた。

db> 
netbsd:epcomintr+0x10
        scp=0xc03b5db8 rlv=0xc03b2498 (netbsd:ep93xx_intr_dispatch+0x208)
        rsp=0xc2d3ce4c rfp=0xc2d3ce78
        r10=0xc049fb90 r9=0xc2d3ce7c
        r8=0x00000000 r7=0x00000080 r6=0x000000c0 r5=0xc11a9ee0
        r4=0x00000080
netbsd:ep93xx_intr_dispatch+0x10
        scp=0xc03b22a0 rlv=0xc03b25fc (netbsd:irq_entry+0x70)
        rsp=0xc2d3ce7c rfp=0xc2d3cf10
        r10=0xc24ca364 r9=0x00000000
        r8=0xc049f1d8 r7=0xc049cf28 r6=0x00000000 r5=0xc04910c4
        r4=0x0000000c
netbsd:mi_switch+0x10
        scp=0xc02fe39c rlv=0xc02fdd3c (netbsd:ltsleep+0x3c8)
        rsp=0xc2d3cf14 rfp=0xc2d3cf48
        r10=0xc03e6af4 r9=0x00000000
        r8=0x00000000 r7=0xc048f6a4 r6=0xc24c2b28 r5=0x00000000
        r4=0xc24ca364
netbsd:ltsleep+0x10
        scp=0xc02fd984 rlv=0xc034489c (netbsd:sched_sync+0x138)
        rsp=0xc2d3cf4c rfp=0xc2d3cfb0
        r10=0xc04028b4 r9=0x00000000
        r8=0xc0472e40 r7=0xc2d3cf54 r6=0xc11a8d20 r5=0xc11a8d00
        r4=0x00000000
netbsd:sched_sync+0x10
        scp=0xc0344774 rlv=0xc03738e4 (netbsd:proc_trampoline+0x18)
        rsp=0xc2d3cfb4 rfp=0xc01d9e3c
        r10=0xc049c704 r9=0x00000000
        r8=0xc049f1d8 r7=0x00000000 r6=0x00000000 r5=0xc24ca364
        r4=0xc0344764
Bad frame pointer: 0xc01d9e3c
db< sync
syncing disks... done
unmounting file systems...
Non-emulated page fault with intr_depth > 0
Fatal kernel mode data abort: 'Translation Fault (P)'
trapframe: 0xc2d3c804
FSR=00000007, FAR=00000020, spsr=60000013
r0 =00000001, r1 =00000000, r2 =00000000, r3 =c04028b4
r4 =00000000, r5 =00000000, r6 =00000000, r7 =00000000
r8 =00000000, r9 =c24cb000, r10=00000000, r11=c2d3c86c
r12=c2d3c870, ssp=c2d3c850, slr=c032beb0, pc =c032adfc
Stopped at      netbsd:buf_lotsfree+0x18:       ldr     r3, [r2, #0x020]
db<
db< cont
panic: Fatal abort
Stopped at      netbsd:cpu_Debugger+0x4:        mov     r15, r14
db< 
dumping to dev 16,1 offset 131328
dump 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 succeeded
rebooting...


[View Log(0)] [Trackback]
Name: Comment:

2005/10/23 (日)

3年と251日目

服とか色々買ったみたい。


[View Log(0)] [Trackback]
Name: Comment:

アキバ

Norton AntiVirus2006, Symantec, 3,969円, Sofmap秋葉原一号店

まぁ、税金みたいなもんですね。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbppc (OBS266)

pthread話の続き。

偶然見かけたTさんからメールをもらっていて色々と教えてもらっていたので試してみる。

以前の方法はlibpthreadを変更する方法だったのだけれど、メールによるとpthreadをいじるのは面倒なのでkernelに入れてしまえば良いのではないか、とのこと。

具体的には、使っているのがcpu_setmcontext()だけなので、そこの最初に次のような変更を入れるのが簡単であろうとアドバイスをうける。

#ifdef 適当に
        gr[_REG_MSR] &= ~PSL_ME;
        gr[_REG_MSR] &= ~PSL_RI;
#endif

ということで、それはどこかな? と探してみたところsys/arch/powerpc/powerpc/sig_machdep.cらしい。

ということで次のようなpatchをあてる。

--- sys/arch/powerpc/powerpc/sig_machdep.c.orig 2005-10-22 14:24:14.000000000 +0000
+++ sys/arch/powerpc/powerpc/sig_machdep.c      2005-10-22 14:59:36.000000000 +0000
@@ -221,6 +221,9 @@
        struct pcb *pcb = &l->l_addr->u_pcb;
 #endif
 
+#ifdef PPC_IBM4XX
+       gr[_REG_MSR] &= ~(PSL_ME|PSL_RI);
+#endif
        /* Restore GPR context, if any. */
        if (flags & _UC_CPU) {
                if (!PSL_USEROK_P(gr[_REG_MSR]))

pthreadをオリジナルに戻して、先のpatchをあてたkernelで起動し、digを実行する。

obs266# uname -a
NetBSD obs266 3.99.9 NetBSD 3.99.9 (OPENBLOCKS266) #1: Sat Oct 22 14:27:32 UTC 2005  root@mini:/usr/export/o/20050924/evbppc/sys/arch/evbppc/compile/OPENBLOCKS266 evbppc
obs266# ldd /usr/bin/dig
/usr/bin/dig:
        -lpthread.0 => /usr/lib/libpthread.so.0
        -lc.12 => /usr/lib/libc.so.12
obs266# dig www.netbsd.org
; <<>> DiG 9.3.0 <<>> www.netbsd.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47963
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 3
;; QUESTION SECTION:
;www.netbsd.org.                        IN      A
;; ANSWER SECTION:
www.netbsd.org.         64942   IN      A       204.152.190.12
;; AUTHORITY SECTION:
netbsd.org.             64942   IN      NS      uucp-gw-2.pa.dec.com.
netbsd.org.             64942   IN      NS      ns.netbsd.org.
netbsd.org.             64942   IN      NS      adns1.berkeley.edu.
netbsd.org.             64942   IN      NS      adns2.berkeley.edu.
netbsd.org.             64942   IN      NS      uucp-gw-1.pa.dec.com.
;; ADDITIONAL SECTION:
ns.netbsd.org.          64942   IN      A       204.152.190.11
adns1.berkeley.edu.     40953   IN      A       128.32.136.3
adns2.berkeley.edu.     51796   IN      A       128.32.136.14
;; Query time: 47 msec
;; SERVER: 192.168.100.1#53(192.168.100.1)
;; WHEN: Sat Oct 22 14:59:12 2005
;; MSG SIZE  rcvd: 223
obs266#

おぉ、動く。さすが。

さらにメールでは、元々はif (!PSL_USEROK_P...)でエラーになっていたのだと思うので、これも調整したほうが良い、という話らしい。

これはどういう意味なのだろうか。

また、libpthreadで0xd032を0xc030に変更する話について、OEAでは0xc030に変えてはダメなのだそうだ。

ということでkernelで対応する方向でsend-prの情報を更新していきたい。でも、先の調整の話がよくわかっていないのでどうしよう。

send-prってメールでやらないとダメなのかな。Webのフォームだと最初のはできるけど、その後の情報追加みたいなのはどうなんだろう。


[View Log(0)] [Trackback]
Name: Comment:

2005/10/24 (月)

3年と252日目

昨日は早く寝たはずだけど、起きないね。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbppc (OBS266)

pthread話の続きの続き。

さらにTさんからメールをもらった。

if (!PSL_USEROK_P...)でエラーになっていたのを調整したほうが良い、という話について。

元々の意味では、

        /* Restore GPR context, if any. */
        if (flags & _UC_CPU) {
                if (!PSL_USEROK_P(gr[_REG_MSR]))
                        return (EINVAL);
                ...

というところで、msrの「変えてもいいビット以外を変えようとしていたらEINVAL」としているのだけれど、それを「変えてもいいビット以外の変化は無視して続行する」つまり変えてもいいビットだけ変えられるようにすれば良いのではないか、ということだそう。

そうすれば、IBM4XXでMEやRIをセットしようとしても無視されるだけで問題が発生しない。さらにlibpthreadの0xd032という定数も消せる、ということらしい。

なるほど。とは言うものの、どうすれば変えてもいいビットを知れば良いのかわからない。手始めにPSL_USEROK_Pって何か調べようとソースをgrepしてみたがヒットしない。マクロかと思っていたのだけど一体どこで定義されているのだろう。

うーむ。これじゃsend-prするまで時間がかかりそう。

かっこ悪いけど#ifdefのやつをsend-prしようかな。っていうか、していいですか。


[View Log(0)] [Trackback]
Name: Comment:

lighttpd

最近blogやWikiをはじめようかと思い、例によって目的と手段が逆転してblogツールやWikiクローンをあれこれ見ている。

まぁ、色々使ってみるかということでYukiWikiをいれてみる。が、Webサーバを持っていないので例によってthttpdを使う。

せっかくだからArmadillo-9にも入れてみようかと思い、thttpdも芸がないから別のhttpdを入れようかと思い立つ。

bozohttpdを試してみるが、cgiがどうも期待どおりにうごいてくれず断念。

もうApacheでも入れるかとbuildしはじめたところ、IRCでlighttpdというのを教えてもらう。

lightというぐらいなので軽くて速いらしい。lightだからといって機能が少ないというわけでもなく、いろいろとモジュールが用意されているみたいである。

とりあえず、pkgsrcから入れて動かしてみたところ、YukiWikiがちゃんと動いてくれている。

しばらく使ってみることにします。


[View Log(0)] [Trackback]
Name: Comment:

2005/10/25 (火)

3年と256日目

朝も夜もぜんぶ新型が来た。盆と正月が一緒に来たようなものです。

朝のパンは味がないと全部食べられないよね。

「いいこと思い付いちゃった」、「どっちでしょーうか、正解は◯◯でした〜」など使いこなす。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbppc (pthread問題)

http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=31386についてsend-prしようと思っています。

Infoseek翻訳と共に英作文をしたので誰か添削してください。よろしくお願いします。

lib/libpthread/arch/powerpc/pthread_md.hにおいて0xd032 (PSL_USERSET) という定数が使われています。
In lib/libpthread/arch/powerpc/pthread_md.h, The constant of 0xd032 (PSL_USERSET) is used.

     54 /*
     55  * Set initial, sane values for registers whose values aren't just
     56  * "don't care".
     57  * 0xd032 is PSL_USERSET from arch/powerpc/include/psl.h
     58  */
     59 #define _INITCONTEXT_U_MD(ucp)                                          \
     60         (ucp)->uc_mcontext.__gregs[_REG_MSR] = 0xd032;

しかし、sys/arch/evbppc/include/psl.hにおいてPPC_IBM4XXではPSL_USERSETは0xc030であるべきです。
In sys/arch/evbppc/include/psl.h, PSL_USERSET shoud be 0xc030 for PPC_IBM4XX.

     15 /* Apparently we get unexplained machine checks, so disable them. */
     16 #define PSL_USERSET     (PSL_EE | PSL_PR | PSL_IR | PSL_DR)

これが原因でsys/arch/powerpc/powerpc/sig_machdep.cにおいてPSL_USEROK_P()が失敗している。
Because PSL_USERSET that shoud be 0xc030 is 0xd032, PSL_USEROK_P() has failed in sys/arch/powerpc/powerpc/sig_machdep.c.

    226                 if (!PSL_USEROK_P(gr[_REG_MSR]))
    227                         return (EINVAL);

対策は次のパッチ。
Workaround are the following patch.

--- sig_machdep.c.orig  2005-10-22 14:24:14.000000000 +0000
+++ sig_machdep.c       2005-10-22 17:33:03.000000000 +0000
@@ -221,6 +221,9 @@
        struct pcb *pcb = &l->l_addr->u_pcb;
 #endif
 
+#ifdef PPC_IBM4XX
+       gr[_REG_MSR] &= ~(PSL_ME|PSL_RI);
+#endif
        /* Restore GPR context, if any. */
        if (flags & _UC_CPU) {
                if (!PSL_USEROK_P(gr[_REG_MSR]))

できることならば、sig_machdep.cでmsrの変えてもいいビット以外の変化は無視するようにすべきだと思います。
If possible, I think that only the bit of MSR that can be changed can be changed, and the change in the rest should make it disregard in sig_machdep.c.


[View Log(0)] [Trackback]
Name: Comment:

2005/10/26 (水)

3年と257日目

朝は晴れていたが雨が降ってきたな。

虫に刺されてひどく腫れている。この季節に虫がいるのか。温暖化の影響?

いかに自分が外出していないことの証明なのかな。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbppc (pthread問題)

IRCで聞いてみたところ#ifdef PPC_IBM4XXですかー、と言われてしまった。

たしかにそうなんだけど、うーむ。

英作文の添削については、さすがに虫のいい話すぎましたね。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbarm (Armadillo-9)

http://mail-index.netbsd.org/source-changes/2005/10/19/0008.htmlでepe.cの修正がされている。

本家へのmergeにむけて着々と作業が進んでいるといったところでしょうか。

Webページを更新したりpackagesを外から見える場所に置くかなぁ。


[View Log(0)] [Trackback]
Name: Comment:

2005/10/27 (木)

3年と258日目

今朝は雨だったが夜には止んでいた。

ぶっくりした〜、はまだ言っている気がする。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbppc (pthread問題)

掲示板のほうで英作文の添削を頂きました。いつもありがとうございます。

と、思ったらさらに下のほうの投稿でlibpthread側を修正する案が提案されていた。

試してみようと思いつつ寝た。


[View Log(0)] [Trackback]
Name: Comment:

もつ

そろそろ季節ですね。

名刺乱舞。


[View Log(0)] [Trackback]
Name: Comment:

2005/10/28 (金)

3年と259日目

ハロリンの荷物を忘れてしまった。


[View Log(0)] [Trackback]
Name: Comment:

2005/10/29 (土)

3年と260日目

千葉に芋掘りにいってきた。

高速道路を使わずに一般道で行ったのだけれど、車が混雑しており思っていたよりも時間がかかってしまった。

ちょっと遅刻で到着して、いざ芋畑へ出発。

芋掘りは何十年ぶりだろうか。四株が今回の割当て分だった。畑の土は軟らかく、軍手を履いた手でどんどん掘れる。

昔やった芋堀は手で掘っていたか忘れたが、もっと硬い土だったような気がする。まぁ、いかにも観光用な畑なので誰でも楽しめるようになっているのかもしれないが、何しろ数十年前の話なので記憶違いなのかもしれない。

大きな芋や小さな芋もあわせるとけっこう収穫できた。そのあと梨園でお弁当を食べた後、車で帰った。

帰りもやっぱり一般道で帰った。


[View Log(0)] [Trackback]
Name: Comment:

2005/10/30 (日)

3年と261日目

JRと交通博物館の町でしばし散歩。

浜町で顔がにやけるのは笑ってしまう。


[View Log(0)] [Trackback]
Name: Comment:

アキバ

とりあえず、代替のHDDを調達すべくアキバヘ。

まっすぐT-Zoneに向かってHitachiの160Gbytesのやつを購入。安いというか、もはや感覚としてはよくわからない状態だけど。

Deskstar T7K250 (HDT722516DLAT80), Hitachi, T-Zone PC DIY Shop, IDE 160GB 8MB

とりつけてみたら130Gbytesほどで認識。おっと、壁を越えられないのですか。うーん、30Gも損するのか。


[View Log(0)] [Trackback]
Name: Comment:

NetBSD/evbppc

なにもできていないなあ。

20051029-UTCなsnapshotを作ってみたり。


[View Log(0)] [Trackback]
Name: Comment:

2005/10/31 (月)



メールはこちらへ...[BSD小僧 (tokuda @(at) tokuda .(dot) net)]

この日記は、GNSを使用して作成されています。