トップ 最新 追記
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2004年02月01日 曇り

gccで2進数

gccで2進数が "0b11110000" のように扱えたらさぞ便利だろう。昔っからそう思ってるんだが非公式でも裏技でもgccに0bプリフィックスが取り込まれない。でも同じようなことを考えてる人は世間にいるもんで、落合さんのサイトにgcc-2.95用のパッチを見つけた。
http://strawberry-linux.com/h8/h8tips.php
なるほど。大変参考になりました。gcc-3.2では少しソースが異なっていたので手パッチし、gcc-3.2用のdpatch形式のパッチファイルを作りました。
#! /bin/sh -e
 
# All lines beginning with `# DPATCH:' are a description of the patch.
# DP: <your description>
 
dir=
if [ $# -eq 3 -a "$2" = '-d' ]; then
    pdir="-d $3"
    dir="$3/"
elif [ $# -ne 1 ]; then
    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
    exit 1
fi
case "$1" in
    -patch)
        patch $pdir -f --no-backup-if-mismatch -p0 < $0
        #cd ${dir}gcc && autoconf
        ;;
    -unpatch)
        patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
        #rm ${dir}gcc/configure
        ;;
    *)
        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
        exit 1
esac
exit 0
 
# append the patch here and adjust the -p? flag in the patch calls.
 
--- gcc/c-lex.c-orig    Sun Feb  1 16:01:05 2004
+++ gcc/c-lex.c Sun Feb  1 16:01:43 2004
@@ -877,6 +877,11 @@
       base = 16;
       p = str + 2;
     }
