Jul 27,1999 FORCE CPU-50T、Solaris 2.6用 ccドライバ・キットの作成 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/ onl50t-sol2.6/50t-sol2.6-kit.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). はじめに FORCE SPARC CPU-8VT および CPU-50T、Solaris 2.6でccドライバのデバッグを 行なった。 SPARC CPU-8VT のデバッグでは CPU-8VTをサーバにし、CPU-7V 2台 をディスクレス・クライアントの構成にして行った。 デバッグの後、サーバ およびディスクレス・クライアントとも次の動作が正常に実行できることを確認 した。 (A). camacシングル・アクション 24ビットread/write。 (B). camac LAM 割り込み処理。 (C). camacブロック転送 16ビットread/write。 (D). camacブロック転送 24ビットread/write。 SPARC CPU-8VT、CPU-7V を使ったサーバ、ディスクレス・クライアントのシステ ムでの CAMACのテストの後で SPARC CPU-50T を使ってスタンドアロンシステム での CAMACのデバッグを行なった。 このシステムでも、上記の項目(A)〜(D)に ついて正常に実行できることを確認した。 さらにデバッグ後の ccドライバを使って、SPARC CPU-8VT、CPU-7V、CPU-5V を 使ったスタンドアロン・システムでも動作確認を行った。 その結果ccドライバ は正常に実行できることを確認した。 (1). FORCE SPARC CPU-8VT、Desktop Solaris2.6 (2). FORCE SPARC CPU-7V、Desktop Solaris2.6 (3). FORCE SPARC CPU-5V、Desktop Solaris2.6 そこで、デバッグ後の ccドライバを使って、配布キットを作り直して、ユーザ に公開することにした。 この文書は ccドライバ・キット、"FORCE-50T-sol2.6" を作成した時の記録である。 (2). キット作成の元にしたもの キット作りの元にしたものは、今回、SPARC CPU-50T のデバッグに使用した 各ファイルである。 デバッグ時に使用した各ファイルは、onl50t のマシン の以下のディレクトリの下にある。 /export/home/onl50t/inoue/CAMAC/Driver/FORCE-5V-sol2.5 このディレクトリを、onlsun1 のマシンの、以下のキット作成用ディレクトリ にコピーして、新たなキットを作ることにした。 /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit (2-1). デバッグに使用した各ファイルをキット作成用ディレクトリにコピー onlsun1[397]% pwd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit onlsun1[398]% ls -l 合計 0 onlsun1[399]% rcp -r onl50t:/export/home/onl50t/inoue/CAMAC/Driver/FORCE-5V-sol2.5 . onlsun1[400]% ls -l 合計 2 drwxr-xr-x 5 inoue kek 1024 7月 16日 10:47 FORCE-5V-sol2.5/ onlsun1[401]% cd FORCE-5V-sol2.5 /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5 onlsun1[402]% ls Makefile camlib.c cc.h-Apr-5-1999 README camlib.h cc.h-org cam1* camlib.o cc.new.c* cam1-1* cc cc_common.h cam1-1.c cc.c cc_config.h cam1.c cc.c-Apr-7-1999-ok forlib.c cam1.c-Jun-28-1999-ok cc.c-Apr-9-1999-bak forlib.o cam1.c.org cc.c-Jul-5-1999-tmp k2917.h cam2* cc.c-Jun-28-1999-ok ktaka/ cam2.f cc.c-June-23-1999 libcamac.a cam2.nm cc.c-bak/ out cam3* cc.c-diff out1 cam3.c cc.c-org out2 cam3.c-Jun-28-1999-bak cc.conf out3 cam3.c-org cc.h script/ onlsun1[403]% mkdir FORCE-50T-sol2.6 onlsun1[404]% ls -l 合計 1748 drwxr-xr-x 2 inoue kek 512 7月 16日 10:51 FORCE-50T-sol2.6/ -rw-r--r-- 1 inoue kek 2107 7月 16日 10:47 Makefile -rw-r--r-- 1 inoue kek 2730 7月 16日 10:47 README -rwxr-xr-x 1 inoue kek 13944 7月 16日 10:47 cam1* -rwxr-xr-x 1 inoue kek 14316 7月 16日 10:47 cam1-1* -rw-r--r-- 1 inoue kek 1645 7月 16日 10:47 cam1-1.c -rw-r--r-- 1 inoue kek 1170 7月 16日 10:47 cam1.c -rw-r--r-- 1 inoue kek 1374 7月 16日 10:47 cam1.c-Jun-28-1999-ok -rw-r--r-- 1 inoue kek 1170 7月 16日 10:47 cam1.c.org -rwxr-xr-x 1 inoue kek 29052 7月 16日 10:47 cam2* -rw-r--r-- 1 inoue kek 2295 7月 16日 10:47 cam2.f -rw-r--r-- 1 inoue kek 16422 7月 16日 10:47 cam2.nm -rwxr-xr-x 1 inoue kek 14476 7月 16日 10:47 cam3* -rw-r--r-- 1 inoue kek 2055 7月 16日 10:47 cam3.c -rw-r--r-- 1 inoue kek 2410 7月 16日 10:47 cam3.c-Jun-28-1999-bak -rw-r--r-- 1 inoue kek 2055 7月 16日 10:47 cam3.c-org -rw-r--r-- 1 inoue kek 9740 7月 16日 10:47 camlib.c -rw-r--r-- 1 inoue kek 1415 7月 16日 10:47 camlib.h -rw-r--r-- 1 inoue kek 9528 7月 16日 10:47 camlib.o -rw-r--r-- 1 inoue kek 55604 7月 16日 10:47 cc -rw-r--r-- 1 inoue kek 78849 7月 16日 10:47 cc.c -rw-r--r-- 1 inoue kek 73164 7月 16日 10:47 cc.c-Apr-7-1999-ok -rw-r--r-- 1 inoue kek 73498 7月 16日 10:47 cc.c-Apr-9-1999-bak -rw-r--r-- 1 inoue kek 79289 7月 16日 10:47 cc.c-Jul-5-1999-tmp -rw-r--r-- 1 inoue kek 78220 7月 16日 10:47 cc.c-Jun-28-1999-ok -rw-r--r-- 1 inoue kek 74886 7月 16日 10:47 cc.c-June-23-1999 drwxr-xr-x 2 inoue kek 512 7月 16日 10:47 cc.c-bak/ -rw-r--r-- 1 inoue kek 38320 7月 16日 10:47 cc.c-diff -rw-r--r-- 1 inoue kek 64403 7月 16日 10:47 cc.c-org -rw-r--r-- 1 inoue kek 288 7月 16日 10:47 cc.conf -rw-r--r-- 1 inoue kek 2861 7月 16日 10:47 cc.h -rw-r--r-- 1 inoue kek 2861 7月 16日 10:47 cc.h-Apr-5-1999 -rw-r--r-- 1 inoue kek 2748 7月 16日 10:47 cc.h-org -rwxr----- 1 inoue kek 66215 7月 16日 10:47 cc.new.c* -rw-r--r-- 1 inoue kek 2288 7月 16日 10:47 cc_common.h -rw-r--r-- 1 inoue kek 876 7月 16日 10:47 cc_config.h -rw-r--r-- 1 inoue kek 3289 7月 16日 10:47 forlib.c -rw-r--r-- 1 inoue kek 3480 7月 16日 10:47 forlib.o -rw-r--r-- 1 inoue kek 4058 7月 16日 10:47 k2917.h drwxr-xr-x 10 inoue kek 512 7月 16日 10:47 ktaka/ -rw-r--r-- 1 inoue kek 13868 7月 16日 10:47 libcamac.a -rw-r--r-- 1 inoue kek 8875 7月 16日 10:47 out -rw-r--r-- 1 inoue kek 9033 7月 16日 10:47 out1 -rw-r--r-- 1 inoue kek 1390 7月 16日 10:47 out2 -rw-r--r-- 1 inoue kek 727 7月 16日 10:47 out3 drwxr-xr-x 2 inoue kek 512 7月 16日 10:47 script/ onlsun1[405]% 新たな camacドライバ・キットは onlsun1のマシンの次のディレクトリに作る。 /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/ FORCE-5V-sol2.5/FORCE-50T-sol2.6 (3). キットの作成 キット作りは以下の手順で行なう。 まず、今回のデバッグの元にしたキット、 ftp://online.kek.jp/pub/kek/camac/FORCE-5V-sol2.5.tar.gz に含まれるファイルの一覧を確認する。 次に、これらのファイルに対して デバッグ後のものを割り当てる。 そして最後に、デバッグ時に各ファイル に書き加えた不必要な記述を削除する。 (3-1). 今回のデバッグの元にしたキット 今回のデバッグの元にしたキットに含まれていた各ファイルを確認する。 onl50t[163]% pwd /export/home/onl50t/inoue/CAMAC/Driver/tmp1/FORCE-5V-sol2.5 onl50t[164]% ls -lR .: total 210 -rw-r--r-- 1 inoue kek 2041 May 23 1997 Makefile -rw-r--r-- 1 inoue kek 2730 Jul 1 1997 README -rw-r--r-- 1 inoue kek 1170 May 13 1997 cam1.c -rw-r--r-- 1 inoue kek 2295 May 22 1997 cam2.f -rw-r--r-- 1 inoue kek 2055 May 21 1997 cam3.c -rw-r--r-- 1 inoue kek 9740 May 21 1997 camlib.c -rw-r--r-- 1 inoue kek 1415 May 13 1997 camlib.h -rw-r--r-- 1 inoue kek 64403 Jun 2 1997 cc.c -rw-r--r-- 1 inoue kek 288 May 13 1997 cc.conf -rw-r--r-- 1 inoue kek 2748 May 13 1997 cc.h -rw-r--r-- 1 inoue kek 2288 May 13 1997 cc_common.h -rw-r--r-- 1 inoue kek 876 May 13 1997 cc_config.h -rw-r--r-- 1 inoue kek 3289 May 13 1997 forlib.c -rw-r--r-- 1 inoue kek 4058 May 13 1997 k2917.h drwxr-xr-x 2 inoue kek 512 Nov 10 1997 script/ ./script: total 14 -rw-r--r-- 1 inoue kek 66 May 13 1997 awk1.txt -rw-r--r-- 1 inoue kek 37 May 13 1997 awk2.txt -rwxr-xr-x 1 inoue kek 233 May 13 1997 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 234 May 13 1997 cc_build.sh* -rwxr-xr-x 1 inoue kek 528 Nov 10 1997 cc_link.sh* -rwxr-xr-x 1 inoue kek 611 May 13 1997 cc_load.sh* -rwxr-xr-x 1 inoue kek 270 May 13 1997 cc_unload.sh* onl50t[165]% (3-2). 今回のデバッグ後のファイル 今回のデバッグ後の各ファイルを確認する。 onl50t[174]% pwd /export/home/onl50t/inoue/CAMAC/Driver/FORCE-5V-sol2.5 onl50t[175]% ls -lR .: total 1746 -rw-r--r-- 1 inoue kek 2107 Jul 2 10:35 Makefile -rw-r--r-- 1 inoue kek 2730 Jul 1 1997 README -rwxr-xr-x 1 inoue kek 13944 Jun 28 10:23 cam1* -rwxr-xr-x 1 inoue kek 14316 Jul 2 13:51 cam1-1* -rw-r--r-- 1 inoue kek 1645 Jul 2 13:51 cam1-1.c -rw-r--r-- 1 inoue kek 1170 Jun 28 10:22 cam1.c -rw-r--r-- 1 inoue kek 1374 Jun 16 15:34 cam1.c-Jun-28-1999-ok -rw-r--r-- 1 inoue kek 1170 May 13 1997 cam1.c.org -rwxr-xr-x 1 inoue kek 29052 Jun 4 15:28 cam2* -rw-r--r-- 1 inoue kek 2295 May 22 1997 cam2.f -rw-r--r-- 1 inoue kek 16422 Mar 9 16:29 cam2.nm -rwxr-xr-x 1 inoue kek 14476 Jun 28 10:09 cam3* -rw-r--r-- 1 inoue kek 2055 Jun 28 09:54 cam3.c -rw-r--r-- 1 inoue kek 2410 Jun 21 09:59 cam3.c-Jun-28-1999-bak -rw-r--r-- 1 inoue kek 2055 May 21 1997 cam3.c-org -rw-r--r-- 1 inoue kek 9740 May 21 1997 camlib.c -rw-r--r-- 1 inoue kek 1415 May 13 1997 camlib.h -rw-r--r-- 1 inoue kek 9528 Jun 4 15:28 camlib.o -rw-r--r-- 1 inoue kek 55604 Jul 9 14:23 cc -rw-r--r-- 1 inoue kek 78849 Jul 9 14:23 cc.c -rw-r--r-- 1 inoue kek 73164 Apr 7 10:36 cc.c-Apr-7-1999-ok -rw-r--r-- 1 inoue kek 73498 Apr 9 10:43 cc.c-Apr-9-1999-bak -rw-r--r-- 1 inoue kek 79289 Jul 5 16:46 cc.c-Jul-5-1999-tmp -rw-r--r-- 1 inoue kek 78220 Jun 25 15:00 cc.c-Jun-28-1999-ok -rw-r--r-- 1 inoue kek 74886 Jun 21 16:17 cc.c-June-23-1999 drwxr-xr-x 2 inoue kek 512 Apr 7 10:36 cc.c-bak/ -rw-r--r-- 1 inoue kek 38320 May 7 15:51 cc.c-diff -rw-r--r-- 1 inoue kek 64403 Jun 2 1997 cc.c-org -rw-r--r-- 1 inoue kek 288 May 13 1997 cc.conf -rw-r--r-- 1 inoue kek 2861 Apr 5 14:42 cc.h -rw-r--r-- 1 inoue kek 2861 Mar 29 14:01 cc.h-Apr-5-1999 -rw-r--r-- 1 inoue kek 2748 May 13 1997 cc.h-org -rwxr----- 1 inoue kek 66215 Feb 18 16:10 cc.new.c* -rw-r--r-- 1 inoue kek 2288 May 13 1997 cc_common.h -rw-r--r-- 1 inoue kek 876 May 13 1997 cc_config.h -rw-r--r-- 1 inoue kek 3289 May 13 1997 forlib.c -rw-r--r-- 1 inoue kek 3480 Jun 4 15:28 forlib.o -rw-r--r-- 1 inoue kek 4058 May 13 1997 k2917.h drwxr-xr-x 10 inoue kek 512 Apr 6 10:52 ktaka/ -rw-r--r-- 1 inoue kek 13868 Jun 4 15:28 libcamac.a -rw-r--r-- 1 inoue kek 8875 Apr 1 09:43 out -rw-r--r-- 1 inoue kek 9033 Apr 1 14:29 out1 -rw-r--r-- 1 inoue kek 1390 Apr 5 14:32 out2 -rw-r--r-- 1 inoue kek 727 Jul 8 16:38 out3 drwxr-xr-x 2 inoue kek 512 Jun 9 10:23 script/ ./cc.c-bak: total 2088 -rw-r--r-- 1 inoue kek 72831 Apr 2 13:39 cc.c-Apr-2-1999 -rw-r--r-- 1 inoue kek 72969 Apr 2 13:50 cc.c-Apr-5-1999 -rwxr----- 1 inoue kek 73077 Apr 5 14:42 cc.c-Apr-6-1999* -rwxr----- 1 inoue kek 66255 Feb 18 16:48 cc.c-Feb-23-99* -rwxr----- 1 inoue kek 69877 Mar 12 10:32 cc.c-Mar-12-99* -rw-r--r-- 1 inoue kek 68960 Mar 16 14:19 cc.c-Mar-19.1999 -rwxr----- 1 inoue kek 67315 Feb 26 16:12 cc.c-Mar-2-99* -rwxr----- 1 inoue kek 67845 Mar 19 16:49 cc.c-Mar-23.1999* -rwxr----- 1 inoue kek 71537 Mar 23 16:18 cc.c-Mar-24-1999* -rw-r--r-- 1 inoue kek 71660 Mar 24 09:41 cc.c-Mar-24a-1999 -rw-r--r-- 1 inoue kek 71834 Mar 29 14:00 cc.c-Mar-30.1999 -rw-r--r-- 1 inoue kek 72520 Mar 30 11:26 cc.c-Mar-31-1999 -rwxr----- 1 inoue kek 69265 Mar 5 17:07 cc.c-Mar-8-99* -rwxr----- 1 inoue kek 66780 Feb 24 14:19 cc.c-debug* -rw-r--r-- 1 inoue kek 69351 Mar 8 16:37 cc.c.Logichouse -rw-r--r-- 1 inoue kek 8524 Mar 19 15:35 cc.c.diff-Mar19.1999 ./ktaka: total 16 drwxr-xr-x 2 inoue kek 512 Mar 23 11:41 old/ drwxr-xr-x 2 inoue kek 512 Mar 23 11:49 old1/ drwxr-xr-x 2 inoue kek 512 Mar 24 09:38 old2/ drwxr-xr-x 2 inoue kek 512 Mar 24 13:48 old3/ drwxr-xr-x 2 inoue kek 512 Mar 30 15:23 old4/ drwxr-xr-x 2 inoue kek 512 Mar 31 09:30 old5/ drwxr-xr-x 2 inoue kek 512 Apr 5 14:14 old6/ drwxr-xr-x 2 inoue kek 512 Apr 6 11:21 try/ ./ktaka/old: total 462 -rw-rw-rw- 1 inoue kek 69632 Mar 19 15:29 camac.tar -rwxr----- 1 inoue kek 67770 Mar 3 09:40 cc.c* -rw------- 1 inoue kek 98083 Mar 19 15:27 t42r.dat ./ktaka/old1: total 508 -rwxr----- 1 inoue kek 71537 Mar 17 13:51 cc.c* -rw-rw-rw- 1 inoue kek 73216 Mar 23 11:48 cc.tar -rw------- 1 inoue kek 103338 Mar 23 11:42 t46r.dat ./ktaka/old2: total 512 -rw-r--r-- 1 inoue kek 71660 Mar 17 14:13 cc.c -rw-rw-rw- 1 inoue kek 73216 Mar 24 09:35 cc.tar -rw-r--r-- 1 inoue kek 1573 Mar 24 09:38 out -rw------- 1 inoue kek 103929 Mar 24 09:35 t48r.dat ./ktaka/old3: total 10 -rw------- 1 inoue kek 4421 Mar 24 13:48 t50r.dat ./ktaka/old4: total 370 -rw-rw-rw- 1 inoue kek 74240 Mar 30 15:22 cc.tar -rw------- 1 inoue kek 104392 Mar 30 15:22 t57r.dat ./ktaka/old5: total 370 -rw-rw-rw- 1 inoue kek 74240 Mar 31 09:30 cc.tar -rw------- 1 inoue kek 106065 Mar 31 09:29 t60r.dat ./ktaka/old6: total 530 -rwxr----- 1 inoue kek 73077 Apr 5 12:41 cc.c* -rw-rw-rw- 1 inoue kek 74752 Apr 5 14:14 cc.tar -rw------- 1 inoue kek 107792 Apr 5 14:14 t67r.dat ./ktaka/try: total 530 -rw-r--r-- 1 inoue kek 73164 Apr 5 20:45 cc.c -rw-rw-rw- 1 inoue kek 74752 Apr 6 11:20 cc.tar -rw-r--r-- 1 inoue kek 109798 Apr 6 10:52 t69r.dat ./script: total 18 -rw-r--r-- 1 inoue kek 66 May 13 1997 awk1.txt -rw-r--r-- 1 inoue kek 37 May 13 1997 awk2.txt -rwxr-xr-x 1 inoue kek 233 May 13 1997 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 234 May 13 1997 cc_build.sh* -rwxr-xr-x 1 inoue kek 528 Jun 9 09:59 cc_link.sh* -rwxr-xr-x 1 inoue kek 808 Jun 9 10:21 cc_load.sh* -rwxr-xr-x 1 inoue kek 611 May 13 1997 cc_load.sh.org* -rwxr-xr-x 1 inoue kek 270 May 13 1997 cc_unload.sh* -rwxr--r-- 1 inoue kek 248 Jun 9 09:50 t1* onl50t[176]% (3-3). 各ファイルの配置 今回のデバッグの元にしたキットの各ファイル対して、デバッグ後のものを 割り当てる。 onlsun1[411]% pwd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5 onlsun1[412]% ls FORCE-50T-sol2.6/ camlib.c cc.h-org Makefile camlib.h cc.new.c* README camlib.o cc_common.h cam1* cc cc_config.h cam1-1* cc.c forlib.c cam1-1.c cc.c-Apr-7-1999-ok forlib.o cam1.c cc.c-Apr-9-1999-bak k2917.h cam1.c-Jun-28-1999-ok cc.c-Jul-5-1999-tmp ktaka/ cam1.c.org cc.c-Jun-28-1999-ok libcamac.a cam2* cc.c-June-23-1999 out cam2.f cc.c-bak/ out1 cam2.nm cc.c-diff out2 cam3* cc.c-org out3 cam3.c cc.conf script/ cam3.c-Jun-28-1999-bak cc.h cam3.c-org cc.h-Apr-5-1999 onlsun1[413]% (3-3-1). Makefile onlsun1[413]% mv Makefile FORCE-50T-sol2.6 onlsun1[414]% (3-3-2). README onlsun1[414]% mv README FORCE-50T-sol2.6 onlsun1[415]% (3-3-3). cam1.c onlsun1[415]% mv cam1.c FORCE-50T-sol2.6 onlsun1[416]% (3-3-4). cam2.f onlsun1[416]% mv cam2.f FORCE-50T-sol2.6 onlsun1[417]% (3-3-5). cam3.c onlsun1[417]% mv cam3.c FORCE-50T-sol2.6 onlsun1[418]% (3-3-6). camlib.c onlsun1[418]% mv camlib.c FORCE-50T-sol2.6 onlsun1[419]% (3-3-7). camlib.h onlsun1[419]% mv camlib.h FORCE-50T-sol2.6 onlsun1[420]% (3-3-8). cc.c onlsun1[420]% mv cc.c FORCE-50T-sol2.6 onlsun1[421]% (3-3-9). cc.conf onlsun1[421]% mv cc.conf FORCE-50T-sol2.6 onlsun1[422]% (3-3-10). cc.h onlsun1[422]% mv cc.h FORCE-50T-sol2.6 onlsun1[423]% (3-3-11). cc_common.h onlsun1[423]% mv cc_common.h FORCE-50T-sol2.6 onlsun1[424]% (3-3-12). cc_config.h onlsun1[424]% mv cc_config.h FORCE-50T-sol2.6 onlsun1[425]% (3-3-13). forlib.c onlsun1[425]% mv forlib.c FORCE-50T-sol2.6 onlsun1[426]% (3-3-14). k2917.h onlsun1[426]% mv k2917.h FORCE-50T-sol2.6 onlsun1[427]% (3-3-15). cc_build.sh onlsun1[428]% mkdir FORCE-50T-sol2.6/script onlsun1[429]% mv script/cc_build.sh FORCE-50T-sol2.6/script onlsun1[430]% (3-3-16). cc_load.sh onlsun1[430]% mv script/cc_load.sh FORCE-50T-sol2.6/script onlsun1[431]% (3-3-17). cc_unload.sh onlsun1[431]% mv script/cc_unload.sh FORCE-50T-sol2.6/script onlsun1[432]% (3-3-18). cc_build.gcc.sh onlsun1[432]% mv script/cc_build.gcc.sh FORCE-50T-sol2.6/script onlsun1[433]% (3-3-19). cc_link.sh onlsun1[433]% mv script/cc_link.sh FORCE-50T-sol2.6/script onlsun1[434]% (3-3-20). awk1.txt onlsun1[434]% mv script/awk1.txt FORCE-50T-sol2.6/script onlsun1[435]% (3-3-21). awk2.txt onlsun1[435]% mv script/awk2.txt FORCE-50T-sol2.6/script onlsun1[436]% (3-4). 各ファイル中の記述を添削する ファイルの確認。 onlsun1[441]% pwd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5/FORCE-50T-sol2.6 onlsun1[442]% ls -lR .: 合計 242 -rw-r--r-- 1 inoue kek 2107 7月 16日 10:47 Makefile -rw-r--r-- 1 inoue kek 2730 7月 16日 10:47 README -rw-r--r-- 1 inoue kek 1170 7月 16日 10:47 cam1.c -rw-r--r-- 1 inoue kek 2295 7月 16日 10:47 cam2.f -rw-r--r-- 1 inoue kek 2055 7月 16日 10:47 cam3.c -rw-r--r-- 1 inoue kek 9740 7月 16日 10:47 camlib.c -rw-r--r-- 1 inoue kek 1415 7月 16日 10:47 camlib.h -rw-r--r-- 1 inoue kek 78849 7月 16日 10:47 cc.c -rw-r--r-- 1 inoue kek 288 7月 16日 10:47 cc.conf -rw-r--r-- 1 inoue kek 2861 7月 16日 10:47 cc.h -rw-r--r-- 1 inoue kek 2288 7月 16日 10:47 cc_common.h -rw-r--r-- 1 inoue kek 876 7月 16日 10:47 cc_config.h -rw-r--r-- 1 inoue kek 3289 7月 16日 10:47 forlib.c -rw-r--r-- 1 inoue kek 4058 7月 16日 10:47 k2917.h drwxr-xr-x 2 inoue kek 512 7月 16日 14:59 script/ ./script: 合計 14 -rw-r--r-- 1 inoue kek 66 7月 16日 10:47 awk1.txt -rw-r--r-- 1 inoue kek 37 7月 16日 10:47 awk2.txt -rwxr-xr-x 1 inoue kek 233 7月 16日 10:47 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 234 7月 16日 10:47 cc_build.sh* -rwxr-xr-x 1 inoue kek 528 7月 16日 10:47 cc_link.sh* -rwxr-xr-x 1 inoue kek 808 7月 16日 10:47 cc_load.sh* -rwxr-xr-x 1 inoue kek 270 7月 16日 10:47 cc_unload.sh* onlsun1[443]% デバッグで変更した個所を確認するために、既存のキット FORCE-5V-sol2.5 を 入手する。 nlsun1[253]% pwd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5 onlsun1[254]% mkdir tmp1 onlsun1[255]% cd tmp1 /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5/tmp1 onlsun1[256]% ls -l 合計 0 onlsun1[257]% ftp online.kek.jp Connected to onlax2.kek.jp. 220 onlax2.kek.jp FTP server (Digital UNIX Version 5.60) ready. Name (online.kek.jp:inoue): anonymous 331 Guest login ok, send ident as password. Password: 230 Guest login ok, access restrictions apply. ftp> cd pub/kek/camac 250 CWD command successful. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls (130.87.153.10,56112). total 3312 -rw-r--r-- 1 0 10 1173 Apr 19 1995 122d_to_e.tar.gz -rw-r--r-- 1 0 10 22160 Nov 19 1997 FORCE-5V-sol2.5.tar.gz -rw-r--r-- 1 0 10 2494 Dec 2 1994 README -rw-r--r-- 1 0 10 27210 Apr 27 14:17 SPARC-status-old.html -rw-r--r-- 1 0 10 28723 Jul 14 16:53 SPARC-status.html -rw-r--r-- 1 0 10 21435 Dec 13 1994 camac.sol2-1.30.tar.gz -rw-r--r-- 1 0 10 169539 Aug 18 1993 camac.sparc-1.22b.tar.Z -rw-r--r-- 1 0 10 91662 Aug 18 1993 camac.sparc-1.22b.tar.gz -rw-r--r-- 1 0 10 198417 Aug 19 1993 camac.sparc-1.22c.tar.Z -rw-r--r-- 1 0 10 110755 Aug 19 1993 camac.sparc-1.22c.tar.gz -rw-r--r-- 1 0 10 199103 Sep 4 1993 camac.sparc-1.22d.tar.Z -rw-r--r-- 1 0 10 110752 Sep 4 1993 camac.sparc-1.22d.tar.gz -rw-r--r-- 1 0 10 287493 Apr 20 1995 camacv1.01_decs.tar.Z -rw-r--r-- 1 0 10 231505 Dec 2 1994 camacv1.01_hprt.tar.Z -rw-r--r-- 1 0 10 132002 Dec 2 1994 camacv1.01_hprt.tar.gz -rw-r--r-- 1 0 10 283202 Dec 2 1994 camacv1.0_decs.tar.Z -rw-r--r-- 1 0 10 159495 Dec 2 1994 camacv1.0_decs.tar.gz -rw-r--r-- 1 0 10 216777 Sep 13 1994 camacv1.0_hprt.tar.Z -rw-r--r-- 1 0 10 122114 Sep 13 1994 camacv1.0_hprt.tar.gz -rw-r--r-- 1 0 10 87379 Nov 30 1994 camlib-docs-1.0.tar.Z -rw-r--r-- 1 0 10 51118 Nov 30 1994 camlib-docs-1.0.tar.gz -rw-r--r-- 1 0 10 13589 Jan 17 1995 sparc-3ce.tar.gz -rw-r--r-- 1 0 10 233395 Aug 18 1993 tdaq-1.00.tar.Z -rw-r--r-- 1 0 10 121288 Apr 2 1992 tdaq-1.00.tar.gz -rw-r--r-- 1 0 10 277799 Jan 20 1995 vme-3CE.tar.gz 226 Transfer complete. 1907 bytes received in 0.063 seconds (29.61 Kbytes/s) ftp> binary 200 Type set to I. ftp> get FORCE-5V-sol2.5.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for FORCE-5V-sol2.5.tar.gz (130.87.153.10,56113) (22160 bytes). 226 Transfer complete. local: FORCE-5V-sol2.5.tar.gz remote: FORCE-5V-sol2.5.tar.gz 22160 bytes received in 0.044 seconds (491.75 Kbytes/s) ftp> quit 221 Goodbye. onlsun1[258]% ls -l 合計 44 -rw-r--r-- 1 inoue kek 22160 7月 19日 15:20 FORCE-5V-sol2.5.tar.gz onlsun1[259]% gzip -d FORCE-5V-sol2.5.tar.gz onlsun1[260]% ls -l 合計 256 -rw-r--r-- 1 inoue kek 120320 11月 10日 1997年 FORCE-5V-sol2.5.tar onlsun1[261]% tar xf FORCE-5V-sol2.5.tar onlsun1[262]% ls -l 合計 258 drwxr-xr-x 3 inoue kek 512 5月 23日 1997年 FORCE-5V-sol2.5/ -rw-r--r-- 1 inoue kek 120320 11月 10日 1997年 FORCE-5V-sol2.5.tar onlsun1[263]% cd FORCE-5V-sol2.5 /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5/tmp1/FORCE-5V-sol2.5 onlsun1[264]% ls Makefile cam2.f camlib.h cc.h forlib.c README cam3.c cc.c cc_common.h k2917.h cam1.c camlib.c cc.conf cc_config.h script/ onlsun1[265]% onlsun1[272]% pwd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5/FORCE-50T-sol2.6 onlsun1[273]% ls Makefile cam2.f camlib.h cc.h forlib.c README cam3.c cc.c cc_common.h k2917.h cam1.c camlib.c cc.conf cc_config.h script/ onlsun1[274]% ls ../tmp1/FORCE-5V-sol2.5 Makefile cam2.f camlib.h cc.h forlib.c README cam3.c cc.c cc_common.h k2917.h cam1.c camlib.c cc.conf cc_config.h script/ onlsun1[275]% (3-4-1). FORCE-50T-sol2.6/Makefileファイルの整備 Makefileファイルの修正個所の確認 onlsun1[281]% pwd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5/FORCE-50T-sol2.6 onlsun1[282]% diff Makefile ../tmp1/FORCE-5V-sol2.5/Makefile 52,54d51 < cam1-1 : cam1-1.c < $(CC) $(CFLAGS) cam1-1.c -o cam1-1 $(CLIB) < onlsun1[283]% Makefile にはデバッグ時に cam1-1プログラムのコンパイルの部分を付加して いる。 これは、キットでは必要ないので削除する。 (3-4-1-a). FORCE-50T-sol2.6/Makefileファイルの修正 onlsun1[286]% vi Makefile : ########## for examples ########## cam1-1 : cam1-1.c <-- 削除 $(CC) $(CFLAGS) cam1-1.c -o cam1-1 $(CLIB) <-- 削除 cam1 : cam1.c $(CC) $(CFLAGS) cam1.c -o cam1 $(CLIB) cam2 : cam2.f $(FC) $(FFLAGS) cam2.f -o cam2 $(CLIB) cam3 : cam3.c $(CC) $(CFLAGS) cam3.c -o cam3 $(CLIB) ########## for installation etc. ########## : "Makefile" 76 行、2041 バイト onlsun1[287]% (3-4-2). FORCE-50T-sol2.6/cam1.cファイルの整備 cam1.cファイルの修正個所の確認 onlsun1[288]% diff cam1.c ../tmp1/FORCE-5V-sol2.5/cam1.c onlsun1[289]% cam1.cファイルは変更していない。 (3-4-3). FORCE-50T-sol2.6/cam2.fファイルの整備 cam2.fファイルの修正個所の確認 onlsun1[290]% diff cam2.f ../tmp1/FORCE-5V-sol2.5/cam2.f onlsun1[291]% cam2.fファイルは変更していない。 (3-4-4). FORCE-50T-sol2.6/cam3.cファイルの整備 cam3.cファイルの修正個所の確認 onlsun1[292]% diff cam3.c ../tmp1/FORCE-5V-sol2.5/cam3.c onlsun1[293]% cam3.cファイルは変更していない。 (3-4-5). FORCE-50T-sol2.6/camlib.cファイルの整備 camlib.cファイルの修正個所の確認 onlsun1[293]% diff camlib.c ../tmp1/FORCE-5V-sol2.5/camlib.c onlsun1[294]% camlib.cファイルは変更していない。 (3-4-6). FORCE-50T-sol2.6/camlib.hファイルの整備 camlib.hファイルの修正個所の確認 onlsun1[294]% diff camlib.h ../tmp1/FORCE-5V-sol2.5/camlib.h onlsun1[295]% camlib.hファイルは変更していない。 (3-4-7). FORCE-50T-sol2.6/cc.cファイルの整備 cc.cファイルの修正個所の確認 onlsun1[295]% diff cc.c ../tmp1/FORCE-5V-sol2.5/cc.c 25,28d24 < /* add logichouse */ < #include < #include < /* end */ 36,39d31 < /* By E.Inoue begin < #define uprintf(x) cmn_err(CE_NOTE,x) < end */ < 43,63d34 < < /* add logichouse */ < static ddi_dma_attr_t cc_dma_attr = < { < DMA_ATTR_V0, /* dma_attr_version */ < (unsigned long long)0x0, /* dma_attr_addr_lo */ < (unsigned long long)0xffffffff, /* dma_attr_addr_hi */ < (unsigned long long)0xffffffff, /* dma_attr_count_max */ < 0x4, /* dma_attr_align */ < DEFAULT_BURSTSIZE | BURST32, /* dma_attr_burstsizes */ < 0x4, /* dma_attr_minxfer */ < (unsigned long long)0xffffffff, /* dma_attr_maxxfer */ < (unsigned long long)0xffffffff, /* dma_attr_seg */ < 17, /* dma_attr_sgllen */ < 512, /* dma_attr_granular */ < 0, /* dma_attr_flags */ < }; < /* end */ < < static void *cc_state; < 101,103d71 < /* add logichouse */ < uint_t ccount; < /* end */ 107,119d74 < int cc_sys_status; /* temporally system status storage */ < /* add E.Inoue */ < struct cc_iosb iosb; < struct cc_message message; < u_short data_area[CC_LIST_MAX_DATA]; < u_short list_area[CC_LIST_MAX_LENGTH]; < struct klist klist1[CC_KLIST_MAX_DIR]; < int ptr_dir; < u_short ptr_cma, now_cma, now_wc; < /* end */ < /* add E.Inoue */ < int data1; < /* end */ 122,123d76 < < 144,147c97,98 < /* By E.Inoue */ < /*static void cc_timeout(); */ < static void cc_timeout(caddr_t unit); < static int camac_s(int unit, u_short mode, u_short naf, --- > static void cc_timeout(); > static int camac_s(struct cc_device *cc, u_short mode, u_short naf, 149c100 < static int camac_b(int unit, u_short mode, u_short naf, --- > static int camac_b(struct cc_device *cc, u_short mode, u_short naf, 226,235c177 < int error; < < if((error = ddi_soft_state_init(&cc_state,sizeof(struct cc_device),1)) != 0){ < return(error); < } < if((error = mod_install(&modlinkage)) != 0){ < ddi_soft_state_fini(&cc_state); < } < < return(error); --- > return (mod_install(&modlinkage)); 245,250c187 < int error; < < if((error = mod_remove(&modlinkage)) == 0){ < ddi_soft_state_fini(&cc_state); < } < return (error); --- > return (mod_remove(&modlinkage)); 272d208 < int instance; 274,276c210,211 < register struct cc_device *cc; < /* register struct cc_device *cc = &ccdevice[0]; */ < --- > register struct cc_device *cc = &ccdevice[0]; > 280,298d214 < instance = ddi_get_instance(dip); < < /* initialize cc_device */ < < if(ddi_soft_state_zalloc(cc_state,instance) != DDI_SUCCESS){ < cmn_err(CE_WARN,"cc_probe: ddi_soft_state_zalloc failed"); < return (DDI_FAILURE); < } < < if((cc = ddi_get_soft_state(cc_state,instance)) == NULL){ < cmn_err(CE_WARN,"cc_probe: ddi_get_soft_state failed"); < ddi_soft_state_free(cc_state,instance); < goto failure; < } < < /* bzero((char *)cc, sizeof(struct cc_device)); */ < cc->dip = dip; < /* cc->k = (struct K_REG *)reg; */ < 300c216 < if (ddi_map_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t)0, 0)) { --- > if (ddi_map_regs(dip, (u_int)0, (caddr_t *)®, (off_t)0, 0)) { 304a221,225 > /* initialize cc_device */ > bzero((char *)cc, sizeof(struct cc_device)); > cc->dip = dip; > cc->k = (struct K_REG *)reg; > 318c239 < ddi_unmap_regs(dip, 0, (caddr_t *)&cc->k, (off_t) 0, (off_t) 0); --- > ddi_unmap_regs(dip, 0, (caddr_t *)®, (off_t) 0, (off_t) 0); 321a243 > static int 325,328c247,248 < register struct cc_device *cc; < /* register struct cc_device *cc = &ccdevice[0]; */ < /* register struct K_REG *k = cc->k; */ < int instance; --- > register struct cc_device *cc = &ccdevice[0]; > register struct K_REG *k = cc->k; 330,336d249 < instance = ddi_get_instance(dip); < < if((cc = ddi_get_soft_state(cc_state,instance)) == NULL){ < cmn_err(CE_WARN,"cc_probe: ddi_get_soft_state failed"); < return (DDI_FAILURE); < } < 342,343c255,256 < ddi_pokes(dip, (short *)&cc->k->csr, (short)value); < ddi_peeks(dip, (short *)&cc->k->csr, (short *)&value); --- > ddi_pokes(dip, (short *)&k->csr, (short)value); > ddi_peeks(dip, (short *)&k->csr, (short *)&value); 345c258 < uprintf("cc_attach: unable to reset K2917\n"); --- > uprintf("cc_attach: unable to reset K2917\n"); 351,353c264,266 < NULL, NULL) == DDI_FAILURE) { < ddi_remove_minor_node(dip, NULL); < uprintf("cc_attach: unable to create minor node\n"); --- > NULL, NULL) == DDI_FAILURE) { > ddi_remove_minor_node(dip, NULL); > uprintf("cc_attach: unable to create minor node\n"); 359,362c272,275 < (ddi_idevice_cookie_t *) NULL, cc_intr, < (caddr_t) instance) != DDI_SUCCESS) { < ddi_remove_minor_node(dip, NULL); < uprintf("cc_attach: unable to install high-interrupt handler\n"); --- > (ddi_idevice_cookie_t *) NULL, cc_intr, > (caddr_t) NULL) != DDI_SUCCESS) { > ddi_remove_minor_node(dip, NULL); > uprintf("cc_attach: unable to install high-interrupt handler\n"); 365c278 < --- > 368c281 < MUTEX_DRIVER, (void *)&cc->iblock_cookie); --- > MUTEX_DRIVER, (void *)&cc->iblock_cookie); 372,381c285 < < /* add logichouse */ < if (ddi_dma_alloc_handle(dip, &cc_dma_attr,DDI_DMA_SLEEP, NULL, < &cc->handle) != DDI_SUCCESS) { < cmn_err(CE_WARN,"cc_attach: can't alloc dma handle"); < return (DDI_FAILURE); < } < /* end */ < < --- > 385d288 < 389,391c292 < register struct cc_device *cc; < /* register struct cc_device *cc = &ccdevice[0]; */ < int instance; --- > register struct cc_device *cc = &ccdevice[0]; 394,402d294 < < instance = ddi_get_instance(dip); < < cc = ddi_get_soft_state(cc_state,instance); < < /* add logichouse */ < ddi_dma_free_handle(&cc->handle); < /* end */ < 407d298 < ddi_soft_state_free(cc_state,instance); 419c310 < /* register dev_t dev = (dev_t) arg; */ --- > register dev_t dev = (dev_t) arg; 421,422c312 < /* register struct cc_device *cc = &ccdevice[0]; */ < register struct cc_device *cc; --- > register struct cc_device *cc = &ccdevice[0]; 426,430c316,317 < instance = getminor((dev_t)arg); < if((cc = ddi_get_soft_state(cc_state,instance)) != NULL){ < *result = (void *)cc->dip; < error = DDI_SUCCESS; < } --- > *result = (void *) cc->dip; > error = DDI_SUCCESS; 433,434c320 < /* instance = 0; */ < instance = getminor((dev_t)arg); --- > instance = 0; 439d324 < *result = NULL; 533d417 < /* 541,542c425 < */ < /* static int cc_sys_status; temporally system status storage */ --- > static int cc_sys_status; /* temporally system status storage */ 561,562c444 < /* register struct cc_device *cc = &ccdevice[0]; */ < register struct cc_device *cc; --- > register struct cc_device *cc = &ccdevice[0]; 565c447 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 568,570d449 < unit = getminor(*devp); < cc = ddi_get_soft_state(cc_state,unit); < 586c465 < cc->k->csr = CC_RST; /* K2917 Reset */ --- > k->csr = CC_RST; /* K2917 Reset */ 608,610c487 < /* register struct cc_device *cc = &ccdevice[0]; */ < register struct cc_device *cc; < minor_t unit; --- > register struct cc_device *cc = &ccdevice[0]; 612,614d488 < unit = getminor(dev); < < cc = ddi_get_soft_state(cc_state,unit); 630,631c504 < /* register struct cc_device *cc = &ccdevice[0]; */ < register struct cc_device *cc; --- > register struct cc_device *cc = &ccdevice[0]; 639d511 < minor_t unit; 641,643d512 < unit = getminor(dev); < cc = ddi_get_soft_state(cc_state,unit); < 650c519 < cc->ptr_kdata = cc->data_area; --- > cc->ptr_kdata = data_area; 657c526 < copyin((caddr_t)iov->iov_base, (caddr_t)&cc->message, sizeof(cc->message)); --- > copyin((caddr_t)iov->iov_base, (caddr_t)&message, sizeof(message)); 660,662c529,531 < cc->cc_sys_status = 0; < cc->mode = mode = cc->message.mode; < cc->naf = naf = cc->message.naf; --- > cc_sys_status = 0; > cc->mode = mode = message.mode; > cc->naf = naf = message.naf; 672,674c541 < /* E.Inoue: from < cmn_err(CE_NOTE," cc_write: debug step1. --- naf = 0x%x", naf); < E.Inoue: end */ --- > switch (message.command) { 676,677d542 < switch (cc->message.command) { < 684c549 < camac_s(unit, mode, naf, cc->data_area); --- > camac_s(cc, mode, naf, data_area); 686c551 < copyout((caddr_t)cc->data_area, (caddr_t)cc->message.ptr_data, --- > copyout((caddr_t)data_area, (caddr_t)message.ptr_data, 689c554 < copyout((caddr_t)cc->data_area, (caddr_t)cc->message.ptr_data, --- > copyout((caddr_t)data_area, (caddr_t)message.ptr_data, 694c559 < copyin((caddr_t)cc->message.ptr_data, (caddr_t)cc->data_area, --- > copyin((caddr_t)message.ptr_data, (caddr_t)data_area, 697c562 < copyin((caddr_t)cc->message.ptr_data, (caddr_t)cc->data_area, --- > copyin((caddr_t)message.ptr_data, (caddr_t)data_area, 699c564 < camac_s(unit, mode, naf, cc->data_area); --- > camac_s(cc, mode, naf, data_area); 702c567 < camac_s(unit, mode, naf, cc->data_area); --- > camac_s(cc, mode, naf, data_area); 706c571 < (caddr_t)cc->message.ptr_qx, 2); --- > (caddr_t)message.ptr_qx, 2); 727c592 < camac_b(unit, mode, naf, len, &retlen); --- > camac_b(cc, mode, naf, len, &retlen); 730c595 < camac_b(unit, mode, naf, len, &retlen); --- > camac_b(cc, mode, naf, len, &retlen); 733c598 < camac_b(unit, mode, naf, len, &retlen); --- > camac_b(cc, mode, naf, len, &retlen); 736,740c601,605 < cc->iosb.status = cc->status; < cc->iosb.ret_length = retlen; < cc->iosb.s_reg = cc->s_reg; < cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); < copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, --- > iosb.status = cc->status; > iosb.ret_length = retlen; > iosb.s_reg = cc->s_reg; > iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); > copyout((caddr_t)&iosb, (caddr_t)message.ptr_iosb, 755c620 < copyin((caddr_t)cc->ptr_list, (caddr_t)cc->list_area, --- > copyin((caddr_t)cc->ptr_list, (caddr_t)list_area, 757c622 < if (cc->message.command == CC_CMD_LOADLIST) --- > if (message.command == CC_CMD_LOADLIST) 764c629 < copyin((caddr_t)cc->message.ptr_iosb, (caddr_t)&cc->iosb, --- > copyin((caddr_t)message.ptr_iosb, (caddr_t)&iosb, 769,770c634,635 < cc->ptr_list = cc->list_area; /* initialize list pointer */ < cc->s_reg = cc->iosb.s_reg; --- > cc->ptr_list = list_area; /* initialize list pointer */ > cc->s_reg = iosb.s_reg; 774c639 < cc->cc_sys_status == CC_STA_OK && --- > cc_sys_status == CC_STA_OK && 776c641 < cc->ptr_list <= (cc->list_area + cc->len_list)) { --- > cc->ptr_list <= (list_area + cc->len_list)) { 785,789c650,654 < cc->iosb.status = cc->status; < cc->iosb.ret_length = cc->len_udata; < cc->iosb.s_reg = cc->s_reg; < cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); < copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, --- > iosb.status = cc->status; > iosb.ret_length = cc->len_udata; > iosb.s_reg = cc->s_reg; > iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); > copyout((caddr_t)&iosb, (caddr_t)message.ptr_iosb, 798c663 < copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klname)); --- > copyin((caddr_t)message.klname, (caddr_t)klname, sizeof(klname)); 804c669 < copyin((caddr_t)cc->ptr_list, (caddr_t)cc->list_area, --- > copyin((caddr_t)cc->ptr_list, (caddr_t)list_area, 811c676 < copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klname)); --- > copyin((caddr_t)message.klname, (caddr_t)klname, sizeof(klname)); 817,818c682,683 < copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klname)); < copyin((caddr_t)cc->message.ptr_iosb, (caddr_t)&cc->iosb, --- > copyin((caddr_t)message.klname, (caddr_t)klname, sizeof(klname)); > copyin((caddr_t)message.ptr_iosb, (caddr_t)&iosb, 827,831c692,696 < cc->iosb.status = cc->status; < cc->iosb.ret_length = cc->retlen; < cc->iosb.s_reg = cc->s_reg; < cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); < copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, --- > iosb.status = cc->status; > iosb.ret_length = cc->retlen; > iosb.s_reg = cc->s_reg; > iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); > copyout((caddr_t)&iosb, (caddr_t)message.ptr_iosb, 837,839c702,704 < klsave(cc, cc->data_area); < copyout((caddr_t)cc->data_area,(caddr_t)cc->message.ptr_iosb, < (cc->list_area[0] + 1) * 2); --- > klsave(cc, data_area); > copyout((caddr_t)data_area,(caddr_t)message.ptr_iosb, > (list_area[0] + 1) * 2); 843,845c708,710 < copyin((caddr_t)(u_short *)cc->message.ptr_iosb, (caddr_t)cc->data_area, 2); < copyin((caddr_t)((u_short *)cc->message.ptr_iosb + 1), < (caddr_t)&cc->data_area[1], cc->data_area[0] * 2); --- > copyin((caddr_t)(u_short *)message.ptr_iosb, (caddr_t)data_area, 2); > copyin((caddr_t)((u_short *)message.ptr_iosb + 1), > (caddr_t)&data_area[1], data_area[0] * 2); 847c712 < klload(cc, cc->data_area); --- > klload(cc, data_area); 862c727 < return cc->cc_sys_status; --- > return cc_sys_status; 869,873c734 < /* By E.Inoue */ < /* void cc_timeout(int unit) */ < /* cc_timeout(int unit) */ < static void < cc_timeout(caddr_t unit) --- > void cc_timeout() 875,876c736 < /* register struct cc_device *cc = &ccdevice[0]; */ < register struct cc_device *cc; --- > register struct cc_device *cc = &ccdevice[0]; 878,880d737 < /* cc = ddi_get_soft_state(cc_state,unit); */ < cc = ddi_get_soft_state(cc_state,(int)*unit); < 885,886d741 < /* chenge logichouse */ < /* 888,891d742 < */ < ddi_dma_unbind_handle(cc->handle); < /* end */ < cc->cc_sys_status = cc->bp->b_error; 910c761 < cc_intr(int unit) --- > cc_intr() 912,914c763,764 < /* register struct cc_device *cc = &ccdevice[0]; */ < register struct cc_device *cc; < /* register struct K_REG *k = cc->k; */ --- > register struct cc_device *cc = &ccdevice[0]; > register struct K_REG *k = cc->k; 916,917d765 < cc = ddi_get_soft_state(cc_state,unit); < 920,923d767 < /* E.Inoue: from < cmn_err(CE_NOTE," cc_intr: debug step06. --- enter cc_intr()"); < E.Inoue: end */ < 925c769 < if ((cc->k->csr & CC_LAM) != 0) --- > if ((k->csr & CC_LAM) != 0) 927c771 < if ((cc->k->csr & CC_DONE) != 0) --- > if ((k->csr & CC_DONE) != 0) 929c773 < if ((cc->k->empc & CC_INT_ENABLE) == 0) --- > if ((k->empc & CC_INT_ENABLE) == 0) 931c775 < if ((cc->k->aboc & CC_INT_ENABLE) == 0) --- > if ((k->aboc & CC_INT_ENABLE) == 0) 934,937d777 < /* E.Inoue: from < cmn_err(CE_NOTE," cc_intr: debug step06a. --- cc->interrupt=0x%x", cc->interrupt); < E.Inoue: end */ < 940,947d779 < < /* E.Inoue: from < cmn_err(CE_NOTE," cc_intr: debug step06b. --- cc->executing_dma_flag != 0"); < E.Inoue: end */ < < < /* change logichouse */ < /* 949,952d780 < */ < ddi_dma_unbind_handle(cc->handle); < /* end */ < cc->cc_sys_status = cc->bp->b_error; 960,962d787 < /* E.Inoue: from < cmn_err(CE_NOTE," cc_intr: debug step06c. --- reject interrupt: return cc_intr()"); < E.Inoue: end */ 970,972d794 < /* E.Inoue: from < cmn_err(CE_NOTE," cc_intr: debug step06d. --- accept interrupt: return cc_intr()"); < E.Inoue: end */ 984,986c806,807 < /* register struct cc_device *cc = &ccdevice[0]; */ < register struct cc_device *cc; < /* register struct K_REG *k = cc->k; */ --- > register struct cc_device *cc = &ccdevice[0]; > register struct K_REG *k = cc->k; 988,992c809 < /* int idat, *data = (int *)arg; */ < /* E.Inoue < int idat, data; < end */ < int idat; --- > int idat, *data = (int *)arg; 994d810 < minor_t unit; 996,1004d811 < unit = getminor(dev); < cc = ddi_get_soft_state(cc_state,unit); < < /* E.Inoue < copyin((caddr_t)arg,(caddr_t)&data,sizeof(data)); < copyin((caddr_t)arg,(caddr_t)&cc->data1,sizeof(cc->data1)); < */ < ddi_copyin((caddr_t)arg,(caddr_t)&cc->data1,sizeof(cc->data1),flag); < 1007,1011c814,815 < /* E.Inoue < data = cc->max_branch; < */ < cc->data1 = cc->max_branch; < break; --- > *(int *)data = cc->max_branch; > break; 1013,1019c817,819 < /* E.inoue < if (data >= 0 && data < cc->max_branch) < cc->cur_branch = data; < */ < if (cc->data1 >= 0 && cc->data1 < cc->max_branch) < cc->cur_branch = cc->data1; < break; --- > if (*(int *)data >= 0 && *(int *)data < cc->max_branch) > cc->cur_branch = *(int *)data; > break; 1021,1027c821,823 < /* E.Inoue < if (data >= 0 && data < MAX_CRATE) < cc->cur_crate = data; < */ < if (cc->data1 >= 0 && cc->data1 < MAX_CRATE) < cc->cur_crate = cc->data1; < break; --- > if (*(int *)data >= 0 && *(int *)data < MAX_CRATE) > cc->cur_crate = *(int *)data; > break; 1029,1031c825,826 < mutex_enter(&cc->mutex); /* start MUTEX */ < cc->interrupt = 0; < cc->k->lamc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; --- > cc->interrupt = 0; > k->lamc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; 1033,1040c828,833 < /* lock out clock */ < /* by E.Inoue < s = spl5(); < */ < if (cc->interrupt & CC_INT_LAM) { < cc->interrupt &= ~CC_INT_LAM; < return 0; < } --- > /* lock out clock */ > s = spl5(); > if (cc->interrupt & CC_INT_LAM) { > cc->interrupt &= ~CC_INT_LAM; > return 0; > } 1042,1047c835,836 < /* mutex_enter(&cc->mutex); */ /* start MUTEX */ < /* E.Inoue < cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, data * hz); < */ < cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, cc->data1 * hz); < /* mutex_enter(&cc->mutex); */ /* start MUTEX */ --- > mutex_enter(&cc->mutex); /* start MUTEX */ > cc->timeout_id = timeout(cc_timeout, NULL, *(int *)data * hz); 1049c838 < /* wait interrupt */ --- > /* wait interrupt */ 1051,1053c840,842 < cv_timedwait(&cc->cv, &cc->mutex, timeout); < if (cc->interrupt == 0) < cc->interrupt |= CC_INT_TIMEOUT; --- > cv_timedwait(&cc->cv, &cc->mutex, timeout); > if (cc->interrupt == 0) > cc->interrupt |= CC_INT_TIMEOUT; 1055,1060c844,849 < if (cv_wait_sig(&cc->cv, &cc->mutex) == 0) { < untimeout(cc->timeout_id); < mutex_exit(&cc->mutex); /* end MUTEX */ < return EINTR; < } < mutex_exit(&cc->mutex); /* end MUTEX */ --- > if (cv_wait_sig(&cc->cv, &cc->mutex) == 0) { > untimeout(cc->timeout_id); > mutex_exit(&cc->mutex); /* end MUTEX */ > return EINTR; > } > mutex_exit(&cc->mutex); /* end MUTEX */ 1062,1064c851 < /* by E.Inoue < splx(s); < */ --- > splx(s); 1066,1072c853,859 < if( cc->interrupt & CC_INT_LAM ) { < cc->interrupt &= ~CC_INT_LAM; < } else if( cc->interrupt & CC_INT_TIMEOUT ) { < cc->interrupt &= ~CC_INT_TIMEOUT; < return CC_STA_SINGLE_TIMEOUT; /* set value to "errno" */ < } < break; --- > if( cc->interrupt & CC_INT_LAM ) { > cc->interrupt &= ~CC_INT_LAM; > } else if( cc->interrupt & CC_INT_TIMEOUT ) { > cc->interrupt &= ~CC_INT_TIMEOUT; > return CC_STA_SINGLE_TIMEOUT; /* set value to "errno" */ > } > break; 1075,1076c862,866 < mutex_enter(&cc->mutex); /* start MUTEX */ < ddi_copyin((caddr_t)arg,(caddr_t)&cc->data1,sizeof(cc->data1),flag); --- > camac_s(cc, CC_BIT24, NAF(30, 13, 17), (u_short *)data); > camac_s(cc, CC_BIT16, NAF(30, 0, 1), &sdat); > sdat |= 0x100; > camac_s(cc, CC_BIT16, NAF(30, 0, 17), &sdat); > break; 1078,1101d867 < /* E.Inoue: from < cmn_err(CE_NOTE," cc_ioctl: debug step01. --- enter case CCIOC_ENABLE_LAM"); < cmn_err(CE_NOTE," cc_ioctl: debug step01. --- &cc->data1 = 0x%x", &cc->data1); < cmn_err(CE_NOTE," cc_ioctl: debug step01. --- (u_short *)cc->data1 = 0x%x", (u_short *)cc->data1); < E.Inoue: end */ < /* E.Inoue < camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)data); < */ < camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)&cc->data1); < /* E.Inoue: from < cmn_err(CE_NOTE," cc_ioctl: debug step01. --- call camac_s(...NAF(30,13,17) ok."); < E.Inoue: end */ < camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); < /* E.Inoue: from < cmn_err(CE_NOTE," cc_ioctl: debug step02. --- call camac_s(...NAF(30,0,1) ok."); < E.Inoue: end */ < sdat |= 0x100; < camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); < /* E.Inoue: from < cmn_err(CE_NOTE," cc_ioctl: debug step03. --- call camac_s(...NAF(30,0,17) ok."); < E.Inoue: end */ < mutex_exit(&cc->mutex); /* end MUTEX */ < break; < 1103,1109c869,875 < cc->k->lamc = CC_INT_AUTO_CLEAR | intrpri; < idat = 0; < camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)&idat); < camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); < sdat &= ~0x100; < camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); < break; --- > k->lamc = CC_INT_AUTO_CLEAR | intrpri; > idat = 0; > camac_s(cc, CC_BIT24, NAF(30, 13, 17), (u_short *)&idat); > camac_s(cc, CC_BIT16, NAF(30, 0, 1), &sdat); > sdat &= ~0x100; > camac_s(cc, CC_BIT16, NAF(30, 0, 17), &sdat); > break; 1114,1130c880,896 < data[2] = k->sccr; < data[3] = k->mtc; < data[4] = k->machi; < data[5] = k->maclo; < data[6] = k->lamc; < data[7] = k->donc; < data[8] = k->empc; < data[9] = k->aboc; < data[10] = k->lamv; < data[11] = k->donv; < data[12] = k->empv; < data[13] = k->abov; < data[14] = k->amr; < data[15] = k->cma; < data[16] = k->cwc; < data[17] = k->srr; < data[18] = k->csr; --- > data[2] = k->sccr; > data[3] = k->mtc; > data[4] = k->machi; > data[5] = k->maclo; > data[6] = k->lamc; > data[7] = k->donc; > data[8] = k->empc; > data[9] = k->aboc; > data[10] = k->lamv; > data[11] = k->donv; > data[12] = k->empv; > data[13] = k->abov; > data[14] = k->amr; > data[15] = k->cma; > data[16] = k->cwc; > data[17] = k->srr; > data[18] = k->csr; 1132c898 < break; --- > break; 1134c900 < cc->k->csr = CC_RST; --- > k->csr = CC_RST; 1137,1144c903,910 < cc->k->lamc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); < cc->k->donc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); < cc->k->empc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); < cc->k->aboc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); < cc->k->lamv = (u_short)intrvec; < cc->k->donv = (u_short)intrvec; < cc->k->empv = (u_short)intrvec; < cc->k->abov = (u_short)intrvec; --- > cc->k->lamc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); > cc->k->donc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); > cc->k->empc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); > cc->k->aboc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); > cc->k->lamv = (u_short)intrvec; > cc->k->donv = (u_short)intrvec; > cc->k->empv = (u_short)intrvec; > cc->k->abov = (u_short)intrvec; 1146c912 < break; --- > break; 1151,1167c917,933 < data[2] = k->sccr; < data[3] = k->mtc; < data[4] = k->machi; < data[5] = k->maclo; < data[6] = k->lamc; < data[7] = k->donc; < data[8] = k->empc; < data[9] = k->aboc; < data[10] = k->lamv; < data[11] = k->donv; < data[12] = k->empv; < data[13] = k->abov; < data[14] = k->amr; < data[15] = k->cma; < data[16] = k->cwc; < data[17] = k->srr; < data[18] = k->csr; --- > data[2] = k->sccr; > data[3] = k->mtc; > data[4] = k->machi; > data[5] = k->maclo; > data[6] = k->lamc; > data[7] = k->donc; > data[8] = k->empc; > data[9] = k->aboc; > data[10] = k->lamv; > data[11] = k->donv; > data[12] = k->empv; > data[13] = k->abov; > data[14] = k->amr; > data[15] = k->cma; > data[16] = k->cwc; > data[17] = k->srr; > data[18] = k->csr; 1169,1170c935,936 < /* k->csr = CC_RST; */ < break; --- > /* k->csr = CC_RST; */ > break; 1173,1175c939,941 < cc->ptr_dir = 0; < cc->ptr_cma = CC_KLIST_CMAINIT; < break; --- > ptr_dir = 0; > ptr_cma = CC_KLIST_CMAINIT; > break; 1179c945 < break; --- > break; 1185,1186d950 < < 1222c986 < cc->cc_sys_status = copyout((caddr_t)cc->data_area, (caddr_t)cc->ptr_udata, --- > cc_sys_status = copyout((caddr_t)data_area, (caddr_t)cc->ptr_udata, 1227c991 < cc->ptr_kdata = cc->data_area; --- > cc->ptr_kdata = data_area; 1260c1024 < if (status = camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], cc->ptr_kdata)) --- > if (status = camac_s(cc, CC_BIT16, cc->ptr_list[1], cc->ptr_kdata)) 1278c1042 < if (status = camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], cc->ptr_kdata)) --- > if (status = camac_s(cc, CC_BIT24, cc->ptr_list[1], cc->ptr_kdata)) 1293c1057 < return camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], ((u_short *)&cc->a_reg + 1)); --- > return camac_s(cc, CC_BIT16, cc->ptr_list[1], ((u_short *)&cc->a_reg + 1)); 1300c1064 < return camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], (u_short *)&cc->a_reg); --- > return camac_s(cc, CC_BIT24, cc->ptr_list[1], (u_short *)&cc->a_reg); 1307c1071 < return camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], &cc->ptr_list[2]); --- > return camac_s(cc, CC_BIT16, cc->ptr_list[1], &cc->ptr_list[2]); 1317c1081 < return camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], (u_short *)&dat); --- > return camac_s(cc, CC_BIT24, cc->ptr_list[1], (u_short *)&dat); 1324c1088 < return camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], ((u_short *)&cc->a_reg + 1)); --- > return camac_s(cc, CC_BIT16, cc->ptr_list[1], ((u_short *)&cc->a_reg + 1)); 1331c1095 < return camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], (u_short *)&cc->a_reg); --- > return camac_s(cc, CC_BIT24, cc->ptr_list[1], (u_short *)&cc->a_reg); 1340c1104 < return camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], &dummy); --- > return camac_s(cc, CC_BIT16, cc->ptr_list[1], &dummy); 1368c1132 < if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) --- > if (status = camac_s(cc, CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) 1371c1135 < return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); --- > return camac_s(cc, CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); 1379d1142 < 1382c1145 < if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) --- > if (status = camac_s(cc, CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) 1385c1148 < return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); --- > return camac_s(cc, CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); 1395c1158 < if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) --- > if (status = camac_s(cc, CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) 1398c1161 < return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); --- > return camac_s(cc, CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); 1408c1171 < if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) --- > if (status = camac_s(cc, CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) 1411c1174 < return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); --- > return camac_s(cc, CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); 1426c1189 < if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 13, 17), (u_short *)&dat)) --- > if (status = camac_s(cc, CC_BIT24, NAF(30, 13, 17), (u_short *)&dat)) 1428c1191 < if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) --- > if (status = camac_s(cc, CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) 1431c1194 < return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); --- > return camac_s(cc, CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); 1445c1208 < if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 13, 17), (u_short *)&dat)) --- > if (status = camac_s(cc, CC_BIT24, NAF(30, 13, 17), (u_short *)&dat)) 1447c1210 < if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) --- > if (status = camac_s(cc, CC_BIT24, NAF(30, 0, 1), (u_short *)&dat)) 1450c1213 < return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); --- > return camac_s(cc, CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); 1462c1225 < status = camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], (u_short *)&dat); --- > status = camac_s(cc, CC_BIT24, cc->ptr_list[1], (u_short *)&dat); 1483c1246 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1500c1263 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1517c1280 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1534c1297 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1551c1314 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1568c1331 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1585c1348 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1602c1365 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1619c1382 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1636c1399 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1653c1416 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1670c1433 < return camac_b(getminor(cc->dev), mode, naf, len, &retlen); --- > return camac_b(cc, mode, naf, len, &retlen); 1675,1676c1438 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1682,1683c1444 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1689,1690c1450 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1696,1697c1456 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1703,1704c1462 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1710,1711c1468 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1752c1509 < register int status; --- > register int status; 1790c1547 < cc->cc_sys_status = copyout((caddr_t)((u_short *)&cc->a_reg + 1), --- > cc_sys_status = copyout((caddr_t)((u_short *)&cc->a_reg + 1), 1799c1556 < cc->cc_sys_status = copyin((caddr_t)&ptr_prev_head[cc->ptr_list[1]-1], --- > cc_sys_status = copyin((caddr_t)&ptr_prev_head[cc->ptr_list[1]-1], 1807c1564 < cc->cc_sys_status = copyout((caddr_t)&cc->ptr_list[2], --- > cc_sys_status = copyout((caddr_t)&cc->ptr_list[2], 1835c1592 < return klexe(cc, cc->klist1[0].name); --- > return klexe(cc, klist[0].name); 1887,1888c1644 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1894,1895c1650 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1915,1916c1670 < struct cc_device *cc; < { --- > struct cc_device *cc; { 1922,1923c1676 < struct cc_device *cc; < { --- > struct cc_device *cc; { 2152c1905 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2161c1914 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2171c1924 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2181c1934 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2191c1944 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2201c1954 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2211c1964 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2221c1974 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2231c1984 < cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; --- > cc->ptr_list = list_area + cc->ptr_list[1] - 1; 2252c2005 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2258,2259c2011,2012 < for (i = 0; i < cc->ptr_dir; i++) < if (strcmp(name, cc->klist1[i].name) == 0) --- > for (i = 0; i < ptr_dir; i++) > if (strcmp(name, klist[i].name) == 0) 2262c2015 < if (cc->ptr_dir >= CC_KLIST_MAX_DIR) --- > if (ptr_dir >= CC_KLIST_MAX_DIR) 2266,2268c2019,2021 < cc->k->cma = cc->ptr_cma; < cc->klist1[cc->ptr_dir].cma = cc->ptr_cma; < cc->klist1[cc->ptr_dir].wc = 0; --- > k->cma = ptr_cma; > klist[ptr_dir].cma = ptr_cma; > klist[ptr_dir].wc = 0; 2270c2023 < cc->ptr_list = cc->list_area; --- > cc->ptr_list = list_area; 2272c2025 < if (cc->ptr_cma >= 0xFFFF - 4) --- > if (ptr_cma >= 0xFFFF - 4) 2280,2281c2033,2034 < strcpy(cc->klist1[cc->ptr_dir].name, name); < cc->ptr_dir++; --- > strcpy(klist[ptr_dir].name, name); > ptr_dir++; 2290d2042 < struct cc_device *cc; 2294,2296c2046,2048 < for (i = 0; i < cc->ptr_dir; i++) < if (strcmp(name, cc->klist1[i].name) == 0) { < cc->klist1[i].name[0] = '\0'; --- > for (i = 0; i < ptr_dir; i++) > if (strcmp(name, klist[i].name) == 0) { > klist[i].name[0] = '\0'; 2316,2317c2068,2069 < for (i = 0; i < cc->ptr_dir; i++) < if (strcmp(name, cc->klist1[i].name) == 0) --- > for (i = 0; i < ptr_dir; i++) > if (strcmp(name, klist[i].name) == 0) 2319c2071 < if (i >= cc->ptr_dir) --- > if (i >= ptr_dir) 2322,2323c2074,2075 < cc->now_cma = cc->klist1[i].cma; < cc->now_wc = cc->klist1[i].wc; --- > now_cma = klist[i].cma; > now_wc = klist[i].wc; 2327c2079 < uio->uio_iov->iov_len = cc->klist1[i].wc * 2; --- > uio->uio_iov->iov_len = klist[i].wc * 2; 2344c2096 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2348,2349c2100,2101 < for (i = 0; i < cc->ptr_dir; i++) < if (cc->klist1[i].name[0] != '\0') { --- > for (i = 0; i < ptr_dir; i++) > if (klist[i].name[0] != '\0') { 2353,2354c2105,2106 < while (cc->klist1[i].name[j] != '\0') < data[ptr++] = cc->klist1[i].name[j++]; --- > while (klist[i].name[j] != '\0') > data[ptr++] = klist[i].name[j++]; 2358c2110 < data[ptr++] = cc->klist1[i].wc; --- > data[ptr++] = klist[i].wc; 2361,2362c2113,2114 < cc->k->cma = cc->klist1[i].cma; < while ((save = cc->k->cmr) != CC_HALT) --- > k->cma = klist[i].cma; > while ((save = k->cmr) != CC_HALT) 2377c2129 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2384,2385c2136,2137 < cc->klist1[cc->ptr_dir].name[j++] = data[ptr++]; < cc->klist1[cc->ptr_dir].name[j] = data[ptr++]; --- > klist[ptr_dir].name[j++] = data[ptr++]; > klist[ptr_dir].name[j] = data[ptr++]; 2388c2140 < cc->klist1[cc->ptr_dir].wc = data[ptr++]; --- > klist[ptr_dir].wc = data[ptr++]; 2391,2392c2143,2144 < cc->k->cma = cc->ptr_cma; < cc->klist1[cc->ptr_dir].cma = cc->ptr_cma; --- > k->cma = ptr_cma; > klist[ptr_dir].cma = ptr_cma; 2394,2395c2146,2147 < cc->k->cmr = data[ptr++]; < cc->ptr_cma++; --- > k->cmr = data[ptr++]; > ptr_cma++; 2397,2398c2149,2150 < cc->k->cmr = data[ptr++]; < cc->ptr_cma++; --- > k->cmr = data[ptr++]; > ptr_cma++; 2400c2152 < cc->ptr_dir++; --- > ptr_dir++; 2415c2167 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2417c2169 < cc->k->cmr = CC_HALT; --- > k->cmr = CC_HALT; 2424c2176 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2426,2429c2178,2181 < cc->k->cmr = CC_AD | CC_BIT16 | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->klist1[cc->ptr_dir].wc += 1; < cc->ptr_cma += 2; --- > k->cmr = CC_AD | CC_BIT16 | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > klist[ptr_dir].wc += 1; > ptr_cma += 2; 2436c2188 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2438,2441c2190,2193 < cc->k->cmr = CC_AD | CC_BIT24 | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->klist1[cc->ptr_dir].wc += 2; < cc->ptr_cma += 2; --- > k->cmr = CC_AD | CC_BIT24 | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > klist[ptr_dir].wc += 2; > ptr_cma += 2; 2448c2200 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2450,2454c2202,2206 < cc->k->cmr = CC_AD | CC_INLINE | CC_BIT16 | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->k->cmr = cc->ptr_list[2]; < cc->k->cmr = 0; < cc->ptr_cma += 4; --- > k->cmr = CC_AD | CC_INLINE | CC_BIT16 | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > k->cmr = cc->ptr_list[2]; > k->cmr = 0; > ptr_cma += 4; 2461c2213 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2463,2467c2215,2219 < cc->k->cmr = CC_AD | CC_INLINE | CC_BIT24 | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->k->cmr = cc->ptr_list[2]; < cc->k->cmr = cc->ptr_list[3]; < cc->ptr_cma += 4; --- > k->cmr = CC_AD | CC_INLINE | CC_BIT24 | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > k->cmr = cc->ptr_list[2]; > k->cmr = cc->ptr_list[3]; > ptr_cma += 4; 2474c2226 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2476,2478c2228,2230 < cc->k->cmr = CC_AD | CC_BIT16 | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->ptr_cma += 2; --- > k->cmr = CC_AD | CC_BIT16 | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > ptr_cma += 2; 2485c2237 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2487,2492c2239,2244 < cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QSTOP | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->k->cmr = - cc->ptr_list[2]; < cc->k->cmr = 0xFFFF; < cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; < cc->ptr_cma += 4; --- > k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QSTOP | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > k->cmr = - cc->ptr_list[2]; > k->cmr = 0xFFFF; > klist[ptr_dir].wc += cc->ptr_list[2]; > ptr_cma += 4; 2499c2251 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2501,2506c2253,2258 < cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QSTOP | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->k->cmr = - cc->ptr_list[2] * 2; < cc->k->cmr = 0xFFFF; < cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; < cc->ptr_cma += 4; --- > k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QSTOP | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > k->cmr = - cc->ptr_list[2] * 2; > k->cmr = 0xFFFF; > klist[ptr_dir].wc += cc->ptr_list[2] * 2; > ptr_cma += 4; 2513c2265 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2515,2520c2267,2272 < cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QSCAN | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->k->cmr = - cc->ptr_list[2]; < cc->k->cmr = 0xFFFF; < cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; < cc->ptr_cma += 4; --- > k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QSCAN | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > k->cmr = - cc->ptr_list[2]; > k->cmr = 0xFFFF; > klist[ptr_dir].wc += cc->ptr_list[2]; > ptr_cma += 4; 2527c2279 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2529,2534c2281,2286 < cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QSCAN | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->k->cmr = - cc->ptr_list[2] * 2; < cc->k->cmr = 0xFFFF; < cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; < cc->ptr_cma += 4; --- > k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QSCAN | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > k->cmr = - cc->ptr_list[2] * 2; > k->cmr = 0xFFFF; > klist[ptr_dir].wc += cc->ptr_list[2] * 2; > ptr_cma += 4; 2541c2293 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2543,2548c2295,2300 < cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QIGNO | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->k->cmr = - cc->ptr_list[2]; < cc->k->cmr = 0xFFFF; < cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; < cc->ptr_cma += 4; --- > k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QIGNO | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > k->cmr = - cc->ptr_list[2]; > k->cmr = 0xFFFF; > klist[ptr_dir].wc += cc->ptr_list[2]; > ptr_cma += 4; 2555c2307 < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2557,2562c2309,2314 < cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QIGNO | (cc->cur_crate << 8); < cc->k->cmr = cc->ptr_list[1]; < cc->k->cmr = - cc->ptr_list[2] * 2; < cc->k->cmr = 0xFFFF; < cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; < cc->ptr_cma += 4; --- > k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QIGNO | (cc->cur_crate << 8); > k->cmr = cc->ptr_list[1]; > k->cmr = - cc->ptr_list[2] * 2; > k->cmr = 0xFFFF; > klist[ptr_dir].wc += cc->ptr_list[2] * 2; > ptr_cma += 4; 2576c2328 < camac_s(int unit, u_short mode, u_short naf, u_short *dat) --- > camac_s(struct cc_device *cc, u_short mode, u_short naf, u_short *dat) 2578,2579c2330 < register struct cc_device *cc; < /* register struct K_REG *k = cc->k; */ --- > register struct K_REG *k = cc->k; 2582,2587d2332 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step01. --- enter camac_s()"); < E.Inoue: end */ < < cc = ddi_get_soft_state(cc_state,unit); < 2593,2598c2338,2342 < /* E.Inoue */ < cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; < /* end */ --- > k->cma = CC_CMA_INIT; /* Initialize memory pointer */ > k->cmr = mode | (cc->cur_crate << 8); /* Write command list */ > k->cmr = naf; > k->cmr = CC_HALT; > k->cma = CC_CMA_INIT; /* Reset memory pointer */ 2600,2605d2343 < cc->k->cma = CC_CMA_INIT; /* Initialize memory pointer */ < cc->k->cmr = mode | (cc->cur_crate << 8); /* Write command list */ < cc->k->cmr = naf; < cc->k->cmr = CC_HALT; < cc->k->cma = CC_CMA_INIT; /* Reset memory pointer */ < 2609,2621c2347,2349 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step02. --- camac read"); < E.Inoue: end */ < /* E.Inoue < cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; < end */ < < cc->k->csr &= ~CC_WRITE; < cc->k->csr |= CC_GO; /* Go! */ < while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) --- > k->csr &= ~CC_WRITE; > k->csr |= CC_GO; /* Go! */ > while ((k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) 2623c2351 < if ((cc->k->csr & CC_RDY) != 0) { --- > if ((k->csr & CC_RDY) != 0) { 2625,2626c2353,2354 < *dat = cc->k->dhr & 0x00FF; < *(dat + 1) = cc->k->dlr; --- > *dat = k->dhr & 0x00FF; > *(dat + 1) = k->dlr; 2629c2357 < *dat = cc->k->dlr; --- > *dat = k->dlr; 2634,2653c2362,2364 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step02. --- camac write"); < E.Inoue: end */ < < /* E.Inoue < cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; < cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; < end */ < < cc->k->csr |= CC_WRITE; < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step03. --- camac write, cc->k->csr |= CC_WRITE; ok."); < E.Inoue: end */ < cc->k->csr |= CC_GO; /* Go! */ < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step04. --- camac write, cc->k->csr |= CC_GO; ok."); < E.Inoue: end */ < while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) --- > k->csr |= CC_WRITE; > k->csr |= CC_GO; /* Go! */ > while ((k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) 2655c2366 < if ((cc->k->csr & CC_RDY) != 0) { --- > if ((k->csr & CC_RDY) != 0) { 2657,2668c2368,2369 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step05. --- camac write, enter (mode & CC_BIT16) == 0) ok."); < cmn_err(CE_NOTE," camac_s: debug step05. --- dat = 0x%x", dat); < E.Inoue: end */ < cc->k->dhr = *dat; < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step06. --- camac write, cc->k->dhr = *dat; ok."); < E.Inoue: end */ < cc->k->dlr = *(dat + 1); < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step07. --- camac write, cc->k->dhr = *(dat + 1); ok."); < E.Inoue: end */ --- > k->dhr = *dat; > k->dlr = *(dat + 1); 2670,2678c2371,2372 < else { < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step08. --- camac write, enter (mode & CC_BIT16) != 0) ok."); < E.Inoue: end */ < cc->k->dlr = *dat; < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step09. --- camac write, cc->k->dlr = *dat; ok."); < E.Inoue: end */ < } --- > else > k->dlr = *dat; 2683,2686c2377 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step09. --- camac write, enter default "); < E.Inoue: end */ < cc->k->csr |= CC_GO; /* Go! */ --- > k->csr |= CC_GO; /* Go! */ 2690,2693c2381 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_s: debug step10. --- finish camac write"); < E.Inoue: end */ < while ((cc->k->csr & (CC_DONE | CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) --- > while ((k->csr & (CC_DONE | CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) 2696c2384 < cc->camac_qx = cc->k->csr; --- > cc->camac_qx = k->csr; 2722,2725d2409 < /* E.Inoue: begin */ < minphys(bp); < /* E.Inoue: end */ < 2729d2412 < /* change logichouse */ 2731d2413 < /* 2740,2741d2421 < */ < /* end */ 2745,2747c2425,2426 < /* register struct cc_device *cc = &ccdevice[0]; */ < register struct cc_device *cc; < /* register struct K_REG *k = cc->k; */ --- > register struct cc_device *cc = &ccdevice[0]; > register struct K_REG *k = cc->k; 2749d2427 < /* 2753,2756d2430 < */ < register mode; < register naf; < register int wc; 2758d2431 < minor_t unit; 2760d2432 < cc = ddi_get_soft_state(cc_state, getminor(bp->b_edev)); 2762,2769d2433 < mode = cc->mode; < naf = cc->naf; < wc = (mode & CC_BIT16) ? cc->len : cc->len * 2; < < /* E.Inoue: from < cmn_err(CE_NOTE," cc_strategy: debug step03. --- enter cc_strategy()"); < E.Inoue: end */ < 2772,2783c2436,2444 < case 0x0000: /* CAMAC read */ < /* E.Inoue: from < cmn_err(CE_NOTE," cc_strategy: debug step04. --- found the camac read"); < E.Inoue: end */ < flags = DDI_DMA_READ; < break; < case 0x0010: /* CAMAC write */ < flags = DDI_DMA_WRITE; < break; < default: < cc->status = CC_STA_BLOCK_INVFUNC; < return 0; --- > case 0x0000: /* CAMAC read */ > flags = DDI_DMA_READ; > break; > case 0x0010: /* CAMAC write */ > flags = DDI_DMA_WRITE; > break; > default: > cc->status = CC_STA_BLOCK_INVFUNC; > return 0; 2786,2795d2446 < mutex_enter(&cc->mutex); < < while(cc->executing_dma_flag){ < cv_wait(&cc->cv,&cc->mutex); < } < < mutex_exit(&cc->mutex); < < < /* change logichouse */ 2797,2807d2447 < < if((ddi_dma_buf_bind_handle(cc->handle, bp , < flags | DDI_DMA_CONSISTENT, DDI_DMA_SLEEP, (caddr_t)0, < &cc->dma_cookie, &cc->ccount) != DDI_DMA_MAPPED)){ < cmn_err(CE_WARN,"cc_strategy: ddi_dma_buf_bind_handle failed"); < bp->b_flags |= B_ERROR; < bp->b_error = EIO; < return bp->b_flags; < } < < /* 2809,2812c2449,2452 < &dma_lim, &cc->handle) != DDI_DMA_MAPPED) { < bp->b_error |= EIO; < bp->b_flags |= B_ERROR; < return bp->b_flags; --- > &dma_lim, &cc->handle) != DDI_DMA_MAPPED) { > bp->b_error |= EIO; > bp->b_flags |= B_ERROR; > return bp->b_flags; 2814c2454 < */ --- > 2816d2455 < /* 2818,2820c2457,2459 < bp->b_error |= EIO; < bp->b_flags |= B_ERROR; < return bp->b_flags; --- > bp->b_error |= EIO; > bp->b_flags |= B_ERROR; > return bp->b_flags; 2822,2823d2460 < */ < /* end */ 2827d2463 < 2831,2837d2466 < /* E.Inoue: from < cmn_err(CE_NOTE," cc_strategy: debug step04-1. --- dma_addr = 0x%x", < dma_addr); < E.Inoue: end */ < < /* */ < /* uprintf("count in 32bit=%d\n", cc->dma_cookie.dmac_size); */ 2839c2468 < cmn_err(CE_NOTE,"count in 32bit=%d", cc->dma_cookie.dmac_size); --- > uprintf("count in 32bit=%d\n", cc->dma_cookie.dmac_size); 2841d2469 < /* */ 2847,2848c2475 < cc->k->cma = CC_CMA_INIT; /* Initialize memory pointer < */ --- > k->cma = CC_CMA_INIT; /* Initialize memory pointer */ 2850,2860c2477,2487 < cc->k->cmr = mode | (cc->cur_crate << 8); < cc->k->cmr = naf; < cc->k->cmr = -(cc->len & 0xFFFF); /* Max len = 1MWord */ < cc->k->cmr = 0xFFFF; < cc->k->cmr = CC_HALT; < cc->k->cma = CC_CMA_INIT; /* Reset memory pointer */ < cc->k->maclo = dma_addr & 0xFFFF; /* Set DMA base address */ < cc->k->machi = dma_addr >> 16; < cc->k->amr = CC_AMR_INIT; /* Set VME AM code */ < cc->k->mtc = wc; < cc->k->cser = CC_DMA_RESET; /* DMA reset */ --- > k->cmr = mode | (cc->cur_crate << 8); > k->cmr = naf; > k->cmr = -(cc->len & 0xFFFF); /* Max len = 1MWord */ > k->cmr = 0xFFFF; > k->cmr = CC_HALT; > k->cma = CC_CMA_INIT; /* Reset memory pointer */ > k->maclo = dma_addr & 0xFFFF; /* Set DMA base address */ > k->machi = dma_addr >> 16; > k->amr = CC_AMR_INIT; /* Set VME AM code */ > k->mtc = wc; > k->cser = CC_DMA_RESET; /* DMA reset */ 2862,2868c2489,2495 < switch (cc->naf & 0x0018) { < case 0x0000: /* CAMAC read */ < cc->k->docr = CC_DOCR_INIT | CC_DMA_READ; < cc->k->sccr = CC_DMA_START; < cc->k->csr |= CC_DMA; /* DMA mode */ < cc->k->csr &= ~CC_WRITE; < break; --- > switch (cc->naf & 0x0018) { > case 0x0000: /* CAMAC read */ > k->docr = CC_DOCR_INIT | CC_DMA_READ; > k->sccr = CC_DMA_START; > k->csr |= CC_DMA; /* DMA mode */ > k->csr &= ~CC_WRITE; > break; 2870,2875c2497,2502 < case 0x0010: /* CAMAC write */ < cc->k->docr = CC_DOCR_INIT | CC_DMA_WRITE; < cc->k->sccr = CC_DMA_START; < cc->k->csr |= CC_DMA; /* DMA mode */ < cc->k->csr |= CC_WRITE; < break; --- > case 0x0010: /* CAMAC write */ > k->docr = CC_DOCR_INIT | CC_DMA_WRITE; > k->sccr = CC_DMA_START; > k->csr |= CC_DMA; /* DMA mode */ > k->csr |= CC_WRITE; > break; 2877,2880c2504,2507 < default: /* ERROR */ < cc->status = CC_STA_BLOCK_INVFUNC; < return 0; < } --- > default: /* ERROR */ > cc->status = CC_STA_BLOCK_INVFUNC; > return 0; > } 2884,2890c2511,2516 < cc->k->cma = cc->now_cma; /* Initialize memory pointer < */ < cc->k->maclo = dma_addr & 0xFFFF; /* Set DMA base address */ < cc->k->machi = dma_addr >> 16; < cc->k->amr = CC_AMR_INIT; /* Set VME AM code */ < cc->k->mtc = cc->now_wc; < cc->k->cser = CC_DMA_RESET; /* DMA reset */ --- > k->cma = now_cma; /* Initialize memory pointer */ > k->maclo = dma_addr & 0xFFFF; /* Set DMA base address */ > k->machi = dma_addr >> 16; > k->amr = CC_AMR_INIT; /* Set VME AM code */ > k->mtc = now_wc; > k->cser = CC_DMA_RESET; /* DMA reset */ 2892,2895c2518,2521 < cc->k->docr = CC_DOCR_INIT | CC_DMA_READ; < cc->k->sccr = CC_DMA_START; < cc->k->csr |= CC_DMA; /* DMA mode */ < cc->k->csr &= ~CC_WRITE; --- > k->docr = CC_DOCR_INIT | CC_DMA_READ; > k->sccr = CC_DMA_START; > k->csr |= CC_DMA; /* DMA mode */ > k->csr &= ~CC_WRITE; 2897,2899d2522 < /* E.Inoue: from < cmn_err(CE_NOTE," cc_strategy: debug step05. --- start DMA"); < E.Inoue: end */ 2903,2908c2526,2528 < cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, CC_TIMEOUT_DMA * hz); < cc->k->csr |= CC_GO; /* Go! */ < cc->k->donc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; < /* E.Inoue: from < cmn_err(CE_NOTE," cc_strategy: debug step07. --- return DMA"); < E.Inoue: end */ --- > cc->timeout_id = timeout(cc_timeout, NULL, CC_TIMEOUT_DMA * hz); > k->csr |= CC_GO; /* Go! */ > k->donc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; 2911d2530 < 2915d2533 < 2917c2535 < camac_b(int unit, u_short mode, u_short naf, int len, int *retlen) --- > camac_b(struct cc_device *cc, u_short mode, u_short naf, int len, int *retlen) 2919,2923c2537,2539 < register struct cc_device *cc; < register dev_t dev; < /* register struct K_REG *k = cc->k; */ < /* register struct uio *uio = cc->uio; */ < register struct uio *uio; --- > register dev_t dev = cc->dev; > register struct K_REG *k = cc->k; > register struct uio *uio = cc->uio; 2925,2933d2540 < cc = ddi_get_soft_state(cc_state,unit); < < /* E.Inoue: from < cmn_err(CE_NOTE," camac_b: debug step01. --- enter camac_b()"); < E.Inoue: end */ < < dev = cc->dev; < uio = cc->uio; < 2947d2553 < /* */ 2949,2950c2555 < uprintf(" in: 0x%x %d %d %d %d %d\n", < uio->uio_iov->iov_base, --- > uprintf(" in: %d %d %d %d %d\n", 2957,2966d2561 < /* < cmn_err(CE_NOTE," in: 0x%x %d %d %d %d %d", < uio->uio_iov->iov_base, < uio->uio_iov->iov_len, < uio->uio_iovcnt, < uio->uio_resid, < uio->uio_segflg, < uio->uio_offset); < */ < /* */ 2971,2973d2565 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_b: debug step02. --- call physio()"); < E.Inoue: end */ 2975,2977d2566 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_b: debug step07. --- return physio()"); < E.Inoue: end */ 2986,2988d2574 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_b: debug step07. --- return physio()"); < E.Inoue: end */ 2990,2991c2576,2577 < cc->k->donc = CC_INT_AUTO_CLEAR | intrpri; < cc->camac_qx = cc->k->csr; --- > k->donc = CC_INT_AUTO_CLEAR | intrpri; > cc->camac_qx = k->csr; 2993,2996c2579 < /* cc->cc_sys_status = cc->bp->b_error; */ < /* E.Inoue: from < cmn_err(CE_NOTE," camac_b: debug step08. --- cc_sys_status = 0x%x", cc->cc_sys_status); < E.Inoue: end */ --- > cc_sys_status = cc->bp->b_error; 3005d2587 < /* */ 3014,3022d2595 < /* < cmn_err(CE_NOTE,"out: %d %d %d %d %d", < uio->uio_iov->iov_len, < uio->uio_iovcnt, < uio->uio_resid, < uio->uio_segflg, < uio->uio_offset); < */ < /* */ 3024c2597 < if ((mode & CC_QSCAN) == 0 || (cc->k->csr & CC_ERR) == 0) { --- > if ((mode & CC_QSCAN) == 0 || (k->csr & CC_ERR) == 0) { 3026,3027c2599,2600 < cc->retlen = cc->len - cc->k->mtc / 2; /* retlen=number of transfer */ < if ((mode & CC_QSCAN) == 0 && (cc->k->csr & CC_ERR) != 0) /* Q-STOP */ --- > cc->retlen = cc->len - k->mtc / 2; /* retlen=number of transfer */ > if ((mode & CC_QSCAN) == 0 && (k->csr & CC_ERR) != 0) /* Q-STOP */ 3033,3034c2606,2607 < cc->retlen = cc->len - cc->k->mtc; < if ((mode & CC_QSCAN) == 0 && (cc->k->csr & CC_ERR) != 0) /* Q-STOP */ --- > cc->retlen = cc->len - k->mtc; > if ((mode & CC_QSCAN) == 0 && (k->csr & CC_ERR) != 0) /* Q-STOP */ 3040,3042d2612 < /* E.Inoue: from < cmn_err(CE_NOTE," camac_b: debug step09. --- return"); < E.Inoue: end */ 3044d2613 < cc.cファイルはかなりの個所に変更がある。 不必要な部分を削除する。 (3-4-7-a). FORCE-50T-sol2.6/cc.cファイルの修正 注. ファイル中のレコードを修正するたびにエディタから抜けているために 行番号が少しずつずれてしまって、見にくくなっている。 onlsun1[306]% vi cc.c : 9 * 26-Jul-1999 E.Inoue, K.Takahashi <--- 追加 10 * FORCE SPARC CPU-50T version * <--- 追加 : 25 /* add logichouse */ <--- 追加 26 #include <--- 追加 27 #include <--- 追加 28 /* end */ <--- 追加 : 36 /* By E.Inoue begin <--- 削除 37 #define uprintf(x) cmn_err(CE_NOTE,x) <--- 削除 38 end */ <--- 削除 : 40 /* add logichouse */ <--- 追加 41 static ddi_dma_attr_t cc_dma_attr = <--- 追加 42 { <--- 追加 43 DMA_ATTR_V0, /* dma_attr_version */ <--- 追加 44 (unsigned long long)0x0, /* dma_attr_addr_lo */ <--- 追加 45 (unsigned long long)0xffffffff, /* dma_attr_addr_hi */ <--- 追加 46 (unsigned long long)0xffffffff, /* dma_attr_count_max */ <--- 追加 47 0x4, /* dma_attr_align */ <--- 追加 48 DEFAULT_BURSTSIZE | BURST32, /* dma_attr_burstsizes */ <--- 追加 49 0x4, /* dma_attr_minxfer */ <--- 追加 50 (unsigned long long)0xffffffff, /* dma_attr_maxxfer */ <--- 追加 51 (unsigned long long)0xffffffff, /* dma_attr_seg */ <--- 追加 52 17, /* dma_attr_sgllen */ <--- 追加 53 512, /* dma_attr_granular */ <--- 追加 54 0, /* dma_attr_flags */ <--- 追加 55 }; <--- 追加 56 /* end */ <--- 追加 57 <--- 追加 58 static void *cc_state; <--- 追加 : 97 /* add logichouse */ <--- 追加 98 uint_t ccount; <--- 追加 99 /* end */ <--- 追加 : 103 int cc_sys_status; /* temporally system status storage */ <- 追加 104 /* add E.Inoue */ <--- 追加 105 struct cc_iosb iosb; <--- 追加 106 struct cc_message message; <--- 追加 107 u_short data_area[CC_LIST_MAX_DATA]; <--- 追加 108 u_short list_area[CC_LIST_MAX_LENGTH]; <--- 追加 109 struct klist klist1[CC_KLIST_MAX_DIR]; <--- 追加 110 int ptr_dir; <--- 追加 111 u_short ptr_cma, now_cma, now_wc; <--- 追加 112 /* end */ <--- 追加 113 /* add E.Inoue */ <--- 追加 114 int data1; <--- 追加 115 /* end */ <--- 追加 : 118 <--- 削除 119 <--- 削除 : 138 /* By E.Inoue */ <--- 追加 139 /*static void cc_timeout(); */ <--- 削除 140 static void cc_timeout(caddr_t unit); <--- 追加 141 static int camac_s(int unit, u_short mode, u_short naf, <--- 追加 142 u_short *dat); <--- 追加 : 143 static int camac_b(int unit, u_short mode, u_short naf, <--- 追加 144 int len, int *retlen); <--- 追加 : 220 int error; <--- 追加 221 <--- 追加 222 if((error = ddi_soft_state_init(&cc_state,sizeof(struct cc_device),1 )) != 0){ <--- 追加 223 return(error); <--- 追加 224 } <--- 追加 225 if((error = mod_install(&modlinkage)) != 0){ <--- 追加 226 ddi_soft_state_fini(&cc_state); <--- 追加 227 } <--- 追加 228 <--- 追加 229 return(error); <--- 追加 : 239 int error; <--- 追加 240 <--- 追加 241 if((error = mod_remove(&modlinkage)) == 0){ <--- 追加 242 ddi_soft_state_fini(&cc_state); <--- 追加 243 } <--- 追加 244 return (error); <--- 追加 : 266 int instance; <--- 追加 : 268 register struct cc_device *cc; <--- 追加 269 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 : 274 instance = ddi_get_instance(dip); <--- 追加 275 <--- 追加 276 /* initialize cc_device */ <--- 追加 277 <--- 追加 278 if(ddi_soft_state_zalloc(cc_state,instance) != DDI_SUCCESS){ <- 追加 279 cmn_err(CE_WARN,"cc_probe: ddi_soft_state_zalloc failed"); <--- 追加 280 return (DDI_FAILURE); <--- 追加 281 } <--- 追加 282 <--- 追加 283 if((cc = ddi_get_soft_state(cc_state,instance)) == NULL){ <--- 追加 284 cmn_err(CE_WARN,"cc_probe: ddi_get_soft_state failed"); <-- 追加 285 ddi_soft_state_free(cc_state,instance); <--- 追加 286 goto failure; <--- 追加 287 } <--- 追加 288 289 /* bzero((char *)cc, sizeof(struct cc_device)); */ <--- 追加 290 cc->dip = dip; <--- 追加 291 /* cc->k = (struct K_REG *)reg; */ <--- 追加 : 294 if (ddi_map_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t)0, 0)) { <--- 追加 : /* initialize cc_device */ <--- 削除 bzero((char *)cc, sizeof(struct cc_device)); <--- 削除 cc->dip = dip; <--- 削除 cc->k = (struct K_REG *)reg; <--- 削除 : 312 ddi_unmap_regs(dip, 0, (caddr_t *)&cc->k, (off_t) 0, (off_t) 0); <--- 追加 : static int <--- 削除 316 cc_attach(dev_info_t *dip, ddi_attach_cmd_t cmd) : 319 register struct cc_device *cc; <--- 変更 320 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 321 /* register struct K_REG *k = cc->k; */ <--- 削除 322 int instance; <--- 追加 : 324 instance = ddi_get_instance(dip); <--- 追加 325 <--- 追加 326 if((cc = ddi_get_soft_state(cc_state,instance)) == NULL){ <--- 追加 327 cmn_err(CE_WARN,"cc_probe: ddi_get_soft_state failed"); <-- 追加 328 return (DDI_FAILURE); <--- 追加 329 } <--- 追加 330 <--- 追加 : 336 ddi_pokes(dip, (short *)&cc->k->csr, (short)value); <--- 変更 337 ddi_peeks(dip, (short *)&cc->k->csr, (short *)&value); <--- 変更 : 339 /* uprintf("cc_attach: unable to reset K2917\n"); */ <--- 削除 340 cmn_err(CE_WARN,"cc_attach: unable to reset K2917\n"); <--- 追加 : 348 /* uprintf("cc_attach: unable to create minor node\n"); */ <--- 削除 349 cmn_err(CE_WARN,"cc_attach: unable to create minor node\n"); <--- 追加 : 356 (caddr_t) instance) != DDI_SUCCESS) { <--- 変更 : 358 /* uprintf("cc_attach: unable to install high-interrupt handler\n "); */ <--- 削除 359 cmn_err(CE_WARN,"cc_attach: unable to install high-interrupt han dler\n"); <--- 追加 : 370 /* add logichouse */ <--- 追加 371 if (ddi_dma_alloc_handle(dip, &cc_dma_attr,DDI_DMA_SLEEP, NULL, <--- 追加 372 &cc->handle) != DDI_SUCCESS) { <--- 追加 373 cmn_err(CE_WARN,"cc_attach: can't alloc dma handle"); <--- 追加 374 return (DDI_FAILURE); <--- 追加 375 } <--- 追加 376 /* end */ <--- 追加 : 386 register struct cc_device *cc; <--- 追加 387 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 388 int instance; <--- 追加 : 392 instance = ddi_get_instance(dip); <--- 追加 393 <--- 追加 394 cc = ddi_get_soft_state(cc_state,instance); <--- 追加 395 <--- 追加 396 /* add logichouse */ <--- 追加 397 ddi_dma_free_handle(&cc->handle); <--- 追加 398 /* end */ <--- 追加 : 404 ddi_soft_state_free(cc_state,instance); <--- 追加 : 416 /* register dev_t dev = (dev_t) arg; */ <--- 削除 : 418 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 419 register struct cc_device *cc; <--- 追加 : 423 instance = getminor((dev_t)arg); <--- 追加 424 if((cc = ddi_get_soft_state(cc_state,instance)) != NULL){ <--- 追加 425 *result = (void *)cc->dip; <--- 変更なし 426 error = DDI_SUCCESS; <--- 変更なし 427 } <--- 追加 : 430 /* instance = 0; */ <--- 削除 431 instance = getminor((dev_t)arg); <--- 追加 : 436 *result = NULL; <--- 追加 : 530 /* 531 static struct cc_iosb iosb; <--- 削除 532 static struct cc_message message; <--- 削除 533 static u_short data_area[CC_LIST_MAX_DATA]; <--- 削除 534 static u_short list_area[CC_LIST_MAX_LENGTH]; <--- 削除 535 static struct klist klist[CC_KLIST_MAX_DIR]; <--- 削除 536 static int ptr_dir; <--- 削除 537 static u_short ptr_cma, now_cma, now_wc; <--- 削除 538 */ 539 /* static int cc_sys_status; temporally system status storage */ <--- 削除 : 558 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 559 register struct cc_device *cc; <--- 追加 : 562 /* register struct K_REG *k = cc->k; */ <--- 削除 : 565 unit = getminor(*devp); <--- 追加 566 cc = ddi_get_soft_state(cc_state,unit); <--- 追加 567 <--- 追加 : 583 cc->k->csr = CC_RST; /* K2917 Reset */ <--- 変更 : 605 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 606 register struct cc_device *cc; <--- 追加 607 minor_t unit; <--- 追加 : 609 unit = getminor(dev); <--- 追加 610 <--- 追加 611 cc = ddi_get_soft_state(cc_state,unit); <--- 追加 : 627 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 628 register struct cc_device *cc; <--- 追加 : 636 minor_t unit; <--- 追加 : 638 unit = getminor(dev); <--- 追加 639 cc = ddi_get_soft_state(cc_state,unit); <--- 追加 : 647 cc->ptr_kdata = cc->data_area; <--- 変更 : 654 copyin((caddr_t)iov->iov_base, (caddr_t)&cc->message, sizeof(cc->mes sage)); <--- 変更 : 657 cc->cc_sys_status = 0; <--- 変更 658 cc->mode = mode = cc->message.mode; <--- 変更 659 cc->naf = naf = cc->message.naf; <--- 変更 : 668 669 /* E.Inoue: from <--- 削除 670 cmn_err(CE_NOTE," cc_write: debug step1. --- naf = 0x%x", naf); <--- 削除 671 E.Inoue: end */ <--- 削除 : 669 switch (cc->message.command) { <--- 変更 : 677 camac_s(unit, mode, naf, cc->data_area); <--- 変更 : 679 copyout((caddr_t)cc->data_area, (caddr_t)cc->message.ptr _data, <--- 変更 : 682 copyout((caddr_t)cc->data_area, (caddr_t)cc->message.ptr _data, <--- 変更 : 687 copyin((caddr_t)cc->message.ptr_data, (caddr_t)cc->data_ area, <--- 変更 : 690 copyin((caddr_t)cc->message.ptr_data, (caddr_t)cc->data_ area, <--- 変更 : 692 camac_s(unit, mode, naf, cc->data_area); <--- 変更 : 695 camac_s(unit, mode, naf, cc->data_area); <--- 変更 : 699 (caddr_t)cc->message.ptr_qx, 2); <--- 変更 : 720 camac_b(unit, mode, naf, len, &retlen); <--- 変更 : 723 camac_b(unit, mode, naf, len, &retlen); <--- 変更 : 726 camac_b(unit, mode, naf, len, &retlen); <--- 変更 : 729 cc->iosb.status = cc->status; <--- 変更 730 cc->iosb.ret_length = retlen; <--- 変更 731 cc->iosb.s_reg = cc->s_reg; <--- 変更 732 cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); <-- 変更 733 copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, 734 sizeof(struct cc_iosb)); <--- 変更 : 748 copyin((caddr_t)cc->ptr_list, (caddr_t)cc->list_area, 749 cc->len_list * sizeof(u_short)); <--- 変更 : 750 if (cc->message.command == CC_CMD_LOADLIST) <--- 変更 : 757 copyin((caddr_t)cc->message.ptr_iosb, (caddr_t)&cc->iosb,<- 変更 : 762 cc->ptr_list = cc->list_area; /* initialize list pointer */ <--- 変更 763 cc->s_reg = cc->iosb.s_reg; <--- 変更 : 767 cc->cc_sys_status == CC_STA_OK && <--- 変更 : 769 cc->ptr_list <= (cc->list_area + cc->len_list)) {<-- 変更 : 778 cc->iosb.status = cc->status; <--- 変更 779 cc->iosb.ret_length = cc->len_udata; <--- 変更 780 cc->iosb.s_reg = cc->s_reg; <--- 変更 781 cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); <-- 変更 782 copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, <--- 変更 : 791 copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klna me)); <--- 変更 : 797 copyin((caddr_t)cc->ptr_list, (caddr_t)cc->list_area, <-- 変更 : 804 copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klna me)); <--- 変更 : 810 copyin((caddr_t)cc->message.klname, (caddr_t)klname, sizeof(klna me)); <--- 変更 811 copyin((caddr_t)cc->message.ptr_iosb, (caddr_t)&cc->iosb, 812 sizeof(struct cc_iosb)); <--- 変更 : 820 cc->iosb.status = cc->status; <--- 変更 821 cc->iosb.ret_length = cc->retlen; <--- 変更 822 cc->iosb.s_reg = cc->s_reg; <--- 変更 823 cc->iosb.devinfo = cc->camac_qx + (cc->camac_qx << 16); <-- 変更 824 copyout((caddr_t)&cc->iosb, (caddr_t)cc->message.ptr_iosb, 825 sizeof(struct cc_iosb)); <--- 変更 : 830 klsave(cc, cc->data_area); <--- 変更 831 copyout((caddr_t)cc->data_area,(caddr_t)cc->message.ptr_iosb, 832 (cc->list_area[0] + 1) * 2); <--- 変更 : 836 copyin((caddr_t)(u_short *)cc->message.ptr_iosb, (caddr_t)cc->da ta_area, 2); <--- 変更 837 copyin((caddr_t)((u_short *)cc->message.ptr_iosb + 1), 838 (caddr_t)&cc->data_area[1], cc->data_area[0] * 2); <--- 変更 840 klload(cc, cc->data_area); <--- 変更 : 855 return cc->cc_sys_status; <--- 変更 : 862 static void <--- 変更 863 cc_timeout(caddr_t unit) <--- 変更 : 865 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 866 register struct cc_device *cc; <--- 追加 : 868 /* cc = ddi_get_soft_state(cc_state,unit); */ <--- 削除 869 cc = ddi_get_soft_state(cc_state,(int)*unit); <--- 追加 : 875 /* chenge logichouse */ <--- 追加 876 /* <--- 削除 877 ddi_dma_free(cc->handle); <--- 削除 878 */ <--- 削除 879 ddi_dma_unbind_handle(cc->handle); <--- 追加 880 /* end */ <--- 追加 : 900 cc_intr(int unit) <--- 変更 : 902 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 903 register struct cc_device *cc; <--- 追加 904 /* register struct K_REG *k = cc->k; */ <--- 削除 : 906 cc = ddi_get_soft_state(cc_state,unit); <--- 追加 : 910 /* E.Inoue: from <--- 削除 911 cmn_err(CE_NOTE," cc_intr: debug step06. --- enter cc_intr()"); <--- 削除 912 E.Inoue: end */ <--- 削除 913 <--- 削除 : 911 if ((cc->k->csr & CC_LAM) != 0) <--- 変更 : 913 if ((cc->k->csr & CC_DONE) != 0) <--- 変更 : 915 if ((cc->k->empc & CC_INT_ENABLE) == 0) <--- 変更 : 917 if ((cc->k->aboc & CC_INT_ENABLE) == 0) <--- 変更 : 920 /* E.Inoue: from <--- 削除 921 cmn_err(CE_NOTE," cc_intr: debug step06a. --- cc->interrupt=0x%x", c c->interrupt); <--- 削除 922 E.Inoue: end */ <--- 削除 923 <--- 削除 : 923 /* E.Inoue: from <--- 削除 924 cmn_err(CE_NOTE," cc_intr: debug step06b. --- cc->executing_dma_flag != 0"); <--- 削除 925 E.Inoue: end */ <--- 削除 926 <--- 削除 927 <--- 削除 : 923 /* change logichouse */ <--- 追加 924 /* <--- 追加 925 ddi_dma_free(cc->handle); <--- 削除 926 */ <--- 追加 927 ddi_dma_unbind_handle(cc->handle); <--- 追加 928 /* end */ <--- 追加 929 cc->cc_sys_status = cc->bp->b_error; <--- 追加 : 937 /* E.Inoue: from <--- 削除 938 cmn_err(CE_NOTE," cc_intr: debug step06c. --- reject interrupt: retu rn cc_intr()"); <--- 削除 939 E.Inoue: end */ <--- 削除 : 944 /* E.Inoue: from <--- 削除 945 cmn_err(CE_NOTE," cc_intr: debug step06d. --- accept interrupt: retu rn cc_intr()"); <--- 削除 946 E.Inoue: end */ <--- 削除 : 955 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 956 register struct cc_device *cc; <--- 追加 957 /* register struct K_REG *k = cc->k; */ <--- 削除 : 959 /* int idat, *data = (int *)arg; */ <--- 削除 960 /* E.Inoue <--- 追加 961 int idat, data; <--- 削除 962 end */ <--- 追加 963 int idat; <--- 追加 : 965 minor_t unit; <--- 追加 : 967 unit = getminor(dev); <--- 追加 968 cc = ddi_get_soft_state(cc_state,unit); <--- 追加 969 <--- 追加 970 /* E.Inoue <--- 追加 971 copyin((caddr_t)arg,(caddr_t)&data,sizeof(data)); <--- 削除 972 copyin((caddr_t)arg,(caddr_t)&cc->data1,sizeof(cc->data1)); <-- 削除 973 */ <--- 追加 974 ddi_copyin((caddr_t)arg,(caddr_t)&cc->data1,sizeof(cc->data1),flag); <--- 追加 975 <--- 追加 : 978 /* E.Inoue <--- 追加 979 data = cc->max_branch; <--- 削除 980 */ <--- 追加 981 cc->data1 = cc->max_branch; <--- 追加 : 984 /* E.inoue <--- 追加 985 if (data >= 0 && data < cc->max_branch) <--- 削除 986 cc->cur_branch = data; <--- 削除 987 */ <--- 追加 988 if (cc->data1 >= 0 && cc->data1 < cc->max_branch) <--- 変更 989 cc->cur_branch = cc->data1; <--- 変更 : 992 /* E.Inoue <--- 追加 993 if (data >= 0 && data < MAX_CRATE) <--- 削除 994 cc->cur_crate = data; <--- 削除 995 */ <--- 追加 996 if (cc->data1 >= 0 && cc->data1 < MAX_CRATE) <--- 変更 997 cc->cur_crate = cc->data1; <--- 変更 : 1000 mutex_enter(&cc->mutex); /* start MUTEX */ <--- 追加 1001 cc->interrupt = 0; <--- 変更なし 1002 cc->k->lamc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; <--- 変更 : 1005 /* by E.Inoue <--- 追加 1006 s = spl5(); <--- 削除 1007 */ <--- 追加 : 1013 /* mutex_enter(&cc->mutex); */ /* start MUTEX */ <--- 削除 1014 /* E.Inoue <--- 追加 1015 cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, data * hz); <--- 削除 1016 */ <--- 追加 1017 cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, cc->data1 * hz); <--- 変更 1018 /* mutex_enter(&cc->mutex); */ /* start MUTE X */ <--- 削除 : 1033 /* by E.Inoue <--- 追加 1034 splx(s); <--- 削除 1035 */ <--- 追加 : 1046 mutex_enter(&cc->mutex); /* start MUTEX */ <--- 追加 1047 ddi_copyin((caddr_t)arg,(caddr_t)&cc->data1,sizeof(cc->data1),fla g); <--- 追加 : 1048 <--- 削除 1049 /* E.Inoue: from <--- 削除 1050 cmn_err(CE_NOTE," cc_ioctl: debug step01. --- enter case CCIOC_ENABL E_LAM"); <--- 削除 1051 cmn_err(CE_NOTE," cc_ioctl: debug step01. --- &cc->data1 = 0x%x", &c c->data1); <--- 削除 1052 cmn_err(CE_NOTE," cc_ioctl: debug step01. --- (u_short *)cc->data1 = 0x%x", (u_short *)cc->data1); <--- 削除 1053 E.Inoue: end */ <--- 削除 : 1048 /* E.Inoue <--- 追加 1049 camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)data); <--- 削除 1050 */ <--- 追加 1051 camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)&cc->data1); <--- 追加 : 1052 /* E.Inoue: from <--- 削除 1053 cmn_err(CE_NOTE," cc_ioctl: debug step01. --- call camac_s(...NAF(30 ,13,17) ok."); <--- 削除 1054 E.Inoue: end */ <--- 削除 : 1052 camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); <--- 変更 : 1053 /* E.Inoue: from <--- 削除 1054 cmn_err(CE_NOTE," cc_ioctl: debug step02. --- call camac_s(...NAF(30 ,0,1) ok."); <--- 削除 1055 E.Inoue: end */ <--- 削除 : 1054 camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); <--- 変更 : 1055 /* E.Inoue: from <--- 削除 1056 cmn_err(CE_NOTE," cc_ioctl: debug step03. --- call camac_s(...NAF(30 ,0,17) ok."); <--- 削除 1057 E.Inoue: end */ <--- 削除 : 1055 mutex_exit(&cc->mutex); /* end MUTEX */ <--- 削除 : 1059 cc->k->lamc = CC_INT_AUTO_CLEAR | intrpri; <--- 変更 1060 idat = 0; <--- 変更なし 1061 camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)&idat); <--- 変更 1062 camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); <--- 変更 1063 sdat &= ~0x100; <--- 変更なし 1064 camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); <--- 変更 : 1090 cc->k->csr = CC_RST; <--- 変更 : 1129 cc->ptr_dir = 0; <--- 変更 1130 cc->ptr_cma = CC_KLIST_CMAINIT; <--- 変更 : 1178 cc->cc_sys_status = copyout((caddr_t)cc->data_area, (caddr_t)cc->ptr _udata, <--- 変更 : 1183 cc->ptr_kdata = cc->data_area; <--- 変更 : 1216 if (status = camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], c c->ptr_kdata)) <--- 変更 : 1234 if (status = camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], c c->ptr_kdata)) <--- 変更 : 1249 return camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], ((u_sho rt *)&cc->a_reg + 1)); <--- 変更 : 1256 return camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], (u_shor t *)&cc->a_reg); <--- 変更 : 1263 return camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], &cc->pt r_list[2]); <--- 変更 : 1273 return camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], (u_shor t *)&dat); <--- 変更 : 1280 return camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], ((u_sho rt *)&cc->a_reg + 1)); <--- 変更 : 1287 return camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], (u_shor t *)&cc->a_reg); <--- 変更 : 1296 return camac_s(getminor(cc->dev), CC_BIT16, cc->ptr_list[1], &dummy) ; <--- 変更 : 1324 if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_ short *)&dat)) <--- 変更 : 1327 return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); <--- 変更 : 1335 <--- 削除 : 1337 if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_ short *)&dat)) <--- 変更 : 1340 return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); <--- 変更 : 1350 if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_ short *)&dat)) <--- 変更 : 1353 return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); <--- 変更 : 1363 if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_ short *)&dat)) <--- 変更 : 1366 return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); <--- 変更 : 1381 if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 13, 17), ( u_short *)&dat)) <--- 変更 : 1383 if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_ short *)&dat)) <--- 変更 : 1386 return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); <--- 変更 : 1400 if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 13, 17), ( u_short *)&dat)) <--- 変更 : 1402 if (status = camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 1), (u_ short *)&dat)) <--- 変更 : 1405 return camac_s(getminor(cc->dev), CC_BIT24, NAF(30, 0, 17), (u_short *)&dat); <--- 変更 : 1417 status = camac_s(getminor(cc->dev), CC_BIT24, cc->ptr_list[1], ( u_short *)&dat); <--- 変更 : 1438 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1455 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1472 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1489 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1506 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1523 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1540 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1557 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1574 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1591 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1608 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1625 return camac_b(getminor(cc->dev), mode, naf, len, &retlen); <--- 変更 : 1745 cc->cc_sys_status = copyout((caddr_t)((u_short *)&cc->a_reg + 1), <--- 変更 1746 (caddr_t)&ptr_prev_head[cc->ptr_list[1]-1], 2); : 1754 cc->cc_sys_status = copyin((caddr_t)&ptr_prev_head[cc->ptr_list[1]-1 ], <--- 変更 1755 (caddr_t)((u_short *)&cc->a_reg + 1), 2); : 1762 cc->cc_sys_status = copyout((caddr_t)&cc->ptr_list[2], <--- 変更 1763 (caddr_t)&ptr_prev_head[cc->ptr_list[1]-1], 2); : 1790 return klexe(cc, cc->klist1[0].name); <--- 変更 : 2107 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2116 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2126 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2136 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2146 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2156 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2166 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2176 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2186 cc->ptr_list = cc->list_area + cc->ptr_list[1] - 1; <--- 変更 : 2207 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2213 for (i = 0; i < cc->ptr_dir; i++) <--- 変更 2214 if (strcmp(name, cc->klist1[i].name) == 0) <--- 変更 : 2217 if (cc->ptr_dir >= CC_KLIST_MAX_DIR) <--- 変更 : 2221 cc->k->cma = cc->ptr_cma; <--- 変更 2222 cc->klist1[cc->ptr_dir].cma = cc->ptr_cma; <--- 変更 2223 cc->klist1[cc->ptr_dir].wc = 0; <--- 変更 : 2225 cc->ptr_list = cc->list_area; <--- 変更 : 2227 if (cc->ptr_cma >= 0xFFFF - 4) <--- 変更 : 2235 strcpy(cc->klist1[cc->ptr_dir].name, name); <--- 変更 2236 cc->ptr_dir++; <--- 変更 : 2245 struct cc_device *cc; <--- 追加 : 2249 for (i = 0; i < cc->ptr_dir; i++) <--- 変更 2250 if (strcmp(name, cc->klist1[i].name) == 0) { <--- 変更 2251 cc->klist1[i].name[0] = '\0'; <--- 変更 : 2271 for (i = 0; i < cc->ptr_dir; i++) <--- 変更 2272 if (strcmp(name, cc->klist1[i].name) == 0) <--- 変更 : 2274 if (i >= cc->ptr_dir) <--- 変更 : 2277 cc->now_cma = cc->klist1[i].cma; <--- 変更 2278 cc->now_wc = cc->klist1[i].wc; <--- 変更 : 2282 uio->uio_iov->iov_len = cc->klist1[i].wc * 2; <--- 変更 : 2299 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2303 for (i = 0; i < cc->ptr_dir; i++) <--- 変更 2304 if (cc->klist1[i].name[0] != '\0') { <--- 変更 : 2308 while (cc->klist1[i].name[j] != '\0') <--- 変更 2309 data[ptr++] = cc->klist1[i].name[j++]; <--- 変更 : 2313 data[ptr++] = cc->klist1[i].wc; <--- 変更 : 2316 cc->k->cma = cc->klist1[i].cma; <--- 変更 2317 while ((save = cc->k->cmr) != CC_HALT) <--- 変更 : 2332 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2339 cc->klist1[cc->ptr_dir].name[j++] = data[ptr++]; <--- 変更 2340 cc->klist1[cc->ptr_dir].name[j] = data[ptr++]; <--- 変更 : 2343 cc->klist1[cc->ptr_dir].wc = data[ptr++]; <--- 変更 : 2346 cc->k->cma = cc->ptr_cma; <--- 変更 2347 cc->klist1[cc->ptr_dir].cma = cc->ptr_cma; <--- 変更 : 2349 cc->k->cmr = data[ptr++]; <--- 変更 2350 cc->ptr_cma++; <--- 変更 : 2352 cc->k->cmr = data[ptr++]; <--- 変更 2353 cc->ptr_cma++; <--- 変更 : 2355 cc->ptr_dir++; <--- 変更 : 2370 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2372 cc->k->cmr = CC_HALT; <--- 変更 : 2379 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2381 cc->k->cmr = CC_AD | CC_BIT16 | (cc->cur_crate << 8); <--- 変更 2382 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2383 cc->klist1[cc->ptr_dir].wc += 1; <--- 変更 2384 cc->ptr_cma += 2; <--- 変更 : 2391 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2393 cc->k->cmr = CC_AD | CC_BIT24 | (cc->cur_crate << 8); <--- 変更 2394 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2395 cc->klist1[cc->ptr_dir].wc += 2; <--- 変更 2396 cc->ptr_cma += 2; <--- 変更 : 2416 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2418 cc->k->cmr = CC_AD | CC_INLINE | CC_BIT24 | (cc->cur_crate << 8); <--- 変更 2419 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2420 cc->k->cmr = cc->ptr_list[2]; <--- 変更 2421 cc->k->cmr = cc->ptr_list[3]; <--- 変更 2422 cc->ptr_cma += 4; <--- 変更 : 2429 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2431 cc->k->cmr = CC_AD | CC_BIT16 | (cc->cur_crate << 8); <--- 変更 2432 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2433 cc->ptr_cma += 2; <--- 変更 : 2440 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2442 cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QSTOP | (cc->cur_crate << 8); <--- 変更 2443 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2444 cc->k->cmr = - cc->ptr_list[2]; <--- 変更 2445 cc->k->cmr = 0xFFFF; <--- 変更 2446 cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; <--- 変更 2447 cc->ptr_cma += 4; <--- 変更 : 2454 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2456 cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QSTOP | (cc->cur_crate << 8); <--- 変更 2457 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2458 cc->k->cmr = - cc->ptr_list[2] * 2; <--- 変更 2459 cc->k->cmr = 0xFFFF; <--- 変更 2460 cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; <--- 変更 2461 cc->ptr_cma += 4; <--- 変更 : 2468 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2470 cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QSCAN | (cc->cur_crate << 8); <--- 変更 2471 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2472 cc->k->cmr = - cc->ptr_list[2]; <--- 変更 2473 cc->k->cmr = 0xFFFF; <--- 変更 2474 cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; <--- 変更 2475 cc->ptr_cma += 4; <--- 変更 : 2482 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2484 cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QSCAN | (cc->cur_crate << 8); <--- 変更 2485 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2486 cc->k->cmr = - cc->ptr_list[2] * 2; <--- 変更 2487 cc->k->cmr = 0xFFFF; <--- 変更 2488 cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; <--- 変更 2489 cc->ptr_cma += 4; <--- 変更 : 2496 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2498 cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT16 | CC_QIGNO | (cc->cur_crate << 8); <--- 変更 2499 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2500 cc->k->cmr = - cc->ptr_list[2]; <--- 変更 2501 cc->k->cmr = 0xFFFF; <--- 変更 2502 cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2]; <--- 変更 2503 cc->ptr_cma += 4; <--- 変更 : 2510 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2512 cc->k->cmr = CC_AD | CC_BLOCK | CC_BIT24 | CC_QIGNO | (cc->cur_crate << 8); <--- 変更 2513 cc->k->cmr = cc->ptr_list[1]; <--- 変更 2514 cc->k->cmr = - cc->ptr_list[2] * 2; <--- 変更 2515 cc->k->cmr = 0xFFFF; <--- 変更 2516 cc->klist1[cc->ptr_dir].wc += cc->ptr_list[2] * 2; <--- 変更 2517 cc->ptr_cma += 4; <--- 変更 : 2531 camac_s(int unit, u_short mode, u_short naf, u_short *dat) <--- 変更 : 2533 register struct cc_device *cc; <--- 追加 2534 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2537 /* E.Inoue: from <--- 削除 2538 cmn_err(CE_NOTE," camac_s: debug step01. --- enter camac_s()"); <--- 削除 2539 E.Inoue: end */ <--- 削除 2540 <--- 削除 2541 cc = ddi_get_soft_state(cc_state,unit); <--- 追加 : 2544 /* E.Inoue */ <--- 追加 2545 cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; <--- 変更 2546 cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; <--- 変更 2547 cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; <--- 変更 2548 cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; <--- 変更 2549 /* end */ <--- 追加 : 2551 cc->k->cma = CC_CMA_INIT; /* Initialize memory po inter */ <--- 変更 2552 cc->k->cmr = mode | (cc->cur_crate << 8); /* Write command list */ <--- 変更 2553 cc->k->cmr = naf; <--- 変更 2554 cc->k->cmr = CC_HALT; <--- 変更 2555 cc->k->cma = CC_CMA_INIT; /* Reset memory pointer */ <--- 変更 2556 : 2560 /* E.Inoue: from <--- 削除 2561 cmn_err(CE_NOTE," camac_s: debug step02. --- camac read"); <--- 削除 2562 E.Inoue: end */ <--- 削除 2563 /* E.Inoue <--- 追加 2564 cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2565 cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2566 cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2567 cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2568 end */ <--- 追加 2569 2570 cc->k->csr &= ~CC_WRITE; <--- 変更 2571 cc->k->csr |= CC_GO; /* Go! */ <--- 変更 2572 while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEO UT_SINGLE) <--- 変更 : 2574 if ((cc->k->csr & CC_RDY) != 0) { <--- 変更 : 2576 *dat = cc->k->dhr & 0x00FF; <--- 変更 2577 *(dat + 1) = cc->k->dlr; <--- 変更 : 2580 *dat = cc->k->dlr; <--- 変更 : 2585 /* E.Inoue: from <--- 削除 2586 cmn_err(CE_NOTE," camac_s: debug step02. --- camac write"); <-- 削除 2587 E.Inoue: end */ <--- 削除 2588 2589 /* E.Inoue <--- 追加 2590 cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2591 cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2592 cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2593 cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2594 end */ <--- 追加 2595 2596 cc->k->csr |= CC_WRITE; <--- 変更 2597 /* E.Inoue: from <--- 削除 2598 cmn_err(CE_NOTE," camac_s: debug step03. --- camac write, cc->k->csr |= CC_WRITE; ok."); <--- 削除 2599 E.Inoue: end */ <--- 削除 2600 cc->k->csr |= CC_GO; /* Go! */ <--- 変更 2601 /* E.Inoue: from <--- 削除 2602 cmn_err(CE_NOTE," camac_s: debug step04. --- camac write, cc->k->csr |= CC_GO; ok."); <--- 削除 2603 E.Inoue: end */ <--- 削除 2604 while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEO UT_SINGLE) <--- 変更 : 2597 if ((cc->k->csr & CC_RDY) != 0) { <--- 変更 : 2599 /* E.Inoue: from <--- 削除 2600 cmn_err(CE_NOTE," camac_s: debug step05. --- camac write, enter (mod e & CC_BIT16) == 0) ok."); <--- 削除 2601 cmn_err(CE_NOTE," camac_s: debug step05. --- dat = 0x%x", dat); <--- 削除 2602 E.Inoue: end */ <--- 削除 2603 cc->k->dhr = *dat; <--- 変更 2604 /* E.Inoue: from <--- 削除 2605 cmn_err(CE_NOTE," camac_s: debug step06. --- camac write, cc->k->dhr = *dat; ok."); <--- 削除 2606 E.Inoue: end */ <--- 削除 2607 cc->k->dlr = *(dat + 1); <--- 変更 2608 /* E.Inoue: from <--- 削除 2609 cmn_err(CE_NOTE," camac_s: debug step07. --- camac write, cc->k->dhr = *(dat + 1); ok."); <--- 削除 2610 E.Inoue: end */ <--- 削除 : 2603 /* E.Inoue: from <--- 削除 2604 cmn_err(CE_NOTE," camac_s: debug step08. --- camac write, enter (mod e & CC_BIT16) != 0) ok."); <--- 削除 2605 E.Inoue: end */ <--- 削除 2606 cc->k->dlr = *dat; <--- 変更 2607 /* E.Inoue: from <--- 削除 2608 cmn_err(CE_NOTE," camac_s: debug step09. --- camac write, cc->k->dlr = *dat; ok."); <--- 削除 2609 E.Inoue: end */ <--- 削除 : 2609 /* E.Inoue: from <--- 削除 2610 cmn_err(CE_NOTE," camac_s: debug step09. --- camac write, enter defa ult "); <--- 削除 2611 E.Inoue: end */ <--- 削除 2612 cc->k->csr |= CC_GO; /* Go! */ <--- 変更 : 2613 /* E.Inoue: from <--- 削除 2614 cmn_err(CE_NOTE," camac_s: debug step10. --- finish camac write"); <--- 削除 2615 E.Inoue: end */ <--- 削除 2616 while ((cc->k->csr & (CC_DONE | CC_ERR)) == 0 && counter < CC_TIMEOU T_SINGLE) <--- 変更 : 2616 cc->camac_qx = cc->k->csr; <--- 変更 : 2642 /* E.Inoue: begin */ <--- 追加 2643 minphys(bp); <--- 追加 2644 /* E.Inoue: end */ <--- 追加 2645 : 2649 /* change logichouse */ <--- 追加 2650 /* setup DMA limit */ <--- 変更なし 2651 /* <--- 追加 2652 static ddi_dma_lim_t dma_lim = { <--- 削除 2653 0, <--- 削除 2654 0xffffffff, <--- 削除 2655 0xffff, <--- 削除 2656 0x2, <--- 削除 2657 0x2, <--- 削除 2658 1024 <--- 削除 2659 }; <--- 削除 2660 */ <--- 追加 2661 /* end */ <--- 追加 : 2665 /* register struct cc_device *cc = &ccdevice[0]; */ <--- 削除 2666 register struct cc_device *cc; <--- 追加 2667 /* register struct K_REG *k = cc->k; */ <--- 削除 : 2669 /* <--- 追加 2670 register mode = cc->mode; 2671 register naf = cc->naf; <--- 削除 2672 register int wc = (mode & CC_BIT16) ? cc->len : cc->len * 2; <- 削除 2673 */ <--- 追加 : 2674 register mode; <--- 追加 2675 register naf; <--- 追加 2676 register int wc; <--- 追加 2677 register u_int flags; <--- 変更なし 2678 minor_t unit; <--- 追加 : 2680 cc = ddi_get_soft_state(cc_state, getminor(bp->b_edev)); <--- 追加 2681 2682 mode = cc->mode; <--- 追加 2683 naf = cc->naf; <--- 追加 2684 wc = (mode & CC_BIT16) ? cc->len : cc->len * 2; <--- 追加 2685 <--- 削除 2686 /* E.Inoue: from <--- 削除 2687 cmn_err(CE_NOTE," cc_strategy: debug step03. --- enter cc_strategy() "); <--- 削除 2688 E.Inoue: end */ <--- 削除 : 2689 /* E.Inoue: from <--- 削除 2690 cmn_err(CE_NOTE," cc_strategy: debug step04. --- found the camac rea d"); <--- 削除 2691 E.Inoue: end */ <--- 削除 : 2699 mutex_enter(&cc->mutex); <--- 追加 2700 2701 while(cc->executing_dma_flag){ <--- 追加 2702 cv_wait(&cc->cv,&cc->mutex); <--- 追加 2703 } <--- 追加 2704 2705 mutex_exit(&cc->mutex); <--- 追加 : 2708 /* change logichouse */ <--- 追加 2709 /* setup DMA bufer */ <--- 追加 2710 2711 if((ddi_dma_buf_bind_handle(cc->handle, bp , <--- 追加 2712 flags | DDI_DMA_CONSISTENT, DDI_DMA_SLEEP, (caddr_t)0, <--- 追加 2713 &cc->dma_cookie, &cc->ccount) != DDI_DMA_MAPPED)){ <--- 追加 2714 cmn_err(CE_WARN,"cc_strategy: ddi_dma_buf_bind_handle failed"); <--- 追加 2715 bp->b_flags |= B_ERROR; <--- 追加 2716 bp->b_error = EIO; <--- 追加 2717 return bp->b_flags; <--- 追加 2718 } <--- 追加 : 2720 /* <--- 追加 2721 if (ddi_dma_buf_setup(cc->dip, bp, flags, DDI_DMA_SLEEP, NULL, <--- 削除 2722 &dma_lim, &cc->handle) != DDI_DMA_MAPPED) { <--- 削除 2723 bp->b_error |= EIO; <--- 削除 2724 bp->b_flags |= B_ERROR; <--- 削除 2725 return bp->b_flags; <--- 削除 2726 } <--- 削除 2727 */ <--- 追加 : 2729 /* <--- 追加 2730 if (ddi_dma_htoc(cc->handle, NULL, &cc->dma_cookie) != DDI_SUCCESS) { <--- 削除 2731 bp->b_error |= EIO; <--- 削除 2732 bp->b_flags |= B_ERROR; <--- 削除 2733 return bp->b_flags; <--- 削除 2734 } <--- 削除 2735 */ <--- 追加 2736 /* end */ : 2744 /* E.Inoue: from <--- 削除 2745 cmn_err(CE_NOTE," cc_strategy: debug step04-1. --- dma_addr = 0x%x", <--- 削除 2746 dma_addr); <--- 削除 2747 E.Inoue: end */ <--- 削除 2748 2749 /* */ <--- 削除 2750 /* uprintf("count in 32bit=%d\n", cc->dma_cookie.dmac_size); */ <--- 削除 2751 /* <--- 削除 2752 cmn_err(CE_NOTE,"count in 32bit=%d", cc->dma_cookie.dmac_size); <--- 削除 2753 */ <--- 削除 2754 /* */ <--- 削除 : 2748 cc->k->cma = CC_CMA_INIT; /* Initialize memory p ointer <--- 変更 : 2749 cc->k->cmr = mode | (cc->cur_crate << 8); <--- 変更 2750 cc->k->cmr = naf; <--- 変更 2751 cc->k->cmr = -(cc->len & 0xFFFF); /* Max len = 1MWord */ <--- 変更 2752 cc->k->cmr = 0xFFFF; <--- 変更 2753 cc->k->cmr = CC_HALT; <--- 変更 2754 cc->k->cma = CC_CMA_INIT; /* Reset memory pointe r */ <--- 変更 2755 cc->k->maclo = dma_addr & 0xFFFF; /* Set DMA base addres s */ <--- 変更 2756 cc->k->machi = dma_addr >> 16; <--- 変更 2757 cc->k->amr = CC_AMR_INIT; /* Set VME AM code */ <--- 変更 2758 cc->k->mtc = wc; <--- 変更 2759 cc->k->cser = CC_DMA_RESET; /* DMA reset */ <--- 変更 : 2763 cc->k->docr = CC_DOCR_INIT | CC_DMA_READ; <--- 変更 2764 cc->k->sccr = CC_DMA_START; <--- 変更 2765 cc->k->csr |= CC_DMA; /* DMA mode */ <--- 変更 2766 cc->k->csr &= ~CC_WRITE; <--- 変更 : 2770 cc->k->docr = CC_DOCR_INIT | CC_DMA_WRITE; <--- 変更 2771 cc->k->sccr = CC_DMA_START; <--- 変更 2772 cc->k->csr |= CC_DMA; /* DMA mode */ <--- 変更 2773 cc->k->csr |= CC_WRITE; <--- 変更 : 2783 cc->k->cma = cc->now_cma; /* Initialize memo ry pointer <--- 変更 2784 */ 2785 cc->k->maclo = dma_addr & 0xFFFF; /* Set DMA base addres s */ <--- 変更 2786 cc->k->machi = dma_addr >> 16; <--- 変更 2787 cc->k->amr = CC_AMR_INIT; /* Set VME AM code */ <--- 変更 2788 cc->k->mtc = cc->now_wc; <--- 変更 2789 cc->k->cser = CC_DMA_RESET; /* DMA reset */ <--- 変更 : 2791 cc->k->docr = CC_DOCR_INIT | CC_DMA_READ; <--- 変更 2792 cc->k->sccr = CC_DMA_START; <--- 変更 2793 cc->k->csr |= CC_DMA; /* DMA mode */ <--- 変更 2794 cc->k->csr &= ~CC_WRITE; <--- 変更 : 2796 /* E.Inoue: from <--- 変更 2797 cmn_err(CE_NOTE," cc_strategy: debug step05. --- start DMA"); <--- 変更 2798 E.Inoue: end */ <--- 変更 : 2799 cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, CC_TIMEOUT_DMA * hz); <--- 変更 2800 cc->k->csr |= CC_GO; /* Go! */ <--- 変更 2801 cc->k->donc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; <--- 変更 2802 /* E.Inoue: from <--- 削除 2803 cmn_err(CE_NOTE," cc_strategy: debug step07. --- return DMA"); <--- 削除 2804 E.Inoue: end */ <--- 削除 : 2810 camac_b(int unit, u_short mode, u_short naf, int len, int *retlen) <--- 変更 : 2812 register struct cc_device *cc; <--- 追加 2813 register dev_t dev; <--- 変更 2814 /* register struct K_REG *k = cc->k; */ <--- 削除 2815 /* register struct uio *uio = cc->uio; */ <--- 削除 2816 register struct uio *uio; <--- 追加 : 2818 cc = ddi_get_soft_state(cc_state,unit); <--- 追加 2819 2820 /* E.Inoue: from <--- 削除 2821 cmn_err(CE_NOTE," camac_b: debug step01. --- enter camac_b()"); <--- 削除 2822 E.Inoue: end */ <--- 削除 2823 2824 dev = cc->dev; <--- 追加 2825 uio = cc->uio; <--- 追加 : 2860 /* E.Inoue: from <--- 削除 2861 cmn_err(CE_NOTE," camac_b: debug step02. --- call physio()"); <--- 削除 2862 E.Inoue: end */ <--- 削除 : 2861 /* E.Inoue: from <--- 削除 2862 cmn_err(CE_NOTE," camac_b: debug step07. --- return physio()"); <--- 削除 2863 E.Inoue: end */ <--- 削除 : 2869 /* E.Inoue: from <--- 削除 2870 cmn_err(CE_NOTE," camac_b: debug step07. --- return physio()"); <--- 削除 2871 E.Inoue: end */ <--- 削除 : 2870 cc->k->donc = CC_INT_AUTO_CLEAR | intrpri; <--- 変更 2871 cc->camac_qx = cc->k->csr; <--- 変更 : 2873 /* cc->cc_sys_status = cc->bp->b_error; */ <--- 削除 2874 /* E.Inoue: from <--- 削除 2875 cmn_err(CE_NOTE," camac_b: debug step08. --- cc_sys_status = 0x%x", cc->cc_sys_status); <--- 削除 2876 E.Inoue: end */ <--- 削除 : 2901 if ((mode & CC_QSCAN) == 0 || (cc->k->csr & CC_ERR) == 0) { <- 変更 : 2903 cc->retlen = cc->len - cc->k->mtc / 2; /* retlen=number of t ransfer */ <--- 変更 2904 if ((mode & CC_QSCAN) == 0 && (cc->k->csr & CC_ERR) != 0) /* Q-STOP */ <--- 変更 : 2910 cc->retlen = cc->len - cc->k->mtc; <--- 変更 2911 if ((mode & CC_QSCAN) == 0 && (cc->k->csr & CC_ERR) != 0) /* Q-STOP */ <--- 変更 : 2917 /* E.Inoue: from <--- 削除 2918 cmn_err(CE_NOTE," camac_b: debug step09. --- return"); <--- 削除 2919 E.Inoue: end */ <--- 削除 : "cc.c" 2921 行、74843 バイト onlsun1[527]% onlsun1[119]% vi cc.c : 203 "CAMAC driver v1.4x by Y.Takeuchi(T.I.T.)", <--- 変更 : "cc.c" 2921 行、74843 バイト onlsun1[119]% (3-4-8). FORCE-50T-sol2.6/cc.confファイルの整備 onlsun1[83]% diff cc.conf ../tmp1/FORCE-5V-sol2.5/cc.conf onlsun1[84]% cc.confファイルは変更していない。 (3-4-9). FORCE-50T-sol2.6/cc.hファイルの整備 onlsun1[85]% diff cc.h ../tmp1/FORCE-5V-sol2.5/cc.h 11d10 < * 26-JUL-1999 E.Inoue modify CC_START_MESSAGE * 17c16 < "CAMAC device driver V1.4x, 1991-1993 by Y.TAKEUCHI (T.I.T.)" --- > "CAMAC device driver V1.3x, 1991-1993 by Y.TAKEUCHI (T.I.T.)" 21,25c20 < /* E.Inoue: begin */ < /* #define CC_MINPHYS_SIZE 0x10000 */ /* max word count = 64k */ < #define CC_MINPHYS_SIZE 0x1f000 /* max word count = 128k */ < /* E.Inoue: end */ < --- > #define CC_MINPHYS_SIZE 0x10000 /* max word count = 64k */ onlsun1[86]% CAMAC device driver のバージョン番号および、CC_MINPHYS_SIZE を変更 している。 変更後のままにしておく。 (3-4-10). FORCE-50T-sol2.6/cc_common.hファイルの整備 onlsun1[88]% diff cc_common.h ../tmp1/FORCE-5V-sol2.5/cc_common.h onlsun1[89]% cc_common.hファイルは変更していない。 (3-4-11). FORCE-50T-sol2.6/cc_config.hファイルの整備 onlsun1[89]% diff cc_config.h ../tmp1/FORCE-5V-sol2.5/cc_config.h onlsun1[90]% cc_config.hファイルは変更していない。 (3-4-12). FORCE-50T-sol2.6/forlib.cファイルの整備 onlsun1[91]% diff forlib.c ../tmp1/FORCE-5V-sol2.5/forlib.c onlsun1[92]% forlib.cファイルは変更していない。 (3-4-13). FORCE-50T-sol2.6/k2917.hファイルの整備 onlsun1[92]% diff k2917.h ../tmp1/FORCE-5V-sol2.5/k2917.h onlsun1[93]% k2917.hファイルは変更していない。 (3-4-14). FORCE-50T-sol2.6/script/awk1.txtファイルの整備 onlsun1[96]% diff script/awk1.txt ../tmp1/FORCE-5V-sol2.5/script/awk1.txt onlsun1[97]% script/awk1.txtファイルは変更していない。 (3-4-15). FORCE-50T-sol2.6/script/awk2.txtファイルの整備 onlsun1[101]% diff script/awk2.txt ../tmp1/FORCE-5V-sol2.5/script/awk2.txt onlsun1[102]% script/awk2.txtファイルは変更していない。 (3-4-16). FORCE-50T-sol2.6/script/cc_build.gcc.shファイルの整備 onlsun1[102]% diff script/cc_build.gcc.sh ../tmp1/FORCE-5V-sol2.5/script/cc_build.gcc.sh onlsun1[103]% script/cc_build.gcc.shファイルは変更していない。 (3-4-17). FORCE-50T-sol2.6/script/cc_build.shファイルの整備 onlsun1[103]% diff script/cc_build.sh ../tmp1/FORCE-5V-sol2.5/script/cc_build.sh onlsun1[104]% script/cc_build.shファイルは変更していない。 (3-4-18). FORCE-50T-sol2.6/script/cc_link.shファイルの整備 onlsun1[104]% diff script/cc_link.sh ../tmp1/FORCE-5V-sol2.5/script/cc_link.sh onlsun1[105]% script/cc_link.shファイルは変更していない。 (3-4-19). FORCE-50T-sol2.6/script/cc_load.shファイルの整備 onlsun1[105]% diff script/cc_load.sh ../tmp1/FORCE-5V-sol2.5/script/cc_load.sh 5,6d4 < # * 9-Jun-1999 E.Inoue modify for sun4u. < # 19d16 < #echo "ARCH=$ARCH" 22d18 < echo 'sun4d' 25d20 < echo 'sun4m' 28d22 < echo 'sun4c' 31,33d24 < elif [ $ARCH = "sun4u" ]; then < echo 'sun4u' < ./script/cc_link.sh onlsun1[106]% sun4uアーキテクチャ用の記述を追加している。変更後のままにしておく。 (3-4-20). FORCE-50T-sol2.6/script/cc_unload.shファイルの整備 onlsun1[113]% diff script/cc_unload.sh ../tmp1/FORCE-5V-sol2.5/script/cc_unload.sh onlsun1[114]% script/cc_unload.shファイルは変更していない。 (3-4-21). FORCE-50T-sol2.6/READMEファイルの整備 onlsun1[184]% diff README ../tmp1/FORCE-5V-sol2.5/README 1d0 < 26-July-1999 3,4c2 < CAMAC Device Driver on Solaris2.x < Release 1.40-50T --- > CAMAC Device Driver on Soraris2.x Release 1.30-5V 1-July-1997 7c5 < Yasuo Takeuchi (ICRR) --- > Yasuo Takeuchi (ICRR) 9,10c7 < 23-May-1997 modified by Eiji Inoue (KEK) < 26-Jul-1999 modified by Kouji Takahashi(LHS), Eiji Inoue (KEK) --- > 23-May-1997 modified by Eiji Inoue (KEK) 12,19c9,16 < ************************************** < ***** FORCE SPARC CPU-50T VERSION ***** < ************************************** < This distribution is a FORCE SPARC CPU-50T version, and it contains < a CAMAC device driver, a CAMAC library, and three sample programs for < the SPARC SPARC CPU-50T. The CAMAC functions for SPARC/Solaris2 is fully < compatible with those for SPARC/SunOS4, and almost compatible with the CAMAC < drivers on some machines developed at KEK. --- > ************************************** > ***** FORCE SPARC CPU-5V VERSION ***** > ************************************** > This distribution is a FORCE SPARC CPU-5V version, and it contains > a CAMAC device driver, a CAMAC library, and three sample programs for > the SPARC SPARC CPU-5V. The CAMAC functions for SPARC/Solaris2 is fully > compatible with those for SPARC/SunOS4, and almost compatible with the CAMAC > drivers on some machines developed at KEK. 21,24c18,21 < The example programs and the CAMASM/CAMEXE in "camac.sparc-1.22d.tar.gz" < can be probably used. It is available at the following URLs. < http://www-sk.icrr.u-tokyo.ac.jp/~takeuchi/camac/ < ftp://online.kek.jp/pub/kek/camac/ --- > The example programs and the CAMASM/CAMEXE in "camac.sparc-1.22d.tar.gz" > can be probably used. It is available at the following URLs. > http://www-sk.icrr.u-tokyo.ac.jp/~takeuchi/camac/ > ftp://online.kek.jp/pub/kek/camac/ 26,27c23,24 < Any comment about the CAMAC driver on SPARC is welcome. Please send it < via E-mail to "eiji.inoue@kek.jp" and/or "takeuchi@icrr.u-tokyo.ac.jp". --- > Any comment about the CAMAC driver on SPARC is welcome. Please send it > via E-mail to "eiji.inoue@kek.jp" and/or "takeuchi@icrr.u-tokyo.ac.jp". 30,34c27,31 < ************************ < ***** INSTALLATION ***** < ************************ < (0.) connect SPARC CPU-50T, K2917 and K3922, and then install < the VME device driver according to its manual. --- > ************************ > ***** INSTALLATION ***** > ************************ > (0.) connect SPARC CPU-5V, K2917 and K3922, and then install > the VME device driver according to its manual. 36,37c33,34 < (1.) check Makefile and compile. < make --- > (1.) check Makefile and compile. > make 39,42c36,39 < (2.) Reboot your system < shutdown < : < boot -r --- > (2.) Reboot your system > shutdown > : > boot -r 44,47c41,44 < (3.) copy and load CAMAC device driver. < su < make load < exit --- > (3.) copy and load CAMAC device driver. > su > make load > exit 49,51c46,48 < (4.) execute sample programs. < cam1 < cam3 --- > (4.) execute sample programs. > cam1 > cam3 53,56c50,53 < (5.) To remove the CAMAC device driver, type as follows. < su < make unload < exit --- > (5.) To remove the CAMAC device driver, type as follows. > su > make unload > exit 59,67c56,64 < ******************************* < ***** OTHER INFORMATIONS ***** < ******************************* < Hardware & Software: (our environment) < FORCE Computers Inc. SPARC CPU-50T < Solaris2.6 HArdware : 5/98 < VME driver V2.3.1 < Kinetic Systems Corporation K3922-Z1B (CAMAC CC) < K2917-Z1A (VME-CAMAC interface) --- > ******************************* > ***** OTHER INFORMATIONS ***** > ******************************* > Hardware & Software: (our environment) > FORCE Computers Inc. SPARC CPU-5V > Solaris2.5 > VME driver V2.0.2 > Kinetic Systems Corporation K3922-Z1B (CAMAC CC) > K2917-Z1A (VME-CAMAC interface) 69,72c66,69 < History: < v1.40-50T Modified Release v1.30-5V for FORCE SPARC CPU-50T. < This version of CAMAC driver can also be used under < the Server & Diskless Clients system. --- > History: > v1.30-5V Modified Release v1.30 for FORCE SPARC CPU-5V. > The CAMAC single action, LAM interruption, block transfer, > work well. 74,76c71,73 < v1.30-5V Modified Release v1.30 for FORCE SPARC CPU-5V. < The CAMAC single action, LAM interruption, block transfer, < work well. --- > v1.30 test release. > under porting from the CAMAC driver for SPARC/SunOS4 v1.22d > DMA dosen't work well. 78,80c75,79 < v1.30 test release. < under porting from the CAMAC driver for SPARC/SunOS4 v1.22d < DMA dosen't work well. --- > ============================================================================== > BC]Fb B9/M: BEl5~Bg3X1'Ch@~8&5f=j B?@2,1'ChAGN3;R8&5f;\@_ > Yasuo Takeuchi Kamioka Observatory, ICRR, Univ. of Tokyo > TEL:0578-5-9607 FAX:0578-5-2121 E-mail:takeuchi@icrr.u-tokyo.ac.jp > URL: http://www-sk.icrr.u-tokyo.ac.jp/~takeuchi/ 82,101c81,86 < ============================================================================== < 竹内 康雄 東京大学宇宙線研究所 神岡宇宙素粒子研究施設 < Yasuo Takeuchi Kamioka Observatory, ICRR, Univ. of Tokyo < TEL:0578-5-9607 FAX:0578-5-2121 E-mail:takeuchi@icrr.u-tokyo.ac.jp < URL: http://www-sk.icrr.u-tokyo.ac.jp/~takeuchi/ < < 井上 栄二 高エネルギー加速器研究機構 素粒子原子核研究所 < Eiji Inoue High Energy Accelerator Research Organization, < Institute of Particle and Nuclear Studies < TEL:0298-64-1171 FAX:0298-64-2580 E-mail:eiji.inoue@kek.jp < URL: http://www-online.kek.jp/~inoue/ < <   高橋 幸治 株式会社エルエッチエス <   Kouji Takahashi LHS Incorporated, < Technical Support <  TEL:03-5337-2631 FAX:03-5337-2635 E-mail:k_taka@qa2.so-net.ne.jp < URL: http://www.lhs.co.jp/ < < ============================================================================== < --- > B0f>e B1IFs B9b%(%M%k%.!<2CB.4o8&5f5!9= BAGN3;R86;R3K8&5f=j > Eiji Inoue High Energy Accelerator Research Organization, > Institute of Particle and Nuclear Studies > TEL:0298-64-1171 FAX:0298-64-2580 E-mail:eiji.inoue@kek.jp > URL: http://www-online.kek.jp/~inoue/ > ============================================================================== onlsun1[185]% 今回のデバッグについての記述を付加した。 以上、FORCE-50T-sol2.6 の CAMAC配布キットを作る際の変更個所をリスト アップした。 (3-4-22). CAMAC配布キットを作る onlsun1[203]% pwd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5 onlsun1[204]% ls FORCE-50T-sol2.6/ camlib.o cc.new.c* README.euc.bak cc forlib.o cam1* cc.c-Apr-7-1999-ok ktaka/ cam1-1* cc.c-Apr-9-1999-bak libcamac.a cam1-1.c cc.c-Jul-5-1999-tmp out cam1.c-Jun-28-1999-ok cc.c-Jun-28-1999-ok out1 cam1.c.org cc.c-June-23-1999 out2 cam2* cc.c-bak/ out3 cam2.nm cc.c-diff script/ cam3* cc.c-org tmp1/ cam3.c-Jun-28-1999-bak cc.h-Apr-5-1999 cam3.c-org cc.h-org onlsun1[205]% tar cvf FORCE-50T-sol2.6.tar FORCE-50T-sol2.6 a FORCE-50T-sol2.6/ 0K a FORCE-50T-sol2.6/Makefile 2K a FORCE-50T-sol2.6/README 4K a FORCE-50T-sol2.6/cam1.c 2K a FORCE-50T-sol2.6/cam2.f 3K a FORCE-50T-sol2.6/cam3.c 3K a FORCE-50T-sol2.6/camlib.c 10K a FORCE-50T-sol2.6/camlib.h 2K a FORCE-50T-sol2.6/cc.c 74K a FORCE-50T-sol2.6/cc.conf 1K a FORCE-50T-sol2.6/cc.h 3K a FORCE-50T-sol2.6/cc_common.h 3K a FORCE-50T-sol2.6/cc_config.h 1K a FORCE-50T-sol2.6/forlib.c 4K a FORCE-50T-sol2.6/k2917.h 4K a FORCE-50T-sol2.6/script/ 0K a FORCE-50T-sol2.6/script/cc_build.sh 1K a FORCE-50T-sol2.6/script/cc_load.sh 1K a FORCE-50T-sol2.6/script/cc_unload.sh 1K a FORCE-50T-sol2.6/script/cc_build.gcc.sh 1K a FORCE-50T-sol2.6/script/cc_link.sh 1K a FORCE-50T-sol2.6/script/awk1.txt 1K a FORCE-50T-sol2.6/script/awk2.txt 1K onlsun1[206]% gzip FORCE-50T-sol2.6.tar onlsun1[207]% ls FORCE-50T-sol2.6/ cam3.c-org cc.h-org FORCE-50T-sol2.6.tar.gz camlib.o cc.new.c* README.euc.bak cc forlib.o cam1* cc.c-Apr-7-1999-ok ktaka/ cam1-1* cc.c-Apr-9-1999-bak libcamac.a cam1-1.c cc.c-Jul-5-1999-tmp out cam1.c-Jun-28-1999-ok cc.c-Jun-28-1999-ok out1 cam1.c.org cc.c-June-23-1999 out2 cam2* cc.c-bak/ out3 cam2.nm cc.c-diff script/ cam3* cc.c-org tmp1/ cam3.c-Jun-28-1999-bak cc.h-Apr-5-1999 onlsun1[208]% (4). キットの公開 (4-1). 上で作ったキットを online.kek.jp の anonymous ftp のところに置く onlsun1[238]% rlogin online Last login: Mon Jul 26 13:31:29 from onlsun1 Digital UNIX V4.0D (Rev. 878); Tue Oct 6 17:28:37 JST 1998 DIGITAL UNIX Japanese Support V4.0D (rev. 16) 1999年07月26日 15時38分33秒 onlax2.kek.jp> source .login 1999年07月26日 15時38分39秒 onlax2.kek.jp> source .cshrc onlax2.kek.jp[25]% su Password: # csh # pwd /vip/public/ftp/pub/kek/camac # ls -l ディスク上の専有領域の合計 3285 (KBytes) -rw-r--r-- 1 root 10 1173 04月19日 1995 122d_to_e.tar.gz -rw-r--r-- 1 root 10 22160 11月19日 1997 FORCE-5V-sol2.5.tar.gz -rw-r--r-- 1 root 10 2494 12月02日 1994 README -rw-r--r-- 1 root 10 28723 07月14日 16:53 SPARC-status.html -rw-r--r-- 1 root 10 21435 12月13日 1994 camac.sol2-1.30.tar.gz -rw-r--r-- 1 root 10 169539 08月18日 1993 camac.sparc-1.22b.tar.Z -rw-r--r-- 1 root 10 91662 08月18日 1993 camac.sparc-1.22b.tar.gz -rw-r--r-- 1 root 10 198417 08月19日 1993 camac.sparc-1.22c.tar.Z -rw-r--r-- 1 root 10 110755 08月19日 1993 camac.sparc-1.22c.tar.gz -rw-r--r-- 1 root 10 199103 09月04日 1993 camac.sparc-1.22d.tar.Z -rw-r--r-- 1 root 10 110752 09月04日 1993 camac.sparc-1.22d.tar.gz -rw-r--r-- 1 root 10 287493 04月20日 1995 camacv1.01_decs.tar.Z -rw-r--r-- 1 root 10 231505 12月02日 1994 camacv1.01_hprt.tar.Z -rw-r--r-- 1 root 10 132002 12月02日 1994 camacv1.01_hprt.tar.gz -rw-r--r-- 1 root 10 283202 12月02日 1994 camacv1.0_decs.tar.Z -rw-r--r-- 1 root 10 159495 12月02日 1994 camacv1.0_decs.tar.gz -rw-r--r-- 1 root 10 216777 09月13日 1994 camacv1.0_hprt.tar.Z -rw-r--r-- 1 root 10 122114 09月13日 1994 camacv1.0_hprt.tar.gz -rw-r--r-- 1 root 10 87379 11月30日 1994 camlib-docs-1.0.tar.Z -rw-r--r-- 1 root 10 51118 11月30日 1994 camlib-docs-1.0.tar.gz -rw-r--r-- 1 root 10 13589 01月17日 1995 sparc-3ce.tar.gz -rw-r--r-- 1 root 10 233395 08月18日 1993 tdaq-1.00.tar.Z -rw-r--r-- 1 root 10 121288 04月02日 1992 tdaq-1.00.tar.gz -rw-r--r-- 1 root 10 277799 01月20日 1995 vme-3CE.tar.gz # ftp onlsun1 Connected to onlsun1. 220 onlsun1 FTP server (SunOS 5.6) ready. Name (onlsun1:inoue): inoue 331 Password required for inoue. Password: 230 User inoue logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5 250 CWD command successful. ftp> binary 200 Type set to I. ftp> dir 200 PORT command successful. 150 ASCII data connection for /bin/ls (130.87.97.11,2487) (0 bytes). 合計 1568 drwxr-xr-x 7 inoue kek 1024 7月 26日 15:38 . drwxr-xr-x 3 inoue kek 512 7月 16日 10:50 .. drwxr-xr-x 3 inoue kek 512 7月 26日 14:50 FORCE-50T-sol2.6 -rw-r--r-- 1 inoue kek 24125 7月 26日 15:37 FORCE-50T-sol2.6.tar.gz -rw-r--r-- 1 inoue kek 3067 7月 26日 11:41 README.euc.bak -rwxr-xr-x 1 inoue kek 13944 7月 16日 10:47 cam1 -rwxr-xr-x 1 inoue kek 14316 7月 16日 10:47 cam1-1 -rw-r--r-- 1 inoue kek 1645 7月 16日 10:47 cam1-1.c -rw-r--r-- 1 inoue kek 1374 7月 16日 10:47 cam1.c-Jun-28-1999-ok -rw-r--r-- 1 inoue kek 1170 7月 16日 10:47 cam1.c.org -rwxr-xr-x 1 inoue kek 29052 7月 16日 10:47 cam2 -rw-r--r-- 1 inoue kek 16422 7月 16日 10:47 cam2.nm -rwxr-xr-x 1 inoue kek 14476 7月 16日 10:47 cam3 -rw-r--r-- 1 inoue kek 2410 7月 16日 10:47 cam3.c-Jun-28-1999-bak -rw-r--r-- 1 inoue kek 2055 7月 16日 10:47 cam3.c-org -rw-r--r-- 1 inoue kek 9528 7月 16日 10:47 camlib.o -rw-r--r-- 1 inoue kek 55604 7月 16日 10:47 cc -rw-r--r-- 1 inoue kek 73164 7月 16日 10:47 cc.c-Apr-7-1999-ok -rw-r--r-- 1 inoue kek 73498 7月 16日 10:47 cc.c-Apr-9-1999-bak -rw-r--r-- 1 inoue kek 79289 7月 16日 10:47 cc.c-Jul-5-1999-tmp -rw-r--r-- 1 inoue kek 78220 7月 16日 10:47 cc.c-Jun-28-1999-ok -rw-r--r-- 1 inoue kek 74886 7月 16日 10:47 cc.c-June-23-1999 drwxr-xr-x 2 inoue kek 512 7月 16日 10:47 cc.c-bak -rw-r--r-- 1 inoue kek 38320 7月 16日 10:47 cc.c-diff -rw-r--r-- 1 inoue kek 64403 7月 16日 10:47 cc.c-org -rw-r--r-- 1 inoue kek 2861 7月 16日 10:47 cc.h-Apr-5-1999 -rw-r--r-- 1 inoue kek 2748 7月 16日 10:47 cc.h-org -rwxr----- 1 inoue kek 66215 7月 16日 10:47 cc.new.c -rw-r--r-- 1 inoue kek 3480 7月 16日 10:47 forlib.o drwxr-xr-x 10 inoue kek 512 7月 16日 10:47 ktaka -rw-r--r-- 1 inoue kek 13868 7月 16日 10:47 libcamac.a -rw-r--r-- 1 inoue kek 8875 7月 16日 10:47 out -rw-r--r-- 1 inoue kek 9033 7月 16日 10:47 out1 -rw-r--r-- 1 inoue kek 1390 7月 16日 10:47 out2 -rw-r--r-- 1 inoue kek 727 7月 16日 10:47 out3 drwxr-xr-x 2 inoue kek 512 7月 16日 14:59 script drwxr-xr-x 3 inoue kek 512 7月 19日 15:21 tmp1 226 ASCII Transfer complete. ftp> get FORCE-50T-sol2.6.tar.gz 200 PORT command successful. 150 Binary data connection for FORCE-50T-sol2.6.tar.gz (130.87.97.11,2488) (24125 bytes). 226 Binary Transfer complete. 24125 bytes received in 0.067 seconds (3.5e+02 Kbytes/s) ftp> quit 221 Goodbye. # ls -l ディスク上の専有領域の合計 3309 (KBytes) -rw-r--r-- 1 root 10 1173 04月19日 1995 122d_to_e.tar.gz -rw-r--r-- 1 root 10 24125 07月26日 15:43 FORCE-50T-sol2.6.tar.gz -rw-r--r-- 1 root 10 22160 11月19日 1997 FORCE-5V-sol2.5.tar.gz -rw-r--r-- 1 root 10 2494 12月02日 1994 README -rw-r--r-- 1 root 10 28723 07月14日 16:53 SPARC-status.html -rw-r--r-- 1 root 10 21435 12月13日 1994 camac.sol2-1.30.tar.gz -rw-r--r-- 1 root 10 169539 08月18日 1993 camac.sparc-1.22b.tar.Z -rw-r--r-- 1 root 10 91662 08月18日 1993 camac.sparc-1.22b.tar.gz -rw-r--r-- 1 root 10 198417 08月19日 1993 camac.sparc-1.22c.tar.Z -rw-r--r-- 1 root 10 110755 08月19日 1993 camac.sparc-1.22c.tar.gz -rw-r--r-- 1 root 10 199103 09月04日 1993 camac.sparc-1.22d.tar.Z -rw-r--r-- 1 root 10 110752 09月04日 1993 camac.sparc-1.22d.tar.gz -rw-r--r-- 1 root 10 287493 04月20日 1995 camacv1.01_decs.tar.Z -rw-r--r-- 1 root 10 231505 12月02日 1994 camacv1.01_hprt.tar.Z -rw-r--r-- 1 root 10 132002 12月02日 1994 camacv1.01_hprt.tar.gz -rw-r--r-- 1 root 10 283202 12月02日 1994 camacv1.0_decs.tar.Z -rw-r--r-- 1 root 10 159495 12月02日 1994 camacv1.0_decs.tar.gz -rw-r--r-- 1 root 10 216777 09月13日 1994 camacv1.0_hprt.tar.Z -rw-r--r-- 1 root 10 122114 09月13日 1994 camacv1.0_hprt.tar.gz -rw-r--r-- 1 root 10 87379 11月30日 1994 camlib-docs-1.0.tar.Z -rw-r--r-- 1 root 10 51118 11月30日 1994 camlib-docs-1.0.tar.gz -rw-r--r-- 1 root 10 13589 01月17日 1995 sparc-3ce.tar.gz -rw-r--r-- 1 root 10 233395 08月18日 1993 tdaq-1.00.tar.Z -rw-r--r-- 1 root 10 121288 04月02日 1992 tdaq-1.00.tar.gz -rw-r--r-- 1 root 10 277799 01月20日 1995 vme-3CE.tar.gz # (4-2). 上で作ったキットを online.kek.jp の WWW のところに置く onlax2.kek.jp[42]% su Password: # csh # pwd /vip/public/online/public_html/CAMAC # ls -l ディスク上の専有領域の合計 3496 (KBytes) -rw-r--r-- 1 root kek 1173 08月27日 1997 122d_to_e.tar.gz -rw-r--r-- 1 online kek 22160 11月10日 1997 FORCE-5V-sol2.5.tar.gz -rw-r--r-- 1 root kek 2494 08月27日 1997 README.orig lrwxrwxrwx 1 root kek 43 12月25日 1998 SPARC-CPU-status.html -> /people/inoue/public_html/CAMAC/status.html -rw-r--r-- 1 yasu kek 74412 09月18日 1997 camac.linux.2.0.29.b.tar.gz -rw-r--r-- 1 yasu kek 79461 10月13日 1997 camac.linux.2.0.29.c.tar.gz -rw-r--r-- 1 root kek 21435 08月27日 1997 camac.sol2-1.30.tar.gz -rw-r--r-- 1 root kek 169539 08月27日 1997 camac.sparc-1.22b.tar.Z -rw-r--r-- 1 root kek 91662 08月27日 1997 camac.sparc-1.22b.tar.gz -rw-r--r-- 1 root kek 198417 08月27日 1997 camac.sparc-1.22c.tar.Z -rw-r--r-- 1 root kek 110755 08月27日 1997 camac.sparc-1.22c.tar.gz -rw-r--r-- 1 root kek 199103 08月27日 1997 camac.sparc-1.22d.tar.Z -rw-r--r-- 1 root kek 110752 08月27日 1997 camac.sparc-1.22d.tar.gz -rw-r--r-- 1 root kek 287493 08月27日 1997 camacv1.01_decs.tar.Z -rw-r--r-- 1 root kek 231505 08月27日 1997 camacv1.01_hprt.tar.Z -rw-r--r-- 1 root kek 132002 08月27日 1997 camacv1.01_hprt.tar.gz -rw-r--r-- 1 root kek 283202 08月27日 1997 camacv1.0_decs.tar.Z -rw-r--r-- 1 root kek 159495 08月27日 1997 camacv1.0_decs.tar.gz -rw-r--r-- 1 root kek 216777 08月27日 1997 camacv1.0_hprt.tar.Z -rw-r--r-- 1 root kek 122114 08月27日 1997 camacv1.0_hprt.tar.gz -rw-r--r-- 1 root kek 87379 08月27日 1997 camlib-docs-1.0.tar.Z -rw-r--r-- 1 root kek 51118 08月27日 1997 camlib-docs-1.0.tar.gz -rw-r--r-- 1 root kek 13589 08月27日 1997 sparc-3ce.tar.gz -rw-r--r-- 1 root kek 233395 08月27日 1997 tdaq-1.00.tar.Z -rw-r--r-- 1 root kek 121288 08月27日 1997 tdaq-1.00.tar.gz -rw-r--r-- 1 online kek 90256 06月03日 1997 users_guide_v1.ps -rw-r--r-- 1 root kek 277799 08月27日 1997 vme-3CE.tar.gz # ftp onlsun1 Connected to onlsun1. 220 onlsun1 FTP server (SunOS 5.6) ready. Name (onlsun1:inoue): inoue 331 Password required for inoue. Password: 230 User inoue logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /export/home/onlsun1/inoue/workstation/onl50t/CAMAC-Kit/FORCE-5V-sol2.5 250 CWD command successful. ftp> dir FORCE-50T-sol2.6.tar.gz 200 PORT command successful. 150 ASCII data connection for /bin/ls (130.87.97.11,2492) (0 bytes). -rw-r--r-- 1 inoue kek 24125 7月 26日 15:37 FORCE-50T-sol2.6.tar.gz 226 ASCII Transfer complete. ftp> binary 200 Type set to I. ftp> get FORCE-50T-sol2.6.tar.gz 200 PORT command successful. 150 Binary data connection for FORCE-50T-sol2.6.tar.gz (130.87.97.11,2493) (24125 bytes). 226 Binary Transfer complete. 24125 bytes received in 0.029 seconds (8e+02 Kbytes/s) ftp> quit 221 Goodbye. # ls -l ディスク上の専有領域の合計 3520 (KBytes) -rw-r--r-- 1 root kek 1173 08月27日 1997 122d_to_e.tar.gz -rw-r--r-- 1 root kek 24125 07月26日 15:53 FORCE-50T-sol2.6.tar.gz -rw-r--r-- 1 online kek 22160 11月10日 1997 FORCE-5V-sol2.5.tar.gz -rw-r--r-- 1 root kek 2494 08月27日 1997 README.orig lrwxrwxrwx 1 root kek 43 12月25日 1998 SPARC-CPU-status.html -> /people/inoue/public_html/CAMAC/status.html -rw-r--r-- 1 yasu kek 74412 09月18日 1997 camac.linux.2.0.29.b.tar.gz -rw-r--r-- 1 yasu kek 79461 10月13日 1997 camac.linux.2.0.29.c.tar.gz -rw-r--r-- 1 root kek 21435 08月27日 1997 camac.sol2-1.30.tar.gz -rw-r--r-- 1 root kek 169539 08月27日 1997 camac.sparc-1.22b.tar.Z -rw-r--r-- 1 root kek 91662 08月27日 1997 camac.sparc-1.22b.tar.gz -rw-r--r-- 1 root kek 198417 08月27日 1997 camac.sparc-1.22c.tar.Z -rw-r--r-- 1 root kek 110755 08月27日 1997 camac.sparc-1.22c.tar.gz -rw-r--r-- 1 root kek 199103 08月27日 1997 camac.sparc-1.22d.tar.Z -rw-r--r-- 1 root kek 110752 08月27日 1997 camac.sparc-1.22d.tar.gz -rw-r--r-- 1 root kek 287493 08月27日 1997 camacv1.01_decs.tar.Z -rw-r--r-- 1 root kek 231505 08月27日 1997 camacv1.01_hprt.tar.Z -rw-r--r-- 1 root kek 132002 08月27日 1997 camacv1.01_hprt.tar.gz -rw-r--r-- 1 root kek 283202 08月27日 1997 camacv1.0_decs.tar.Z -rw-r--r-- 1 root kek 159495 08月27日 1997 camacv1.0_decs.tar.gz -rw-r--r-- 1 root kek 216777 08月27日 1997 camacv1.0_hprt.tar.Z -rw-r--r-- 1 root kek 122114 08月27日 1997 camacv1.0_hprt.tar.gz -rw-r--r-- 1 root kek 87379 08月27日 1997 camlib-docs-1.0.tar.Z -rw-r--r-- 1 root kek 51118 08月27日 1997 camlib-docs-1.0.tar.gz -rw-r--r-- 1 root kek 13589 08月27日 1997 sparc-3ce.tar.gz -rw-r--r-- 1 root kek 233395 08月27日 1997 tdaq-1.00.tar.Z -rw-r--r-- 1 root kek 121288 08月27日 1997 tdaq-1.00.tar.gz -rw-r--r-- 1 online kek 90256 06月03日 1997 users_guide_v1.ps -rw-r--r-- 1 root kek 277799 08月27日 1997 vme-3CE.tar.gz # ---xxxx ここまでやった(継続中) --- (6). 項目タイトル (6-1). サブ項目タイトル (6-1-1). サブサブ項目タイトル