+  if (len > 2 && str[0] == '0' && (str[1] == 'b' || str[1] == 'B'))
+    {
+      base = 2;
+      p = str + 2;
+    }
   /* The ISDIGIT check is so we are not confused by a suffix on 0.  */
   else if (str[0] == '0' && ISDIGIT (str[1]))
     {
このファイルをファイル名 【debian/patches/gcc-binary.dpatch】で保存し、debian/rules.patch ファイルの頭のほうに
# which patches should be applied?
debian_patches = gcc-names gcc-version fastjar-doc \
        libstdc++-incdir libstdc++-pic libstdc++-doclink \
        gcc-line-numbers gccbug arm-update hppa-fptr \
        gcc-binary \
と追加して
# dpkg-buildpackage -uc -us
でカスタム版gcc-3.2の出来上がり。

2004年02月03日 曇り

CAT709

CAT709 Wikiを立ち上げたので、今後はCAT709のネタはこっちに書こう。日記だと過去に流れてしまうので、日記でメモを書いてある程度まとまったらWikiに移すことにする。
もちろんWikiなので自由に書き込んでください。

2004年02月05日 曇りのち雪

CAT709

I/O DATA の 802.11b無線LANカード を使ってみる。
認識させるために /etc/pcmcia/config ファイルに
card "IO DATA WNB11CF"
  version "IO DATA","WNB11CF"
  bind "orinoco_cs"
エントリーを追加して cardmgr を実行する。うん。認識した。
続いて
# iwconfig eth1
eth1      IEEE 802.11-DS  ESSID:""  Nickname:"Prism  I"
          Mode:Managed  Access Point: 00:00:00:00:00:00  Bit Rate:11Mb/s
          Tx-Power=15 dBm   Sensitivity:1/3
          Retry min limit:8   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0/92  Signal level:-68 dBm  Noise level:-122 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
# iwconfig eth1 key "s:パスワード"
Error for wireless request "Set Encode" (8B2A) :
    SET failed on device eth1 ; Operation not supported.
うーん。おかしい。keyの設定が出来ない。これは kernel-2.4.21の orinoco_cs のバージョンが古いからかな?

ノートPCのkernel-2.4.21で試してみると、同じエラーだった。じゃぁせっかくなので2.4.24へのVerUpを試みることにする。

追記 2.4.24 (i386)でもダメ

CAT709

sh3-linux-g++ でのクロスコンパイルが出来ない
#include 
int main()
{
  cout << "hello world\n";
}
ちなみに sh3機でセルフコンパイルならok。
$ sh3-linux-g++ -v hello.cc
Reading specs from /usr/lib/gcc-lib/sh3-linux/3.0.3/specs
Configured with: ../src/configure --build=i386-linux --host=i386-linux --target=sh3-linux --enable-languages=c++ --prefix=/usr --infodir=${prefix}/share/info --mandir=${prefix}/share/
man --with-gnu-as --with-gnu-ld --with-system-zlib --disable-nls --without-included-gettext --disable-checking --disable-cpp --enable-c99 --enable-long-long --enable-shared --enable-t
hreads=posix --with-gxx-include-dir=${prefix}/sh3-linux/include/g++-v3
Thread model: posix
gcc version 3.0.3
 /usr/lib/gcc-lib/sh3-linux/3.0.3/cc1plus -v -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=3 -D__ELF__ -Dunix -D__sh__ -Dlinux -D__ELF__ -D__unix__ -D__sh__ -D__linux__ -D__un
ix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D__LITTLE_ENDIAN__ -D__SH3__ -D__sh3__ hello.cc -D__GNUG__=3 -D__GXX_DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100
 -musermode -ml -m3 -quiet -dumpbase hello.cc -version -musermode -ml -m3 -o /tmp/ccRTqkTw.s
GNU CPP version 3.0.3 (cpplib) (SH3 GNU/Linux with ELF)
GNU C++ version 3.0.3 (sh3-linux)
        compiled by GNU C version 2.95.4  (Debian prerelease).
ignoring nonexistent directory "/usr/sh3-linux/sys-include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/sh3-linux/include/g++-v3
 /usr/sh3-linux/include/g++-v3/sh3-linux
 /usr/sh3-linux/include/g++-v3/backward
 /usr/lib/gcc-lib/sh3-linux/3.0.3/include
 /usr/sh3-linux/include
End of search list.
In file included from /usr/sh3-linux/include/g++-v3/cstdio:31,
                 from /usr/sh3-linux/include/g++-v3/sh3-linux/bits/c++io.h:35,
                 from /usr/sh3-linux/include/g++-v3/bits/fpos.h:39,
                 from /usr/sh3-linux/include/g++-v3/bits/std_iosfwd.h:41,
                 from /usr/sh3-linux/include/g++-v3/bits/std_ios.h:39,
                 from /usr/sh3-linux/include/g++-v3/bits/std_ostream.h:39,
                 from /usr/sh3-linux/include/g++-v3/bits/std_iostream.h:40,
                 from /usr/sh3-linux/include/g++-v3/backward/iostream.h:32,
                 from hello.cc:1:
/usr/sh3-linux/include/g++-v3/bits/std_cstdio.h:145: `vfscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdio.h:146: `vscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdio.h:148: `vsscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdio.h:154: `vfscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdio.h:155: `vscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdio.h:157: `vsscanf' not declared
In file included from /usr/sh3-linux/include/g++-v3/bits/fpos.h:40,
                 from /usr/sh3-linux/include/g++-v3/bits/std_iosfwd.h:41,
                 from /usr/sh3-linux/include/g++-v3/bits/std_ios.h:39,
                 from /usr/sh3-linux/include/g++-v3/bits/std_ostream.h:39,
                 from /usr/sh3-linux/include/g++-v3/bits/std_iostream.h:40,
                 from /usr/sh3-linux/include/g++-v3/backward/iostream.h:32,
                 from hello.cc:1:
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:131: `fwide' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:132: `fwprintf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:133: `fwscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:142: `swprintf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:143: `swscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:145: `vfwprintf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:146: `vfwscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:147: `vswprintf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:148: `vswscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:149: `vwprintf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:150: `vwscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:165: `wcstof' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:175: `wprintf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:176: `wscanf' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:217: `wcstold' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:218: `wcstoll' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:219: `wcstoull' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:224: `wcstold' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:225: `wcstoll' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cwchar.h:226: `wcstoull' not declared
In file included from /usr/sh3-linux/include/g++-v3/bits/stl_algobase.h:73,
                 from /usr/sh3-linux/include/g++-v3/bits/std_memory.h:49,
                 from /usr/sh3-linux/include/g++-v3/bits/std_string.h:43,
                 from /usr/sh3-linux/include/g++-v3/bits/localefwd.h:42,
                 from /usr/sh3-linux/include/g++-v3/bits/std_ios.h:43,
                 from /usr/sh3-linux/include/g++-v3/bits/std_ostream.h:39,
                 from /usr/sh3-linux/include/g++-v3/bits/std_iostream.h:40,
                 from /usr/sh3-linux/include/g++-v3/backward/iostream.h:32,
                 from hello.cc:1:
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:127: `lldiv_t' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:128: `_Exit' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:137: syntax error before `('
   token
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:138: syntax error before `.'
   token
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:138: syntax error before `.'
   token
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:141: syntax error before `('
   token
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:142: syntax error before `.'
   token
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:142: syntax error before `.'
   token
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:145: `strtof' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:148: `strtold' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:149: parse error before `}'
   token
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:153: `lldiv_t' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:154: `_Exit' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:157: `div' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:158: `lldiv' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:159: `atoll' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:160: `strtof' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:161: `strtoll' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:162: `strtoull' not declared
/usr/sh3-linux/include/g++-v3/bits/std_cstdlib.h:163: `strtold' not declared
In file included from /usr/sh3-linux/include/g++-v3/bits/locale_facets.h:45,
                 from /usr/sh3-linux/include/g++-v3/bits/basic_ios.h:36,
                 from /usr/sh3-linux/include/g++-v3/bits/std_ios.h:46,
                 from /usr/sh3-linux/include/g++-v3/bits/std_ostream.h:39,
                 from /usr/sh3-linux/include/g++-v3/bits/std_iostream.h:40,
                 from /usr/sh3-linux/include/g++-v3/backward/iostream.h:32,
                 from hello.cc:1:
/usr/sh3-linux/include/g++-v3/bits/std_cwctype.h:70: `iswblank' not declared
ここにdebian bug report 発見
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=107633

2004年02月06日

CAT709

sh3セルフでカーネルビルドをさせてみた。linux-2.4.21で
# time make dep
real    3m13.969s
user    1m46.800s
sys     0m40.300s
# time make zImage
real    136m19.038s
user    126m29.190s
sys     5m46.890s
こんな感じ。

サルサ

とある場所でのサルサ談義。「女性って、カッカッカーって激しくスタイリッシュに踊りたいときと、守られているように、包み込まれるような踊りをしたい時があるみたいだね」。「そりゃ肉肉野菜ってもんでしょー」

そーか、名言だ。(笑

そのどちらの心理にあるかをよく見て踊りたいもんだね。


2004年02月08日

映画

夜中にへ〜んな映画やってた。『ブレックファーストオブチャンピオンズ』。こんどちゃんと見よう。


2004年02月09日

サルサ

浜松へのサルサ遠征をしたときの話。

場所は銀座ライオンというお店。一階はゲームセンターでネオンがド派手なビルだ。失礼ながら(ホントに)浜松って意外と都会だなぁと驚いた。少なくともここ春日井よりはよほど栄えてる。俺の印象の中で、浜松ってあまりよろしくない記憶があるのだ。あれははっきり覚えているが1992年12月28日の真夜中AM2時頃だった。真冬だが南からの湿った風が流れ込んだせいか、しとしとと雨が降り、濃い霧が立ち込めた夜だった。おいらは当時、長野県松本市に住んでいて、静岡の友だち(なんのことはない岩崎のことだが)の家に向かうために深夜一人でR152を南下していた。愛車は軽自動車のSUZUKIアルトだ。車中にはマップル全国版しかなかった。途中でR152には数箇所未開通区間があることに気がつき、ひとつ西を走るR153に迂回して南下していた。ところが、このままR153を行くと豊田市方面にいってしまう。そこで途中で左に折れ、林道を突き進んだのが悪かった。天竜の長野県・愛知県・静岡県の3県境の山中の林道で道に迷ったのだ。視界10mの霧の中でヘッドライトの前は真っ白。未舗装の林道の中で完全に位置を見失ってしまったのだ。外にトイレに降りるのも怖くマジでチビリそうになった。話を端折るが(結果として)結局明け方に佐久間ダムまで下りてくることができて、R152を下って浜松にたどり着いたときに初めて安堵の空気を吸うことができた。それが俺の中でR152と浜松の印象だったりする。(ちなみにそれがきっかけで、"酷道"、"険道"に異常な興味を覚えて長野県内を走ることになった)

そんなR152も完全に整備された3車線国道になっていた。そしてZAZA Cityという立派なビルも建っていた。会場はZAZA Cityから道を横断してマツキヨの筋を入って行ってSHIDAXというカラオケ屋の向かいだ。ちなみに料金は\3000飲み放題。軽食付だった。

場所は広く、踊りやすいフロアだった。ぶつかることがないのはうれしい。

静岡や三河方面からも人が来ていた。まさにノースタイル。LAでもキューバンでもいいじゃん。「サルサを踊っている」「サルサを楽しんでいる」きっかけはただそれだけだ。でもそれだけで地域を越えた絆が生まれて、人の縁ができ、交流が深まっていく。手をとって踊れればそれで楽しい。皆がHappyだった。

【左】MayumiさんとSumi君(だったよね?汗)。【右】Naoさん、歓迎してくれてありがとう。
http://www.sempre-bonita.biz/home.htm
↑naoさんのサルサウェア・オンラインショップ。女性のかわいい服がたくさん。

モノ作り

この人この記事面白すぎ。四輪のターボチャージャーを改造してJETエンジンの自作とか。まじすげー。コンプレッサーとタービンの間に燃焼器を挟むんだと。すげーなー。こういうのを見ると、えびめもも最近パワーダウンして軟弱になってるんで気合入れないといかんなーとか思う。ここまでできないが、これでも電気屋なんで何か面白いもん作ろうっと。

2004年02月10日 晴れ

XILINX CPLD

某CAT709のマザーボードが出来上がったのでCPLDへ書き込みを行うべくしてXilinxのWebPackを立ち上げた。書き込みソフトはiMPACT。ライターは落合さんのライター安くて便利。だがしかし!XILINXが公開している回路図のダウンロードケーブルはPCを選ぶのだ。おいらが使っているデスクトップPCではデバイスの認識すら出来ない。というか、会社にあるWindowsパソコンでも書き込み実績があるのはたった1台しかない。さらに悪いことに書き込み実績があったPCは今はLinuxサーバになってる(苦笑。

デスクトップPCのプリンターポートにつないでも書き込みが出来ない理由はなんとなく想像がつくので、勘があたっているかチェックしてみた。

やはりな。

貴様それでHiのつもりか!

いまどきのPCは、たとえデスクトップタイプだとしても5V-TTLで動いているわけではないだろう。たぶん3.3V-TTLロジックで動いているんだろう。しかしなぁプリンターポートのデータ出力なんだから3.3V振ってくれよ。これじゃ受け側がHCロジックで受けてたらスレッショルド満足しないじゃん(いやセントロはTTLだっちゅーの)。
案の定HC125のNOT出力側を見ると2.0Vくらいだった。アナログの反転増幅回路のように動いているようだ。書き込み器のHC125をHCTかLVCに変えたら動くと思う。ので、今からタケイ無線にGo!


2004年02月11日

XILINX CPLD

昨日の日記の結果、書き込み器のHC125をHCT125に交換したがダメだった。負けた。くそー。

CAT709

「TxD2に起動メッセージが出ることがある」という報告を頂いたので調査した。確かにゴミ文字が出るボードと出ないボードがある。出るボードでも毎回ではないし、ゴミ文字にまぎれて..linux..とか判別できるキャラクターが含まれている感じ。Linux起動後は安定してる。ゴミ文字も出ない。

最初はTxD0とTxD2のショートを疑った。232CレベルシフトICも隣のピンから入力されているから。しかし目視でもテスターでも反応無し。絶縁されている。悩む。そういえば昔UART ICで、シリアル1とシリアル2に同時に電文を出す機能がついているLSIがあった。要らんよーそんな機能。

で、今回だが、およそ文字化けの中にかろうじて判読できるストリングスが見え隠れするのでしばらく原因が分からなかった。SH7709のハードウェアマニュアルを良くよく読む。よくよく読むと。。。

TEビットは送信中に0にクリアできますが、送信データはビットを0にクリアした後ハイインピーダンス状態になります。
という一文がひっそりと隠れていた。これだ!間違いない。TE(Transmitter Enable)ビットはリセット時0だし、ハイインピーならTxD0からクロストークを受けてもおかしくない。232CレベルシフトICも同じICの隣のピンに入力しているし、線もCPUから仲良く並んで走ってる。くそー、やっちまったぜ(ごめんなさい)。

しかし普通のマイコンならTEを上げなくてもHレベル出力するっしょ!?なぜにわざわざZ状態にするのか意味がわかんない。ipl-rom内でリセット解除後すぐにTE=1にして不具合修正完了。

http://www.si-linux.com/product/cat709/changelog.html ご迷惑おかけしました。


2004年02月12日

CAT709

あまりメリットは無いかもしれないがCygwin上でsh3-linuxのクロスコンパイルが出来るかもしれない。出来るようになると開発用Linux機が不要になる。あまり乗り気ではないけどやってみたら binutils-2.13 と gcc-3.0.4 は整ったし、やったらできてしまった。
ebihara@giga ~
$ sh3-linux-gcc hello.c -o hello
hello.c:5:1: warning: no newline at end of file
 
ebihara@giga ~
$ file hello.exe
hello.exe: ELF 32-bit LSB executable, Hitachi SH, version 1 (SYSV), for GNU/Linu
x 2.3.99, dynamically linked (uses shared libs), not stripped
おおすげぇ。hello.exe を CAT709に持っていったらちゃんと動いたぞ。てことは手順をまとめればCAT709のアプリケーション開発用のlinux機は不要になるなぁ。

そのあと調子に乗ってカーネルをコンパイルしようとしたら make menuconfig はおろか、startx して make xconfig まで動いてしまった。あれまぁ。すごじゃん Cygwin

make dep でエラーがでたので Makefileを修正した

#	scripts/mkdep -- `find $(FINDHPATH) \( -name SCCS -o -name .svn \) -prune -o -follow -name \*.h ! -name modversions.h -print` > .hdepend
	find $(FINDHPATH) \( -name SCCS -o -name .svn \) -prune -o -follow -name \*.h ! -name modversions.h -print| scripts/mkdep -- > .hdepend
	scripts/mkdep -- init/*.c > .depend
その後 本番のコンパイル
sh3-linux-gcc -D__ASSEMBLY__ -D__KERNEL__ -I/home/ebihara/linux-2.4.21-cat709-2003-07-22/include -ml -m3 -traditional -c head.S
sh3-linux-gcc -D__KERNEL__ -I/home/ebihara/linux-2.4.21-cat709-2003-07-22/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -ml -m3 -pipe -D__KERNEL__ -I/home/ebihara/linux-2.4.21-cat709-2003-07-22/include  -c -o misc.o misc.c
printf: $[0x80000000+0x0c000000+0x200000+0x10000]: expected a numeric value
sh3-linux-ld -EL -Ttext 0x       0 -e startup -T /home/ebihara/linux-2.4.21-cat709-2003-07-22/arch/sh/vmlinux.lds -o vmlinux head.o misc.o ../../kernel/sh_bios.o piggy.o
sh3-linux-ld: invalid hex number `0x'
make[2]: *** [vmlinux] Error 1
make[2]: Leaving directory `/home/ebihara/linux-2.4.21-cat709-2003-07-22/arch/sh/boot/compressed'
make[1]: *** [compressed/vmlinux] Error 2
make[1]: Leaving directory `/home/ebihara/linux-2.4.21-cat709-2003-07-22/arch/sh/boot'
make: *** [zImage] Error 2
 
real    4m7.229s
user    3m47.609s
sys     0m49.386s
う〜ん、惜しいな。printf コマンドが不良か。いんちきだが、リンカの -Ttext のアドレスは 0x8c210000 になることを知ってるので(A^^;;
arch/sh/boot/compress/Makefile を修正して
#ZIMAGE_OFFSET = $(shell printf "0x%8x" $$[0x80000000+0x$(CONFIG_MEMORY_START)+0x200000+0x10000])
ZIMAGE_OFFSET = 0x8c210000
make zImage したところ無事 zImage が出来上がった。すげー

2004年02月13日

電子工作

うふふふふ。注文していたPASキャパシタが届いた。

2.3V 56Fだ。
ごじゅーろくふぁらっど
ですよ!! μFじゃなくてマジ56F。てことは1Aを56秒も流せるっちゅうことですよ。短絡したら恐ろしいことで仮に10msecで放電するとしたらピーク5600Aもの電流が流れて恐ろしいことになるってことですわー。まじ死ねるデバイスかもしれない。恐ろしくて開封できない。(A^^;;。実際には太陽電池パネルと組み合わせて平和的に使う予定。ちなみに一個\670でした。

CAT709

それから発注しておいたパルストランス内蔵RJ45コネクタ、ハーフピッチコネクタ、高精度抵抗などがそろった。これでCAT709マザーボード自作キットを作る予定。どうしてもマザーボードを自作したい電子工作ホビーイストむけ。秋葉原など店頭では単品では入手が難しそうなコネクタ類をキットにしてみます。欲しい方いるかな?

それからハーフピッチ(1.27mm)の両面スルーホールユニバーサル基板って普通に買うと目が飛び出るくらい高いので(\1400とかする)おまけに1枚付けときます。

CAT709

fsm.lab.社のRT-Linuxに頼らずSH3-Linuxにリアルタイムファンクションを追加するにあたって、とりあえずネックになりそうな「ドライバが割り禁にしている区間走行中の割り込み応答遅れ」は、cli()〜sti()を割り禁仮想化によって回避できると思うけど、「TLB例外実行中の割り込み応答遅れ」は根本的に回避できなさそう。SH3アーキテクチャでは

・例外(TLBミス、アドレスエラー、トラップ命令、ユーザブレイク、不当命令等)

・NMI割り込み

・外部割り込み(優先度0〜15)

の順の優先度になっている。ということはタイマ割り込みの優先度を上げても、一般例外実行中は待たされることになる。TLBミスのpage_falut がどれくらい時間がかかるかがリアルタイム化の鍵となりそう。TLBミスヒットは常時多発しているだろうし。

あと、最近ドライバを書いていて妙な現象に出くわしたんだけど、おいらがずいぶんと前に見つけた問題がまだ解決して無い様に思った。2002/2/12 ってちょうど2年前の今日だなぁ。


2004年02月15日 晴れのち雨

CAT709

以前からやろうと思っていた linux-2.4.24 への対応を行った。パッチファイルで 2789 行になった。
http://www.si-linux.co.jp/wiki/cat/index.php?linux-2.4.24
拡張IDE基板への対応は、configに追加する形にした。デフォは当然disable
ATA/IDE/MFM/RLL support  --->
  <*> ATA/IDE/MFM/RLL support
  [*] CAT709 extend ide support
  [*] use DMA0 support (NEW)
  (hda) extend ide map to
  IDE, ATA and ATAPI Block devices  --->

CAT709

おめーら SA_INTERRUPT 使いスギ。
 16:      27710         IPR-IRQ  timer
 23:          0         IPR-IRQ  sci
 24:        523         IPR-IRQ  sci
 25:      64068         IPR-IRQ  sci
 35:         24         IPR-IRQ  NE2000
 36:          3         IPR-IRQ  rtc
 56:          0         IPR-IRQ  sci
 57:         62         IPR-IRQ  sci
 58:          0         IPR-IRQ  sci
 59:        228         IPR-IRQ  sci
sh-linux標準カーネルの割り込みハンドラ、NE2000以外は全部 SA_INTERRUPT 立ててやがる。つまり多重割り込みを許してない!。割り込みルーチン実行中に割り禁にするやつらだ。普通は優先度の高い割り込みには多重割り込みで譲るのが鉄則なんだけどなぁ。

CAT709

ここでちょろっと書いたSH-Linuxカーネルの割り込み周りのバグを本格的に直しにかかることにする。
:
一度書いたけど不完全だったのでがっつり削除(2004/2/16)

2004年02月16日 晴れ

CAT709

ここんとこSH-Linuxカーネルに割込みプライオリティーを追加したり、arch/sh/kernelの下とinclude/asm-shの下をいろいろといじっていてリアルタイム機能を追加する基礎実験を行っていたが一応の成果がだせた。リアルタイム割込みレイテンシ2〜4マイクロ秒(観測最悪値4.2マイクロ秒!!)だ。まずまずの速度だろう。というかおいら的用途ならば十分だ。
祝!リアルタイム動作
と言ってもしまおう。linux側はリアルタイムじゃないが、同一CPU上で並列にリアルタイム動作ができるようになった。fsm.lab社の"RT-Linux"のことじゃなくて、おいらのオリジナル。これが証拠Vだ(笑
motion jpeg 8Mbyte
SH-Linux上で並列処理でソフトウェアで
int hz[]={264,297,330,352,395,440,495,528};
ヘルツの音を出す実験だ(つまりド〜ド)。デジタル出力ポート(1bit)に圧電ブザーを付けて音を鳴らしている。例えば、440Hz(Aの音)を出すには正確な時間で毎秒880回のビット反転を行わなければならない。音を出している間(ビット反転している間)linuxは普通に動く。コマンドをたたけばちゃんと反応するし外からのpingにも応答する。通常のlinuxでこれをやろうとするとかなり無理があるのだ。全部のタスクをとめてしまってシングルタスクでやろうとしたら可能かもしれないけど,,,それではリアルタイムにならないし第一UNIXと呼べない。webサーバにもならない。今回はちゃんと並列処理をしているのでlinux上でどんなコマンドを実行してもCFにアクセスに行ってもネットワークに負荷をかけても音の出力には影響を与えないところまで成功した。リアルタイム化への基礎実験はうまくいったと言える。当然音を出し続けている間もlinuxは普通に動作している。特に見た目上、重くなったりはしない。

ネックになるのはカーネルやドライバの割込み禁止区間じゃなくて(これは簡単に解決できた)、このまえ書いたけどTLBミスマッチ等の一般例外実行時間だ。仮想メモリ上で動くタスクはTLBミスマッチからは逃げられない。ここのpage_fault()処理を最適化すればもうちっとレイテンシを短くできるかもしれないけど、おいら的には100usecだって十分だったりする。とりあえずユーザー空間でアドレスエラーを多発するプログラムを書いて影響を調べたけど、心配したほど大した影響はないのかもしれないなぁ。

ファンクションを整備したら公開する予定。


2004年02月17日

サルサ

某月某日(過日)エルココの入っているビルで火事がありました。不幸中の幸いでボヤですみ、怪我人も無かったみたいですが、消防車10台以上が出動し、エルココに居合わせた人の話では階段で避難したそうです。(おいらは店にはいませんでした)

危ないですね。新宿で大勢の人が亡くなる火事があったのも記憶に新しいですが、各テナントが収まる雑居ビルでは階段に物を置かないなどの避難経路の確保くらいは当然のものとして実施いただきたいものです。

まぁ怪我人がなかったのと、エルココが燃えなかったので救われたとしましょう。ちなみにもう普通に営業しています。

IO-HACK

細淵さんがやってくれました。
http://www.mizore.jp/wiki/index.php?LANDISK
道を作ってくれたので追いかけただけですが、、

ユニバーサル基板を使わずに空中配線で232Cレベルシフト回路を組みます。

熱収縮チューブで固めて放り込みます。

Debianをぶちこんだので外付けHDDサイズのファンレスサーバの出来上がりだ。Landy君と命名する。音もまったくしない。電源も内蔵している。こいつを複数台並べてみたいなぁ。

2004年02月19日

CAT709

linux-2.6.2への移植をはじめる。直すところがいっぱい(*_*)
lib/lib.a(extable.o): In function `search_extable':
extable.o(.text+0x60): multiple definition of `search_extable'
arch/sh/mm/built-in.o(.text+0x290): first defined here
sh3-linux-ld: Warning: size of symbol `search_extable' changed from 70 to 74 in lib/lib.a(extable.o)
make: *** [.tmp_vmlinux1] エラー 1
lib/extable.c と arch/sh/mm/extable.c での同一関数定義。lib/extableの方を消す。

CAT709

いろいろやったらとりあえずカーネルはあがった。
Linux version 2.6.2 (ebihara@boss) (gcc version 3.0.3) #17 Thu Feb 19 05:36:40 JST 2004
setup_cat709
cat709_port_map(start(0x300),stop(0x31f),offset(0xba004000),shift(0))
cat709_set_global_base 0
On node 0 totalpages: 512
  DMA zone: 512 pages, LIFO batch:1
  Normal zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
Building zonelist for node : 0
Kernel command line:
Setting GDB trap vector to 0x80000100
init_cat709_IRQ
PID hash table entries: 16 (order 4: 128 bytes)
Calculated peripheral clock value 29492424 differs from sh_pclk value 29421200, fixing..
CPU clock: 117.96MHz
Bus clock: 58.98MHz
Module clock: 29.49MHz
Interval = 73731
Linux version 2.6.2 (ebihara@boss) (gcc version 3.0.3) #17 Thu Feb 19 05:36:40 JST 2004
Linux version 2.6.2 (ebihara@boss) (gcc version 3.0.3) #17 Thu Feb 19 05:36:40 JST 2004
setup_cat709
setup_cat709
cat709_port_map(start(0x300),stop(0x31f),offset(0xba004000),shift(0))
cat709_port_map(start(0x300),stop(0x31f),offset(0xba004000),shift(0))
cat709_set_global_base 0
cat709_set_global_base 0
On node 0 totalpages: 512
On node 0 totalpages: 512
  DMA zone: 512 pages, LIFO batch:1
  DMA zone: 512 pages, LIFO batch:1
  Normal zone: 0 pages, LIFO batch:1
  Normal zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
Building zonelist for node : 0
Building zonelist for node : 0
Kernel command line:
Kernel command line:
Setting GDB trap vector to 0x80000100
Setting GDB trap vector to 0x80000100
init_cat709_IRQ
init_cat709_IRQ
PID hash table entries: 16 (order 4: 128 bytes)
PID hash table entries: 16 (order 4: 128 bytes)
Calculated peripheral clock value 29492424 differs from sh_pclk value 29421200, fixing..
Calculated peripheral clock value 29492424 differs from sh_pclk value 29421200, fixing..
CPU clock: 117.96MHz
CPU clock: 117.96MHz
Bus clock: 58.98MHz
Bus clock: 58.98MHz
Module clock: 29.49MHz
Module clock: 29.49MHz
Interval = 73731
Interval = 73731
Memory: 928k/198656k available (798k kernel code, 70092k reserved, 143k data, 40k init)
Calibrating delay loop... 78.43 BogoMIPS
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: SH7729
POSIX conformance testing by UNIFIX
Linux NoNET1.0 for Linux 2.6
SuperH SCI(F) driver initialized
ttySC0 at 0xfffffe80 is a SCI
ttySC1 at 0xa4000150 is a SCIF
ttySC2 at 0xa4000140 is a SCIF
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
mice: PS/2 mouse device common for all mice
i8042.c: i8042 controller selftest failed. (0x9 != 0x55)
VFS: Cannot open root device "1f02" or unknown-block(31,2)
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on unknown-block(31,2)
まだMTDのドライバを整備していないのでFLASHはマウントできないのでここまで。

CAT709

いろいろやってたら動いた。mtdのドライバは少し書き直した。せっかくなのでlinux-2.6.3にした。
Linux version 2.6.3 (ebihara@boss) (gcc version 3.0.3) #4 Fri Feb 20 03:16:46 JST 2004
setup_cat709
cat709_port_map(start(0x300),stop(0x31f),offset(0xba004000),shift(0))
cat709_set_global_base 0
On node 0 totalpages: 8192
  DMA zone: 8192 pages, LIFO batch:2
  Normal zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
Built 1 zonelists
Kernel command line:
Setting GDB trap vector to 0x80000100
init_cat709_IRQ
PID hash table entries: 16 (order 4: 128 bytes)
Calculated peripheral clock value 29488420 differs from sh_pclk value 29421200, fixing..
CPU clock: 117.95MHz
Bus clock: 58.97MHz
Module clock: 29.48MHz
Interval = 73721
Linux version 2.6.3 (ebihara@boss) (gcc version 3.0.3) #4 Fri Feb 20 03:16:46 JST 2004
Linux version 2.6.3 (ebihara@boss) (gcc version 3.0.3) #4 Fri Feb 20 03:16:46 JST 2004
setup_cat709
setup_cat709
cat709_port_map(start(0x300),stop(0x31f),offset(0xba004000),shift(0))
cat709_port_map(start(0x300),stop(0x31f),offset(0xba004000),shift(0))
cat709_set_global_base 0
cat709_set_global_base 0
On node 0 totalpages: 8192
On node 0 totalpages: 8192
  DMA zone: 8192 pages, LIFO batch:2
  DMA zone: 8192 pages, LIFO batch:2
  Normal zone: 0 pages, LIFO batch:1
  Normal zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
  HighMem zone: 0 pages, LIFO batch:1
Built 1 zonelists
Built 1 zonelists
Kernel command line:
Kernel command line:
Setting GDB trap vector to 0x80000100
Setting GDB trap vector to 0x80000100
init_cat709_IRQ
init_cat709_IRQ
PID hash table entries: 16 (order 4: 128 bytes)
PID hash table entries: 16 (order 4: 128 bytes)
Calculated peripheral clock value 29488420 differs from sh_pclk value 29421200, fixing..
Calculated peripheral clock value 29488420 differs from sh_pclk value 29421200, fixing..
CPU clock: 117.95MHz
CPU clock: 117.95MHz
Bus clock: 58.97MHz
Bus clock: 58.97MHz
Module clock: 29.48MHz
Module clock: 29.48MHz
Interval = 73721
Interval = 73721
Memory: 31080k/2129920k available (992k kernel code, 1048012k reserved, 157k data, 40k init)
Calibrating delay loop... 78.43 BogoMIPS
Dentry cache hash table entries: 524288 (order: 9, 2097152 bytes)
Inode-cache hash table entries: 262144 (order: 8, 1048576 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: SH7729
POSIX conformance testing by UNIFIX
Linux NoNET1.0 for Linux 2.6
JFFS2 version 2.2. (C) 2001-2003 Red Hat, Inc.
pty: 256 Unix98 ptys configured
SuperH SCI(F) driver initialized
ttySC0 at 0xfffffe80 is a SCI
ttySC1 at 0xa4000150 is a SCIF
ttySC2 at 0xa4000140 is a SCIF
Real Time Clock Driver v1.12
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
Using anticipatory io scheduler
 Amd/Fujitsu Extended Query Table v1.1 at 0x0040
number of CFI chips: 1
cfi_cmdset_0002: Disabling fast programming due to code brokenness.
Creating 3 MTD partitions on "CAT709 Flash1":
0x00000000-0x00020000 : "ipl"
0x00020000-0x00100000 : "kernel"
0x00100000-0x00800000 : "Flash FS"
mice: PS/2 mouse device common for all mice
VFS: Mounted root (cramfs filesystem) readonly.
Freeing unused kernel memory: 40k freed
hello
hello
hello
hello
hello
hello
hello
/sbin/init を helloプログラムだけにしてとりあえずプロセスが動作するところまで確認した。メモリーサイズがおかしい。

CAT709

メモリーサイズがおかしいのは arch/sh/mm/init.c のバグだろう。下のように直して報告した。
@@ -182,8 +182,8 @@
 
        high_memory = (void *)(memory_end & PAGE_MASK);
 #endif
-
-       max_mapnr = num_physpages = MAP_NR(high_memory);
+       extern unsigned long memory_start;
+       max_mapnr = num_physpages = MAP_NR(high_memory) - MAP_NR
(memory_start);
 
        /* clear the zero-page */
        memset(empty_zero_page, 0, PAGE_SIZE);

サルサ

くそー踊りて〜


2004年02月20日

CAT709

linux-2.6カーネルでプロセスが動かないのは、起動後すぐにSIGVを食らっているかららしい。原因を追いかけると、
asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
                              unsigned long address)
{
:略
        vma = find_vma(mm, address);
        ↑ここで、linux-2.4だとvmaが返るが、linux-2.6だとNULLが返ることがある。(address=0x29555555の時)
        if (!vma)
                goto bad_area;
        if (vma->vm_start <= address)
                goto good_area;
                ↑linux-2.4だとここに行く。okだ。
        if (!(vma->vm_flags & VM_GROWSDOWN))
                goto bad_area;
        if (expand_stack(vma, address))
            ↑linux-2.6だとここにいってしまう。
                goto bad_area;
                ↑ここでSIGVる。/sbin/initが死んでおしまい。
gotoを使ってるのか〜なんて言わないでください。linuxカーネルはgoto大好きです。俺も最初は抵抗があったけど同一関数内でのgotoラベルジャンプは下手にフラグを使って見にくいコードになるよりよっぽどマシで、上のように読みやすい(理解しやすい)コードになる。good_ereaとかbad_ereaとか直読できる。

さて、linux-2.6ではdo_page_fault()の時、find_vma()に失敗するときがあるみたい。find_vma()は『プロセスのメモリリージョン一覧の中から指定されたアドレスに一番近いメモリリージョン(vma_erea_struct)を探す』関数だ。これがNULLを返す...うーむ。do_page_fault()でこのエラーってことはまずいな。直感ではここにはバグはなく、struct_mm の初期値に問題があるような気がする。(sh4では動いているみたいだし)

簡略化するためにメモリディスクリプタ(mm_struct)をmm、メモリリージョン(vm_erea_struct)をvmと略す。ひとつのプロセスはひとつのmmを持ち、mmには複数のvmが含まれる。mmからvmはlistとrb_tree(Red/Back/Tree 2色木)で探し出せる。find_vma()はmmを引数にとり、addrに一番近いvmを探す。vm内にaddrが含まれないときは、vm->vm_endがaddrよりも大きい最初のメンバを帰す。linux-2.4で上手くいくときのデータ構造は以下の通りだった。

find_vma(mm=0x8df11090, addr=0x29556000)
ここでmmに含まれるvmは4つ
 
*8DF0F130
vm_start = 0x400000
vm_end   = 0x457000
 
*8DF0F180
vm_start = 0x466000
vm_end   = 0x468000
 
*8DF0F1D0
vm_start = 0x468000
vm_end   = 0x469000
 
*8DF0F220
vm_start = 0x29556000
vm_end   = 0x29557000
『vm->vm_endがaddrよりも大きい最初のメンバ』という条件から検索に成功し8DF0F220をリターンする。vmあるじゃん。問題ない。このvmがいつ作られたかを追いかける
mm/mmapc.c:
do_mmap_pgoff(addr=0x29556000, len=0x431370)
  get_unmapped_area(0x29556000)
    arch_get_unmapped_area(0x29556000)
  munmap_back:
  find_vma_prepare(mm,addr=0x29556000,*prev) prev =>
    新しいvmを捻じ込むスペースを探す?
  vm_enouch_memory(pages=1){
    free = page_cache_size;   => 0x78
    free += nf_free_pages();  => 0x1c9f
    free += nr_swap_pages;    => 0
    free += swapper_space.nrpages; => 0
    free => 0x1d17
  }


2004年02月21日 晴れ

CAT709

linux-2.6 ムリムリパッチでとりあえず動いた。けど根本的原因解決にはなっていない気がする。相変わらずjffs2でマウントできない。cramfsならマウントできるのでmtdドライバには問題なさそう。

おとといのbugパッチは、mlに報告したら採用してもらえた。Changelogに入れてもらったので少しうれしい。(^-^)

2004-02-20  Yutaro Ebihara  
 
        * arch/sh/mm/init.c (mem_init): Set max_mapnr and num_physpages
        correctly.

CAT709

linux-2.6がちゃんと動かない原因は、昨日の推測はやっぱり違っている気がしてきた。まったく同一のユーザーランドバイナリ(hello.c)の一般例外の挙動を観察していると、該当アドレスでのしょっぱなの例外の出方が違う。linux-2.4では TEA=0x29556000番地でのtlb無効例外, linux-2.6ではTEA=0x29555555番地でのtlbミスヒット例外が発生する。そっから vm_erea_struct を作る過程で不具合があるっぽいところまでは分かった。むりむりパッチってのは __do_page_falut()内で、addr &= PAGE_MASK すれば動くのが分かったんだけど、、、正しい処置じゃないよな。

Landy

Landy君は順調に動いています。
kaihatsu@landy:~$ cat /proc/cpuinfo
cpu family      : SH-4
cache size      : 16K-byte/32K-byte
bogomips        : 266.24
 
Machine: 7751R Julian
CPU clock: 266.81MHz
Bus clock: 133.40MHz
Peripheral module clock: 33.35MHz
kaihatsu@landy:~$ uptime
 04:47:40 up 4 days,  8:00,  1 user,  load average: 0.11, 0.03, 0.01

サルサ

やっと踊れた。今日はやけに人が多かったなぁ。


2004年02月23日

サルサ

某月某日 岐阜に仲間達と出かけた

生バンドも来ていていい感じに盛り上がった。

2004年02月24日

かざちゃん

半年間アルバイトをしてくれたかざちゃんが学校卒業のため最後のバイトになりました。就職おめでとう&バイトありがとうね。これから社会に出てから楽しいことも辛いことも、にぎやかな日々が待ってると思います。頑張ってください。

また皆で飲みに行きましょう。


2004年02月25日

サルサ

某月某日 岐阜でサルサ

Mayumiさんもパワフルだ。方向音痴にも負けず(失礼)どこにでもやってくるパワーはすごいっす(←誉め言葉です。(^-^) )

サルサ

某月某日某所でsatokoさんとyukaさんと踊ってもらった。macondoの常連さんらしい。さすがベーシックムーブメントが気持ちよかったです。久しぶりに行ってみるかなぁ。

似顔絵

某氏の日記ページで教えてもらった似顔絵を作るサイトで似顔絵を描いてみた。
http://www.abi-station.com/illustmaker/index.cgi

美化150%くらいしました。この似顔絵ページ面白ーい。
てか、きっとおいらが似顔絵描きやすい顔なんでしょう。笑
女の子のパーツ(特に髪型)が少ないので女性は難しいかも。

『ここで合成した画像の著作権はあびる・使用されたパーツの製作者・合成者にあります。』ということです。

まじで!?

某氏がご自身のWeb日記で転職表明。まじですかぁ。


2004年02月26日

長年日記

tdiaryの設定ファイルを変えて長年日記↑をONにした。去年何をしていたかがわかる。一年があっという間に思える。同時に、1年前の自分のサルサに対する考えが幼く思える。

CAT709

debian.dodes.org が止まってるかも。名前が引けない。

追記↑こっちのネットワークの問題だった。直った。

CAT709

カーネル2.6動いたよぉ。原因は 0x29555555番地に相当するstruct_vmを作るのに失敗し、その後page_faultが発生したときにSIGVってた。0x295555555っていう中途半端な怪しい数値の正体は 0x7c000000/3 だった。これがTASK_UNMAPPED_BASEとしてdefineされている。0x295555555をPAGEにアラインしていないのでfind_vmaの後、vmを作る段で不具合を起こしていた。mm/mmap.cに適当にパッチして英語のほうのmlに報告したところ、arch_get_unmapped_area()をsh3版も正しく書いたほうが良いと返事をもらった。
#if defined(CONFIG_CPU_SH4)
/*
 * To avoid cache alias, we map the shard page with same color.
 */
#define COLOUR_ALIGN(addr)      (((addr)+SHMLBA-1)&~(SHMLBA-1))
 
unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
        unsigned long len, unsigned long pgoff, unsigned long flags)
{
        struct vm_area_struct *vma;
 
        if (flags & MAP_FIXED) {
                /* We do not accept a shared mapping if it would violate
                 * cache aliasing constraints.
                 */
                if ((flags & MAP_SHARED) && (addr & (SHMLBA - 1)))
                        return -EINVAL;
                return addr;
        }
 
        if (len > TASK_SIZE)
                return -ENOMEM;
        if (!addr)
                addr = TASK_UNMAPPED_BASE;
 
        if (flags & MAP_PRIVATE)
                addr = PAGE_ALIGN(addr);
        else
                addr = COLOUR_ALIGN(addr);
 
        for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) {
                /* At this point:  (!vma || addr < vma->vm_end). */
                if (TASK_SIZE - len < addr)
                        return -ENOMEM;
                if (!vma || addr + len <= vma->vm_start)
                        return addr;
                addr = vma->vm_end;
                if (!(flags & MAP_PRIVATE))
                        addr = COLOUR_ALIGN(addr);
        }
}
#endif
を見る限りsh4にdependsって事も無いと思うのでsh3でも同じコードで問題ないのではないかなぁ??
ここで使っているcolourという単語は、一般的なコンピュータ用語の『メモリのカラーリング』と同じ意味でよいのかな?カラーリングってのは例えば『速い高価なメモリ/遅い大容量メモリ』みたいに『使い方の異なるアドレス領域の色分け』の時に使う言葉で正しいんでしたっけ?>識者の方

どーでもいいけどcolourって英国スペルですね。コンピュータ言語だとcolorを使うことが多い気がする。


2004年02月27日

サルサ

5/2はキューバンサルサフェスティバルです。皆さんスケジュールあけておきましょう(^-^)。そしてどうぞ名古屋へ!。たしか今年は CLUB DIAMOND HALL だったはずです。

これほしー

アルミの薔薇!!
すげー。これ欲しぃ。たけー買えねぇ。

Landy

sh4でphp4のセルフビルドができた。
landy:~/build/php4-4.3.3# time dpkg-buildpackage -us -uc -d
real    93m43.000s
user    78m36.730s
sys     14m11.040s
 
landy:~/build/php4-4.3.3# ls ../php4*_sh4.deb
../php4-cgi_4.3.3-5_sh4.deb     ../php4-ldap_4.3.3-5_sh4.deb   ../php4-recode_4.3.3-5_sh4.deb
../php4-curl_4.3.3-5_sh4.deb    ../php4-mcal_4.3.3-5_sh4.deb   ../php4-snmp_4.3.3-5_sh4.deb
../php4-domxml_4.3.3-5_sh4.deb  ../php4-mhash_4.3.3-5_sh4.deb  ../php4-sybase_4.3.3-5_sh4.deb
../php4-gd_4.3.3-5_sh4.deb      ../php4-mysql_4.3.3-5_sh4.deb  ../php4-xslt_4.3.3-5_sh4.deb
../php4-imap_4.3.3-5_sh4.deb    ../php4-odbc_4.3.3-5_sh4.deb   ../php4_4.3.3-5_sh4.deb

2004年02月28日 曇りのち雨

サルサ

土曜日のエルココ。いつもどおり賑わう。日本人、外国人、沢山の人々がいる。ラティーノにとってサルサは遠く離れた故郷と自身のアイデンティティを思い起こさせるものだと聞いた。日本人は外国に住んだ時、ひとつの物に集まれる文化があるのだろうか。お茶会。。。とかかな?老若男女としたら、、う〜ん、、なんだろう。

おいらごときが言うのもおかしいが、サルサの楽しみ方もさまざまだ。二人で踊るペアダンス。二人が楽しければそれで良いのだと思う。エルココに、ペアの女性に笑みをこぼれさせるリードをする男がいる。軽くふざけてみたり、からかってみたり。そんな男がエルココで数人見かける。賛否はあろうが(笑)おいらは見てる者すら笑わせてくれるそんな踊り方が好きだ。そらから、パフォーマンスは見ていただく人に楽しんでもらうためのもの。おいらは自分が楽しんでしまうのであまり向いてないかもしれない。そして、一人で踊るサルサ。部屋でCDをかけ、グラスを持って揺れていれば良いのだ。

東京から越してきたという人が、まるで古くからの常連のように人の輪に溶け込んでいた。ただのダンスのひとつだけど、グラスを持って話をし、踊り、また会話に興じる。そしてそこにいることが自然になる。土曜日のエルココは混んでいて踊りにくいけど、メレンゲ踊れば良いじゃないか。揺れていれば楽しいじゃないかと思ってきた。

サルサ

某月某日の岐阜のサルサバンドはReal Son Omeleというバンドでした。名前忘れてしまって教えてもらった。

すごい混んでたなぁ。

ゴジラ

ゴジラ松井の胸囲は127cmもあるということだ。すげぇなぁ。おいらは半年ほどトレーニングをサボってしまった。秋は東京コングレスの練習で埋まってしまったし。。と言い訳しておく。某サルサ女史に負けずにジム復活せなかんな。

映画

あの伝説の映画「デスペラード」の続編「レジェンドオブメキシコ」が公開される。今回もギターケースを忘れないようにせなかんかな。見みなきゃかん。

甲殻機動隊の続編「イノセンス」も公開される。自分好みの映画が目白押しだ。


2004年02月29日 曇り

うるう年

うるう年なので何か書いておく。小学校の頃にうるう年が珍しくてはしゃいだ記憶があるが何も思わなくなって何年たつだろうか。(笑

ラテンに酔う週末も過ぎ、明日から3月だ。忙しく働こう。

長年日記

やっぱり長年日記は非表示にした(A^^;;