Jan 26, 2001 FORCE CPU-50T、Solaris 7用 ccドライバ・キットの作成 (リスト処理未対応バージョン) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (http://www-online.kek.jp/~inoue/CAMAC/ onl50t-sol7/Desktop/50t-sol7-kit.txt) 高エネルギー加速器研究機構 素粒子原子核研究所 物理、オンライングループ 井上 栄二 (1). はじめに FORCE SPARC CPU-50Tの CPUボードを使って、Solaris 7 の下で 64ビット対応 の ccドライバの開発を行なった。 基本的な動作は実行できる状況になった ので配布キットを作成する。 (1-1). CPU-50T を使ったデスクトップシステムでの ccドライバの開発 SPARC CPU-50T、Desktop Solaris 7 の下で 64ビット対応の ccドライバの開発 を行った。 この ccドライバの開発では "FORCE-50T-sol2.6" バージョンの ccドライバをベースにして 64ビット・ドライバに適合するように、大幅な 修正を行った。 動作確認をしたのは以下の事項である。 (1). 基本処理 o シングルアクション read/write、および NDT o LAM割り込み処理 o ブロック転送 read/write (2). KEKリスト処理、kineticリスト処理 o まだ作業していない。 注. 基本処理の内、1camacワードのブロック転送 write 動作は現在のところ 使用できません。 2camacワード以上のブロック転送 write 動作は正常に 実行できます。 ブロック転送 read 動作は何の制限も受けることなく 実行できます。 (2). キット作成の元にしたもの キット作りの元にしたものは、今回、SPARC CPU-50Tの下で 64ビット対応の ccドライバの開発に使用した各ファイルである。 開発時に使用した各ファイル は、onl50t のマシンの以下のディレクトリの下にある。 /export/home/onl50t/inoue/CAMAC/FORCE-50T-sol7-kit このディレクトリを、onlsun1 のマシンの、以下のキット作成用ディレクトリ にコピーして、新たなキットを作ることにした。 /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit (2-1). デバッグに使用した各ファイルをキット作成用ディレクトリにコピー onlsun1[39]% pwd /export/home/onlsun1/inoue/workstation/onl50t/Solaris7 onlsun1[40]% rcp -pr onl50t:/export/home/onl50t/inoue/CAMAC/FORCE-50T-sol7-kit CAMAC-Kit onlsun1[41]% cd CAMAC-Kit /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit onlsun1[42]% ls Backup/ cam3* cc64.c-bak Makefile cam3.c cc_common.h Makefile-Nov1-2000 camlib.c cc_config.h Makefile-org camlib.c-org forlib.c Makefile.diff camlib.h forlib.o README camlib.o k2917.h cam1* cc libcamac.a cam1.c cc.c out1 cam2* cc.c-org out2 cam2.f cc.conf out3 cam2a* cc.h out4 cam2a.f cc.h-org out5 cam2b* cc64 script/ cam2b.c cc64.c onlsun1[43]% onlsun1[43]% mkdir FORCE-50T-sol7 onlsun1[44]% ls -l 合計 2174 drwxr-xr-x 4 inoue kek 1024 11月 22日 15:52 Backup/ drwxr-xr-x 2 inoue kek 512 11月 22日 16:03 FORCE-50T-sol7/ -rw-r--r-- 1 inoue kek 2673 11月 22日 15:52 Makefile -rw-r--r-- 1 inoue kek 2363 11月 22日 15:52 Makefile-Nov1-2000 -rw-r--r-- 1 inoue kek 2041 11月 22日 15:52 Makefile-org -rw-r--r-- 1 inoue kek 431 11月 22日 15:52 Makefile.diff -rw-r--r-- 1 inoue kek 3624 11月 22日 15:52 README -rwxr-xr-x 1 inoue kek 20696 11月 22日 15:52 cam1* -rw-r--r-- 1 inoue kek 1170 11月 22日 15:52 cam1.c -rwxr-xr-x 1 inoue kek 93960 11月 22日 15:52 cam2* -rw-r--r-- 1 inoue kek 2336 11月 22日 15:52 cam2.f -rwxr-xr-x 1 inoue kek 95248 11月 22日 15:52 cam2a* -rw-r--r-- 1 inoue kek 2740 11月 22日 15:52 cam2a.f -rwxr-xr-x 1 inoue kek 21600 11月 22日 15:52 cam2b* -rw-r--r-- 1 inoue kek 2225 11月 22日 15:52 cam2b.c -rwxr-xr-x 1 inoue kek 20856 11月 22日 15:52 cam3* -rw-r--r-- 1 inoue kek 2055 11月 22日 15:52 cam3.c -rw-r--r-- 1 inoue kek 9984 11月 22日 15:52 camlib.c -rw-r--r-- 1 inoue kek 9740 11月 22日 15:52 camlib.c-org -rw-r--r-- 1 inoue kek 1415 11月 22日 15:52 camlib.h -rw-r--r-- 1 inoue kek 23104 11月 22日 15:52 camlib.o -rw-r--r-- 1 inoue kek 44476 11月 22日 15:52 cc -rw-r--r-- 1 inoue kek 81531 11月 22日 15:52 cc.c -rw-r--r-- 1 inoue kek 74943 11月 22日 15:52 cc.c-org -rw-r--r-- 1 inoue kek 288 11月 22日 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 11月 22日 15:52 cc.h -rw-r--r-- 1 inoue kek 2931 11月 22日 15:52 cc.h-org -rw-r--r-- 1 inoue kek 48640 11月 22日 15:52 cc64 -rw-r--r-- 1 inoue kek 109655 11月 22日 15:52 cc64.c -rw-r--r-- 1 inoue kek 106493 11月 22日 15:52 cc64.c-bak -rw-r--r-- 1 inoue kek 2288 11月 22日 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 11月 22日 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 11月 22日 15:52 forlib.c -rw-r--r-- 1 inoue kek 5064 11月 22日 15:52 forlib.o -rw-r--r-- 1 inoue kek 4058 11月 22日 15:52 k2917.h -rw-r--r-- 1 inoue kek 29028 11月 22日 15:52 libcamac.a -rw-r--r-- 1 inoue kek 95920 11月 22日 15:52 out1 -rw-r--r-- 1 inoue kek 9307 11月 22日 15:52 out2 -rw-r--r-- 1 inoue kek 105811 11月 22日 15:52 out3 -rw-r--r-- 1 inoue kek 1824 11月 22日 15:52 out4 -rw-r--r-- 1 inoue kek 12916 11月 22日 15:52 out5 drwxr-xr-x 2 inoue kek 512 11月 22日 15:52 script/ onlsun1[45]% 新たな 64ビット camacドライバ・キットは onlsun1のマシンの次の ディレクトリに作る。 /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/ CAMAC-Kit/FORCE-50T-sol7 (3). キットの作成 キット作りは以下の手順で行なう。 まず、今回の開発の元にしたキット、 ftp://online.kek.jp/pub/kek/camac/FORCE-50T-sol2.6.tar.gz に含まれるファイルの一覧を確認する。 次に、これらのファイルに対して 開発後のものを割り当てる。 そして最後に、デバッグ時に各ファイル に書き加えた不必要な記述を削除する。 (3-1). 今回の開発の元にしたキット 今回の開発の元にしたキットに含まれていた各ファイルを確認する。 onl50t[130]% pwd /export/home/onl50t/inoue/CAMAC/tmp/FORCE-50T-sol2.6 onl50t[131]% ls -lR .: total 234 -rw-r--r-- 1 inoue kek 2041 Jul 19 1999 Makefile -rw-r--r-- 1 inoue kek 3624 Jul 26 1999 README -rw-r--r-- 1 inoue kek 1170 Jul 16 1999 cam1.c -rw-r--r-- 1 inoue kek 2295 Jul 16 1999 cam2.f -rw-r--r-- 1 inoue kek 2055 Jul 16 1999 cam3.c -rw-r--r-- 1 inoue kek 9740 Jul 16 1999 camlib.c -rw-r--r-- 1 inoue kek 1415 Jul 16 1999 camlib.h -rw-r--r-- 1 inoue kek 74943 Jul 26 1999 cc.c -rw-r--r-- 1 inoue kek 288 Jul 16 1999 cc.conf -rw-r--r-- 1 inoue kek 2931 Jul 26 1999 cc.h -rw-r--r-- 1 inoue kek 2288 Jul 16 1999 cc_common.h -rw-r--r-- 1 inoue kek 876 Jul 16 1999 cc_config.h -rw-r--r-- 1 inoue kek 3289 Jul 16 1999 forlib.c -rw-r--r-- 1 inoue kek 4058 Jul 16 1999 k2917.h drwxr-xr-x 2 inoue kek 512 Jul 16 1999 script/ ./script: total 14 -rw-r--r-- 1 inoue kek 66 Jul 16 1999 awk1.txt -rw-r--r-- 1 inoue kek 37 Jul 16 1999 awk2.txt -rwxr-xr-x 1 inoue kek 233 Jul 16 1999 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 234 Jul 16 1999 cc_build.sh* -rwxr-xr-x 1 inoue kek 528 Jul 16 1999 cc_link.sh* -rwxr-xr-x 1 inoue kek 808 Jul 16 1999 cc_load.sh* -rwxr-xr-x 1 inoue kek 270 Jul 16 1999 cc_unload.sh* onl50t[132]% (3-2). 今回のデバッグ後のファイル 今回のデバッグ後の各ファイルを確認する。 onlsun1[36]% pwd /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit onlsun1[37]% ls -lR .: 合計 2174 drwxr-xr-x 4 inoue kek 1024 11月 22日 15:52 Backup/ drwxr-xr-x 2 inoue kek 512 11月 22日 16:03 FORCE-50T-sol7/ -rw-r--r-- 1 inoue kek 2673 11月 22日 15:52 Makefile -rw-r--r-- 1 inoue kek 2363 11月 22日 15:52 Makefile-Nov1-2000 -rw-r--r-- 1 inoue kek 2041 11月 22日 15:52 Makefile-org -rw-r--r-- 1 inoue kek 431 11月 22日 15:52 Makefile.diff -rw-r--r-- 1 inoue kek 3624 11月 22日 15:52 README -rwxr-xr-x 1 inoue kek 20696 11月 22日 15:52 cam1* -rw-r--r-- 1 inoue kek 1170 11月 22日 15:52 cam1.c -rwxr-xr-x 1 inoue kek 93960 11月 22日 15:52 cam2* -rw-r--r-- 1 inoue kek 2336 11月 22日 15:52 cam2.f -rwxr-xr-x 1 inoue kek 95248 11月 22日 15:52 cam2a* -rw-r--r-- 1 inoue kek 2740 11月 22日 15:52 cam2a.f -rwxr-xr-x 1 inoue kek 21600 11月 22日 15:52 cam2b* -rw-r--r-- 1 inoue kek 2225 11月 22日 15:52 cam2b.c -rwxr-xr-x 1 inoue kek 20856 11月 22日 15:52 cam3* -rw-r--r-- 1 inoue kek 2055 11月 22日 15:52 cam3.c -rw-r--r-- 1 inoue kek 9984 11月 22日 15:52 camlib.c -rw-r--r-- 1 inoue kek 9740 11月 22日 15:52 camlib.c-org -rw-r--r-- 1 inoue kek 1415 11月 22日 15:52 camlib.h -rw-r--r-- 1 inoue kek 23104 11月 22日 15:52 camlib.o -rw-r--r-- 1 inoue kek 44476 11月 22日 15:52 cc -rw-r--r-- 1 inoue kek 81531 11月 22日 15:52 cc.c -rw-r--r-- 1 inoue kek 74943 11月 22日 15:52 cc.c-org -rw-r--r-- 1 inoue kek 288 11月 22日 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 11月 22日 15:52 cc.h -rw-r--r-- 1 inoue kek 2931 11月 22日 15:52 cc.h-org -rw-r--r-- 1 inoue kek 48640 11月 22日 15:52 cc64 -rw-r--r-- 1 inoue kek 109655 11月 22日 15:52 cc64.c -rw-r--r-- 1 inoue kek 106493 11月 22日 15:52 cc64.c-bak -rw-r--r-- 1 inoue kek 2288 11月 22日 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 11月 22日 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 11月 22日 15:52 forlib.c -rw-r--r-- 1 inoue kek 5064 11月 22日 15:52 forlib.o -rw-r--r-- 1 inoue kek 4058 11月 22日 15:52 k2917.h -rw-r--r-- 1 inoue kek 29028 11月 22日 15:52 libcamac.a -rw-r--r-- 1 inoue kek 95920 11月 22日 15:52 out1 -rw-r--r-- 1 inoue kek 9307 11月 22日 15:52 out2 -rw-r--r-- 1 inoue kek 105811 11月 22日 15:52 out3 -rw-r--r-- 1 inoue kek 1824 11月 22日 15:52 out4 -rw-r--r-- 1 inoue kek 12916 11月 22日 15:52 out5 drwxr-xr-x 2 inoue kek 512 11月 22日 15:52 script/ ./Backup: 合計 6436 -rw-r--r-- 1 inoue kek 2494 11月 22日 15:52 Makefile-a -rw-r--r-- 1 inoue kek 81563 11月 22日 15:52 cc.c-Feb18-bak -rw-r--r-- 1 inoue kek 81531 11月 22日 15:52 cc.c-Jun26 -rw-r--r-- 1 inoue kek 93434 11月 22日 15:52 cc64-Apr24-1 -rw-r--r-- 1 inoue kek 84888 11月 22日 15:52 cc64.c-Apr11 -rw-r--r-- 1 inoue kek 85045 11月 22日 15:52 cc64.c-Apr12 -rw-r--r-- 1 inoue kek 85993 11月 22日 15:52 cc64.c-Apr14 -rw-r--r-- 1 inoue kek 86476 11月 22日 15:52 cc64.c-Apr17 -rw-r--r-- 1 inoue kek 86776 11月 22日 15:52 cc64.c-Apr18 -rw-r--r-- 1 inoue kek 88861 11月 22日 15:52 cc64.c-Apr19 -rw-r--r-- 1 inoue kek 90141 11月 22日 15:52 cc64.c-Apr19-1 -rw-r--r-- 1 inoue kek 91167 11月 22日 15:52 cc64.c-Apr24 -rw-r--r-- 1 inoue kek 96025 11月 22日 15:52 cc64.c-Apr25 -rw-r--r-- 1 inoue kek 81563 11月 22日 15:52 cc64.c-Feb16 -rw-r--r-- 1 inoue kek 83198 11月 22日 15:52 cc64.c-Feb18-bak -rw-r--r-- 1 inoue kek 83884 11月 22日 15:52 cc64.c-Feb25 -rw-r--r-- 1 inoue kek 105902 11月 22日 15:52 cc64.c-Jun26 -rw-r--r-- 1 inoue kek 105768 11月 22日 15:52 cc64.c-Jun6 -rw-r--r-- 1 inoue kek 105878 11月 22日 15:52 cc64.c-Jun9-2byte-diff -rw-r--r-- 1 inoue kek 84245 11月 22日 15:52 cc64.c-Mar1 -rw-r--r-- 1 inoue kek 96764 11月 22日 15:52 cc64.c-May1 -rw-r--r-- 1 inoue kek 98247 11月 22日 15:52 cc64.c-May10 -rw-r--r-- 1 inoue kek 98854 11月 22日 15:52 cc64.c-May12 -rw-r--r-- 1 inoue kek 99290 11月 22日 15:52 cc64.c-May17 -rw-r--r-- 1 inoue kek 101462 11月 22日 15:52 cc64.c-May22-tmp -rw-r--r-- 1 inoue kek 102797 11月 22日 15:52 cc64.c-May25 -rw-r--r-- 1 inoue kek 103514 11月 22日 15:52 cc64.c-May25-tmp -rw-r--r-- 1 inoue kek 104273 11月 22日 15:52 cc64.c-May26 -rw-r--r-- 1 inoue kek 98082 11月 22日 15:52 cc64.c-May8 -rw-r--r-- 1 inoue kek 81531 11月 22日 15:52 cc64.c-ZCok -rw-r--r-- 1 inoue kek 89687 11月 22日 15:52 cc64.c-bak -rw-r--r-- 1 inoue kek 90465 11月 22日 15:52 cc64.c-intr-ok -rw-r--r-- 1 inoue kek 4832 11月 22日 15:52 out -rw-r--r-- 1 inoue kek 3652 11月 22日 15:52 out1 -rw-r--r-- 1 inoue kek 14890 11月 22日 15:52 out10 -rw-r--r-- 1 inoue kek 95842 11月 22日 15:52 out2 -rw-r--r-- 1 inoue kek 8805 11月 22日 15:52 out3 -rw-r--r-- 1 inoue kek 13931 11月 22日 15:52 out4 -rw-r--r-- 1 inoue kek 3667 11月 22日 15:52 out5 -rw-r--r-- 1 inoue kek 17598 11月 22日 15:52 out6 -rw-r--r-- 1 inoue kek 12256 11月 22日 15:52 out7 -rw-r--r-- 1 inoue kek 104273 11月 22日 15:52 out8 -rw-r--r-- 1 inoue kek 13813 11月 22日 15:52 out9 drwxr-xr-x 2 inoue kek 512 11月 22日 15:52 script.tmp/ drwxr-xr-x 2 inoue kek 512 11月 22日 15:52 test/ ./Backup/script.tmp: 合計 20 -rw-r--r-- 1 inoue kek 66 11月 22日 15:52 awk1.txt -rw-r--r-- 1 inoue kek 37 11月 22日 15:52 awk2.txt -rwxr-xr-x 1 inoue kek 233 11月 22日 15:52 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 549 11月 22日 15:52 cc_build.sh* -rwxr-xr-x 1 inoue kek 234 11月 22日 15:52 cc_build.sh-org* -rwxr-xr-x 1 inoue kek 833 11月 22日 15:52 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 11月 22日 15:52 cc_load.sh* -rwxr-xr-x 1 inoue kek 808 11月 22日 15:52 cc_load.sh-org* -rwxr-xr-x 1 inoue kek 404 11月 22日 15:52 cc_unload.sh* -rwxr-xr-x 1 inoue kek 270 11月 22日 15:52 cc_unload.sh-org* ./Backup/test: 合計 16 -rwxr-xr-x 1 inoue kek 6376 11月 22日 15:52 t1* -rw-r--r-- 1 inoue kek 84 11月 22日 15:52 t1.c ./FORCE-50T-sol7: 合計 0 ./script: 合計 22 -rw-r--r-- 1 inoue kek 66 11月 22日 15:52 awk1.txt -rw-r--r-- 1 inoue kek 37 11月 22日 15:52 awk2.txt -rwxr-xr-x 1 inoue kek 233 11月 22日 15:52 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 596 11月 22日 15:52 cc_build.sh* -rwxr-xr-x 1 inoue kek 596 11月 22日 15:52 cc_build.sh-Nov2-2000* -rwxr-xr-x 1 inoue kek 234 11月 22日 15:52 cc_build.sh-org* -rwxr-xr-x 1 inoue kek 833 11月 22日 15:52 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 11月 22日 15:52 cc_load.sh* -rwxr-xr-x 1 inoue kek 808 11月 22日 15:52 cc_load.sh-org* -rwxr-xr-x 1 inoue kek 404 11月 22日 15:52 cc_unload.sh* -rwxr-xr-x 1 inoue kek 270 11月 22日 15:52 cc_unload.sh-org* onlsun1[38]% (3-3). 各ファイルの配置 今回のデバッグの元にしたキットの各ファイル対して、デバッグ後のものを 割り当てる。 onlsun1[39]% pwd /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit onlsun1[40]% ls Backup/ cam2b.c cc64.c FORCE-50T-sol7/ cam3* cc64.c-bak Makefile cam3.c cc_common.h Makefile-Nov1-2000 camlib.c cc_config.h Makefile-org camlib.c-org forlib.c Makefile.diff camlib.h forlib.o README camlib.o k2917.h cam1* cc libcamac.a cam1.c cc.c out1 cam2* cc.c-org out2 cam2.f cc.conf out3 cam2a* cc.h out4 cam2a.f cc.h-org out5 cam2b* cc64 script/ onlsun1[41]% (3-3-1). Makefile onlsun1[59]% mv Makefile FORCE-50T-sol7 onlsun1[60]% (3-3-2). README onlsun1[60]% mv README FORCE-50T-sol7 onlsun1[61]% (3-3-3). cam1.c onlsun1[61]% mv cam1.c FORCE-50T-sol7 onlsun1[62]% (3-3-4). cam2.f onlsun1[62]% mv cam2.f FORCE-50T-sol7 onlsun1[63]% (3-3-5). cam3.c onlsun1[63]% mv cam3.c FORCE-50T-sol7 onlsun1[64]% (3-3-6). camlib.c onlsun1[65]% mv camlib.c FORCE-50T-sol7 onlsun1[66]% (3-3-7). camlib.h onlsun1[66]% mv camlib.h FORCE-50T-sol7 onlsun1[67]% (3-3-8). cc.c onlsun1[67]% mv cc.c FORCE-50T-sol7 onlsun1[68]% (3-3-9). cc64.c onlsun1[68]% mv cc64.c FORCE-50T-sol7 onlsun1[69]% (3-3-10). cc.conf onlsun1[70]% mv cc.conf FORCE-50T-sol7 onlsun1[71]% (3-3-11). cc.h onlsun1[72]% mv cc.h FORCE-50T-sol7 onlsun1[73]% (3-3-12). cc_common.h onlsun1[73]% mv cc_common.h FORCE-50T-sol7 onlsun1[74]% (3-3-13). cc_config.h onlsun1[75]% mv cc_config.h FORCE-50T-sol7 onlsun1[76]% (3-3-14). forlib.c onlsun1[77]% mv forlib.c FORCE-50T-sol7 onlsun1[78]% (3-3-15). k2917.h onlsun1[79]% mv k2917.h FORCE-50T-sol7 onlsun1[80]% (3-3-16). script ディレクトリ onlsun1[81]% mkdir FORCE-50T-sol7/script onlsun1[82]% ls script awk1.txt cc_build.sh-Nov2-2000* cc_load.sh-org* awk2.txt cc_build.sh-org* cc_unload.sh* cc_build.gcc.sh* cc_link.sh* cc_unload.sh-org* cc_build.sh* cc_load.sh* onlsun1[83]% (3-3-16-A). script ディレクトリの awk1.txt onlsun1[83]% mv script/awk1.txt FORCE-50T-sol7/script onlsun1[84]% (3-3-16-B). script ディレクトリの awk2.txt onlsun1[84]% mv script/awk2.txt FORCE-50T-sol7/script onlsun1[85]% (3-3-16-C). script ディレクトリの cc_build.gcc.sh onlsun1[85]% mv script/cc_build.gcc.sh FORCE-50T-sol7/script onlsun1[86]% (3-3-16-D). script ディレクトリの cc_build.sh onlsun1[86]% mv script/cc_build.sh FORCE-50T-sol7/script onlsun1[87]% (3-3-16-E). script ディレクトリの cc_link.sh onlsun1[87]% mv script/cc_link.sh FORCE-50T-sol7/script onlsun1[88]% (3-3-16-F). script ディレクトリの cc_load.sh onlsun1[88]% mv script/cc_load.sh FORCE-50T-sol7/script onlsun1[89]% (3-3-16-G). script ディレクトリの cc_unload.sh onlsun1[89]% mv script/cc_unload.sh FORCE-50T-sol7/script onlsun1[90]% (3-4). 各ファイル中の記述を添削する ファイルの確認。 onlsun1[95]% pwd /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit/FORCE-50T-sol7 onlsun1[96]% ls -lR .: 合計 488 -rw-r--r-- 1 inoue kek 2673 11月 22日 15:52 Makefile -rw-r--r-- 1 inoue kek 3624 11月 22日 15:52 README -rw-r--r-- 1 inoue kek 1170 11月 22日 15:52 cam1.c -rw-r--r-- 1 inoue kek 2336 11月 22日 15:52 cam2.f -rw-r--r-- 1 inoue kek 2055 11月 22日 15:52 cam3.c -rw-r--r-- 1 inoue kek 9984 11月 22日 15:52 camlib.c -rw-r--r-- 1 inoue kek 1415 11月 22日 15:52 camlib.h -rw-r--r-- 1 inoue kek 81531 11月 22日 15:52 cc.c -rw-r--r-- 1 inoue kek 288 11月 22日 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 11月 22日 15:52 cc.h -rw-r--r-- 1 inoue kek 109655 11月 22日 15:52 cc64.c -rw-r--r-- 1 inoue kek 2288 11月 22日 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 11月 22日 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 11月 22日 15:52 forlib.c -rw-r--r-- 1 inoue kek 4058 11月 22日 15:52 k2917.h drwxr-xr-x 2 inoue kek 512 12月 6日 11:33 script/ ./script: 合計 14 -rw-r--r-- 1 inoue kek 66 11月 22日 15:52 awk1.txt -rw-r--r-- 1 inoue kek 37 11月 22日 15:52 awk2.txt -rwxr-xr-x 1 inoue kek 233 11月 22日 15:52 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 596 11月 22日 15:52 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 11月 22日 15:52 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 11月 22日 15:52 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 11月 22日 15:52 cc_unload.sh* onlsun1[97]% デバッグで変更した個所を確認するために、既存のキット FORCE-5V-sol2.6 を 入手する。 onlsun1[133]% pwd /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit onlsun1[134]% mkdir tmp1 onlsun1[135]% cd tmp1 /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit/tmp1 onlsun1[136]% ftp online.kek.jp Connected to onlax2.kek.jp. 220 onlax2.kek.jp FTP server (Compaq Tru64 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,37041). total 3454 -rw-r--r-- 1 0 10 1173 Apr 19 1995 122d_to_e.tar.gz -rw-r--r-- 1 0 10 89611 Oct 20 16:14 FORCE-50T-sol2.6-list.tar.Z -rw-r--r-- 1 0 10 48627 Oct 20 16:14 FORCE-50T-sol2.6-list.tar.gz -rw-r--r-- 1 0 10 24125 Jul 26 1999 FORCE-50T-sol2.6.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 37083 Oct 27 11:19 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 drwxr-xr-x 2 0 10 512 Jul 24 14:08 doc -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. 2135 bytes received in 0.48 seconds (4.31 Kbytes/s) ftp> binary 200 Type set to I. ftp> get FORCE-50T-sol2.6.tar.gz 200 PORT c200 PORT command successful. ommand succes150 Opening BINARY mode data connection for FORCE-50T-sol2.6.tar.gz (130.87.153.10,37042) (24125 bytes). sful. 226 Transfer complete. local: FORCE-50T-sol2.6.tar.gz remote: FORCE-50T-sol2.6.tar.gz 24125 bytes received in 0.044 seconds (533.23 Kbytes/s) ftp> ?Invalid command ftp> quit 221 Goodbye. onlsun1[137]% onlsun1[137]% ls -l 合計 48 -rw-r--r-- 1 inoue kek 24125 12月 8日 17:13 FORCE-50T-sol2.6.tar.gz onlsun1[138]% gzip -d FORCE-50T-sol2.6.tar.gz onlsun1[139]% ls -l 合計 288 -rw-r--r-- 1 inoue kek 132096 7月 26日 1999年 FORCE-50T-sol2.6.tar onlsun1[140]% tar xvf FORCE-50T-sol2.6.tar x FORCE-50T-sol2.6, 0 bytes, 0 テープブロック x FORCE-50T-sol2.6/Makefile, 2041 bytes, 4 テープブロック x FORCE-50T-sol2.6/README, 3624 bytes, 8 テープブロック x FORCE-50T-sol2.6/cam1.c, 1170 bytes, 3 テープブロック x FORCE-50T-sol2.6/cam2.f, 2295 bytes, 5 テープブロック x FORCE-50T-sol2.6/cam3.c, 2055 bytes, 5 テープブロック x FORCE-50T-sol2.6/camlib.c, 9740 bytes, 20 テープブロック x FORCE-50T-sol2.6/camlib.h, 1415 bytes, 3 テープブロック x FORCE-50T-sol2.6/cc.c, 74943 bytes, 147 テープブロック x FORCE-50T-sol2.6/cc.conf, 288 bytes, 1 テープブロック x FORCE-50T-sol2.6/cc.h, 2931 bytes, 6 テープブロック x FORCE-50T-sol2.6/cc_common.h, 2288 bytes, 5 テープブロック x FORCE-50T-sol2.6/cc_config.h, 876 bytes, 2 テープブロック x FORCE-50T-sol2.6/forlib.c, 3289 bytes, 7 テープブロック x FORCE-50T-sol2.6/k2917.h, 4058 bytes, 8 テープブロック x FORCE-50T-sol2.6/script, 0 bytes, 0 テープブロック x FORCE-50T-sol2.6/script/cc_build.sh, 234 bytes, 1 テープブロック x FORCE-50T-sol2.6/script/cc_load.sh, 808 bytes, 2 テープブロック x FORCE-50T-sol2.6/script/cc_unload.sh, 270 bytes, 1 テープブロック x FORCE-50T-sol2.6/script/cc_build.gcc.sh, 233 bytes, 1 テープブロック x FORCE-50T-sol2.6/script/cc_link.sh, 528 bytes, 2 テープブロック x FORCE-50T-sol2.6/script/awk1.txt, 66 bytes, 1 テープブロック x FORCE-50T-sol2.6/script/awk2.txt, 37 bytes, 1 テープブロック onlsun1[141]% onlsun1[141]% ls -l 合計 290 drwxr-xr-x 3 inoue kek 512 7月 26日 1999年 FORCE-50T-sol2.6/ -rw-r--r-- 1 inoue kek 132096 7月 26日 1999年 FORCE-50T-sol2.6.tar onlsun1[142]% cd FORCE-50T-sol2.6 /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit/tmp1/FORCE-50T-sol2.6 onlsun1[143]% ls -l 合計 234 -rw-r--r-- 1 inoue kek 2041 7月 19日 1999年 Makefile -rw-r--r-- 1 inoue kek 3624 7月 26日 1999年 README -rw-r--r-- 1 inoue kek 1170 7月 16日 1999年 cam1.c -rw-r--r-- 1 inoue kek 2295 7月 16日 1999年 cam2.f -rw-r--r-- 1 inoue kek 2055 7月 16日 1999年 cam3.c -rw-r--r-- 1 inoue kek 9740 7月 16日 1999年 camlib.c -rw-r--r-- 1 inoue kek 1415 7月 16日 1999年 camlib.h -rw-r--r-- 1 inoue kek 74943 7月 26日 1999年 cc.c -rw-r--r-- 1 inoue kek 288 7月 16日 1999年 cc.conf -rw-r--r-- 1 inoue kek 2931 7月 26日 1999年 cc.h -rw-r--r-- 1 inoue kek 2288 7月 16日 1999年 cc_common.h -rw-r--r-- 1 inoue kek 876 7月 16日 1999年 cc_config.h -rw-r--r-- 1 inoue kek 3289 7月 16日 1999年 forlib.c -rw-r--r-- 1 inoue kek 4058 7月 16日 1999年 k2917.h drwxr-xr-x 2 inoue kek 512 7月 16日 1999年 script/ onlsun1[144]% onlsun1[151]% pwd /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit/FORCE-50T-sol7 onlsun1[152]% ls -l 合計 488 -rw-r--r-- 1 inoue kek 2673 11月 22日 15:52 Makefile -rw-r--r-- 1 inoue kek 3624 11月 22日 15:52 README -rw-r--r-- 1 inoue kek 1170 11月 22日 15:52 cam1.c -rw-r--r-- 1 inoue kek 2336 11月 22日 15:52 cam2.f -rw-r--r-- 1 inoue kek 2055 11月 22日 15:52 cam3.c -rw-r--r-- 1 inoue kek 9984 11月 22日 15:52 camlib.c -rw-r--r-- 1 inoue kek 1415 11月 22日 15:52 camlib.h -rw-r--r-- 1 inoue kek 81531 11月 22日 15:52 cc.c -rw-r--r-- 1 inoue kek 288 11月 22日 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 11月 22日 15:52 cc.h -rw-r--r-- 1 inoue kek 109655 11月 22日 15:52 cc64.c -rw-r--r-- 1 inoue kek 2288 11月 22日 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 11月 22日 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 11月 22日 15:52 forlib.c -rw-r--r-- 1 inoue kek 4058 11月 22日 15:52 k2917.h drwxr-xr-x 2 inoue kek 512 12月 6日 11:33 script/ onlsun1[153]% onlsun1[153]% ls -l ../tmp1/FORCE-50T-sol2.6 合計 234 -rw-r--r-- 1 inoue kek 2041 7月 19日 1999年 Makefile -rw-r--r-- 1 inoue kek 3624 7月 26日 1999年 README -rw-r--r-- 1 inoue kek 1170 7月 16日 1999年 cam1.c -rw-r--r-- 1 inoue kek 2295 7月 16日 1999年 cam2.f -rw-r--r-- 1 inoue kek 2055 7月 16日 1999年 cam3.c -rw-r--r-- 1 inoue kek 9740 7月 16日 1999年 camlib.c -rw-r--r-- 1 inoue kek 1415 7月 16日 1999年 camlib.h -rw-r--r-- 1 inoue kek 74943 7月 26日 1999年 cc.c -rw-r--r-- 1 inoue kek 288 7月 16日 1999年 cc.conf -rw-r--r-- 1 inoue kek 2931 7月 26日 1999年 cc.h -rw-r--r-- 1 inoue kek 2288 7月 16日 1999年 cc_common.h -rw-r--r-- 1 inoue kek 876 7月 16日 1999年 cc_config.h -rw-r--r-- 1 inoue kek 3289 7月 16日 1999年 forlib.c -rw-r--r-- 1 inoue kek 4058 7月 16日 1999年 k2917.h drwxr-xr-x 2 inoue kek 512 7月 16日 1999年 script/ onlsun1[154]% (3-4-1). FORCE-50T-sol7/Makefileファイルの整備 Makefileファイルの修正個所の確認 onlsun1[157]% diff Makefile ../tmp1/FORCE-50T-sol2.6/Makefile 2,3d1 < # Makefile-a < # 18d15 < #CFLAGS = -O 27c24 < all : cc libcamac.a cam1 cam2 cam3 cam2a cam2b --- > all : cc libcamac.a cam1 cam2 cam3 30,31c27 < #cc : cc.c < cc : cc.c cc64.c --- > cc : cc.c 34,35c30 < # rm -f cc.o < rm -f cc.o cc64.o --- > rm -f cc.o 50,51c45 < # $(CC) $(CFLAGS) -c camlib.c -o $@ -I. < $(CC) -xarch=v9 $(CFLAGS) -c camlib.c -o $@ -I. --- > $(CC) $(CFLAGS) -c camlib.c -o $@ -I. 54,55c48 < # $(CC) $(CFLAGS) -c forlib.c -o $@ -I. < $(CC) -xarch=v9 $(CFLAGS) -c forlib.c -o $@ -I. --- > $(CC) $(CFLAGS) -c forlib.c -o $@ -I. 60,61c53 < # $(CC) $(CFLAGS) cam1.c -o cam1 $(CLIB) < $(CC) -xarch=v9 $(CFLAGS) cam1.c -o cam1 $(CLIB) --- > $(CC) $(CFLAGS) cam1.c -o cam1 $(CLIB) 64,65c56 < # $(FC) $(FFLAGS) cam2.f -o cam2 $(CLIB) < $(FC) -xarch=v9 $(FFLAGS) cam2.f -o cam2 $(CLIB) --- > $(FC) $(FFLAGS) cam2.f -o cam2 $(CLIB) 67,76d57 < cam2a : cam2a.f < # $(FC) $(FFLAGS) cam2a.f -o cam2a $(CLIB) < $(FC) -xarch=v9 $(FFLAGS) cam2a.f -o cam2a $(CLIB) < < < cam2b : cam2b.c < # $(FC) $(FFLAGS) cam2b.c -o cam2b $(CLIB) < $(CC) -xarch=v9 $(CFLAGS) cam2b.c -o cam2b $(CLIB) < < 78,79c59 < # $(CC) $(CFLAGS) cam3.c -o cam3 $(CLIB) < $(CC) -xarch=v9 $(CFLAGS) cam3.c -o cam3 $(CLIB) --- > $(CC) $(CFLAGS) cam3.c -o cam3 $(CLIB) 94a75 > \rm -f cc *.o libcamac.a cam1 cam2 cam3 *~ core 96,97d76 < # \rm -f cc *.o libcamac.a cam1 cam2 cam3 *~ core < \rm -f cc cc64 *.o libcamac.a cam1 cam2 cam2a cam3 *~ core onlsun1[158]% Makefileファイルはデバッグ時に変更を加えている。 (3-4-1-a). FORCE-50T-sol7/Makefileファイルの修正 onlsun1[164]% vi Makefile : 2 # Makefile-64 <--- 追加 3 # : 27 all : cc libcamac.a cam1 cam2 cam3 <--- 修正 : 30 #cc : cc.c <--- 削除 31 cc : cc.c cc64.c <--- 追加 : 34 # rm -f cc.o <--- 削除 35 rm -f cc.o cc64.o <--- 追加 : 48 # $(CC) $(CFLAGS) -c camlib.c -o $@ -I. <--- 削除 49 $(CC) -xarch=v9 $(CFLAGS) -c camlib.c -o $@ -I. <--- 追加 : 51 # $(CC) $(CFLAGS) -c forlib.c -o $@ -I. <--- 削除 52 $(CC) -xarch=v9 $(CFLAGS) -c forlib.c -o $@ -I. <--- 追加 : 56 # $(CC) $(CFLAGS) cam1.c -o cam1 $(CLIB) <--- 削除 57 $(CC) -xarch=v9 $(CFLAGS) cam1.c -o cam1 $(CLIB)<--- 追加 : 59 # $(FC) $(FFLAGS) cam2.f -o cam2 $(CLIB) <--- 削除 60 $(FC) -xarch=v9 $(FFLAGS) cam2.f -o cam2 $(CLIB)<--- 追加 : 61 cam2a : cam2a.f <--- 削除 62 # $(FC) $(FFLAGS) cam2a.f -o cam2a $(CLIB) <--- 削除 63 $(FC) -xarch=v9 $(FFLAGS) cam2a.f -o cam2a $(CLIB)<--- 削除 64 <--- 削除 65 <--- 削除 66 cam2b : cam2b.c <--- 削除 67 # $(FC) $(FFLAGS) cam2b.c -o cam2b $(CLIB) <--- 削除 68 $(CC) -xarch=v9 $(CFLAGS) cam2b.c -o cam2b $(CLIB)<--- 削除 69 <--- 削除 70 <--- 削除 : 62 # $(CC) $(CFLAGS) cam3.c -o cam3 $(CLIB) <--- 削除 63 $(CC) -xarch=v9 $(CFLAGS) cam3.c -o cam3 $(CLIB)<--- 追加 : 78 # \rm -f cc *.o libcamac.a cam1 cam3 *~ core <--- 削除 79 # \rm -f cc *.o libcamac.a cam1 cam2 cam3 *~ core <--- 削除 80 \rm -f cc cc64 *.o libcamac.a cam1 cam2 cam3 *~ core <--- 修正 : onlsun1[165]% (3-4-2). FORCE-50T-sol2.7/cam1.cファイルの整備 cam1.cファイルの修正個所の確認 onlsun1[76]% diff cam1.c ../tmp1/FORCE-50T-sol2.6/cam1.c onlsun1[77]% cam1.cファイルはデバッグ時に変更は加えていない。 (3-4-3). FORCE-50T-sol2.7/cam2.fファイルの整備 cam2.fファイルの修正個所の確認 onlsun1[77]% diff cam2.f ../tmp1/FORCE-50T-sol2.6/cam2.f 61d60 < ndats(j) = 0 64d62 < ndat(j) = 0 onlsun1[78]% cam2.fファイルはデバッグ時に変更を加えている。 (3-4-3-a). FORCE-50T-sol7/cam2.fファイルの修正 onlsun1[78]% vi cam2.f : 60 print 35, j, ndats(j), ndats(j) 61 ndats(j) = 0 <--- 追加 62 else 63 print 35, j, ndat(j), ndat(j) 64 ndat(j) = 0 <--- 追加 : onlsun1[79]% (3-4-4). FORCE-50T-sol2.7/cam3.cファイルの整備 cam3.cファイルの修正個所の確認 onlsun1[80]% diff cam3.c ../tmp1/FORCE-50T-sol2.6/cam3.c onlsun1[81]% cam3.cファイルはデバッグ時に変更は加えていない。 (3-4-5). FORCE-50T-sol2.7/camlib.cファイルの整備 camlib.cファイルの修正個所の確認 onlsun1[82]% diff camlib.c ../tmp1/FORCE-50T-sol2.6/camlib.c 217,219d216 < /* < printf("*buf = 0x%x, *(buf+1) = 0x%x, *(buf+2) = 0x%x, *(buf+3) = 0x%x\n", *buf, *(buf+1), *(buf+2), *(buf+3)); < */ 234,236d230 < /* < printf("*buf = 0x%x, *(buf+1) = 0x%x, *(buf+2) = 0x%x, *(buf+3) = 0x%x\n", *buf, *(buf+1), *(buf+2), *(buf+3)); < */ onlsun1[83]% camlib.c にはデバッグ時にトレースのためのプリント文を付加している。 これは、キットでは必要ないので削除する。 (3-4-5-a). FORCE-50T-sol7/camlib.cファイルの修正 onlsun1[83]% vi camlib.c : 217 /* <-- 削除 218 printf("*buf = 0x%x, *(buf+1) = 0x%x, *(buf+2) = 0x%x, *(buf+3) = 0x %x\n", *buf, *(buf+1), *(buf+2), *(buf+3)); <-- 削除 219 */ <-- 削除 : 231 /* <-- 削除 232 printf("*buf = 0x%x, *(buf+1) = 0x%x, *(buf+2) = 0x%x, *(buf+3) = 0x %x\n", *buf, *(buf+1), *(buf+2), *(buf+3)); <-- 削除 233 */ <-- 削除 : onlsun1[84]% (3-4-6). FORCE-50T-sol7/camlib.hファイルの整備 camlib.hファイルの修正個所の確認 onlsun1[85]% diff camlib.h ../tmp1/FORCE-50T-sol2.6/camlib.h onlsun1[86]% camlib.hファイルは変更していない。 (3-4-7). FORCE-50T-sol7/cc.cファイルの整備 cc.cファイルの修正個所の確認 onlsun1[87]% diff cc.c ../tmp1/FORCE-50T-sol2.6/cc.c > cc.diff onlsun1[88]% cat cc.diff 102d101 < /* E.Inoue 104,105d102 < end */ < timeout_id_t timeout_id; 138d134 < /* E.Inoue 141,143d136 < end */ < static int cc_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cred_p, < int *rval_p); 149d141 < /* E.Inoue 151,152d142 < end */ < static void cc_timeout(void *unit); 306d295 < /* E.Inoue 308,309d296 < end */ < if (ddi_map_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t)0, (off_t)0)) { 315d301 < /* E.Inoue 317,318d302 < end */ < if (ddi_peek16(dip,(short *)&cc->k->csr,(short *)&value) == DDI_FAILURE) { 330d313 < /* E.Inoue 332,333d314 < end */ < ddi_unmap_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t) 0, (off_t) 0); 339d319 < /* E.Inoue 341,342d320 < end */ < uint16_t value; 359d336 < /* E.Inoue 362,365d338 < end */ < value = (uint16_t)CC_RST; < ddi_poke16((dev_info_t *)dip, (int16_t *)&cc->k->csr, (int16_t)value); < /* E.Inoue 367,368d339 < end */ < ddi_peek16((dev_info_t *)dip, (int16_t *)&cc->k->csr, (int16_t*)&value); 385d355 < /* 389,393d358 < */ < if (ddi_add_intr((dev_info_t *) dip, 0, < (ddi_iblock_cookie_t *) &cc->iblock_cookie, < (ddi_idevice_cookie_t *) NULL, cc_intr, < (caddr_t) instance) != DDI_SUCCESS) { 606,610d570 < cmn_err(CE_NOTE," cc_open: debug step01. --- cc is %lu bytes\n", sizeof(cc)); < cmn_err(CE_NOTE," cc_open: debug step01. --- ddi_get_soft_state(cc_state,unit) is %lu bytes\n", sizeof(ddi_get_soft_state(cc_state,unit))); < */ < < /* 621,626d580 < /* < cmn_err(CE_NOTE," cc_open: debug step02. --- cc->max_branch is %lu bytes\n", sizeof(cc->max_branch)); < cmn_err(CE_NOTE," cc_open: debug step02. --- CC_K_MAX_BRANCH is %lu bytes\n", sizeof(CC_K_MAX_BRANCH)); < cmn_err(CE_NOTE," cc_open: debug step02. --- cc->max_branch= 0x%x\n", cc->max_branch); < */ < 634,635d587 < cmn_err(CE_NOTE," cc_open: debug step03. --- CC_INT_AUTO_CLEAR is %lu bytes\n", sizeof(CC_INT_AUTO_CLEAR)); < cmn_err(CE_NOTE," cc_open: debug step03. --- intrpri is %lu bytes\n", sizeof(intrpri)); 711,716d662 < cmn_err(CE_NOTE," cc_write: debug step01. --- cc->mode is %lu bytes\n", sizeof(cc->mode)); < cmn_err(CE_NOTE," cc_write: debug step01. --- cc->mode = 0x%x \n", cc->mode); < < cmn_err(CE_NOTE," cc_write: debug step02. --- cc->naf is %lu bytes\n", sizeof(cc->naf)); < cmn_err(CE_NOTE," cc_write: debug step02. --- cc->naf = 0x%x \n", cc->naf); < 733,740d678 < cmn_err(CE_NOTE," cc_write: debug step03. --- unit is %lu bytes\n", sizeof(unit)); < cmn_err(CE_NOTE," cc_write: debug step03. --- unit = 0x%x \n", unit); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area is %lu bytes\n", sizeof(cc->data_area)); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area = 0x%x \n", cc->data_area); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[0] is %lu bytes\n", sizeof(cc->data_area[0])); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[0] = 0x%x \n", cc->data_area[0]); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[1] = 0x%x \n", cc->data_area[1]); < 742,748c680 < < cmn_err(CE_NOTE," cc_write: debug step04. --- mode is %lu bytes\n", sizeof(mode)); < cmn_err(CE_NOTE," cc_write: debug step04. --- mode = 0x%x \n", mode); < cmn_err(CE_NOTE," cc_write: debug step04. --- CC_BIT16 is %lu bytes\n", sizeof(CC_BIT16)); < cmn_err(CE_NOTE," cc_write: debug step04. --- CC_BIT16 = 0x%x \n", CC_BIT16); < < if ((mode & (uint16_t)CC_BIT16) == 0) --- > if ((mode & CC_BIT16) == 0) 756,757c688 < cmn_err(CE_NOTE," cc_write: debug step05. --- camac write"); < if ((mode & (uint16_t)CC_BIT16) == 0) --- > if ((mode & CC_BIT16) == 0) 763,770d693 < cmn_err(CE_NOTE," cc_write: debug step06. --- unit is %lu bytes\n", sizeof(unit)); < cmn_err(CE_NOTE," cc_write: debug step06. --- unit = 0x%x \n", unit); < cmn_err(CE_NOTE," cc_write: debug step06. --- mode is %lu bytes\n", sizeof(mode)); < cmn_err(CE_NOTE," cc_write: debug step06. --- mode = 0x%x \n", mode); < cmn_err(CE_NOTE," cc_write: debug step06. --- naf is %lu bytes\n", sizeof(naf)); < cmn_err(CE_NOTE," cc_write: debug step06. --- naf = 0x%x \n", naf); < cmn_err(CE_NOTE," cc_write: debug step06. --- cc->data_area[0] is %lu bytes\n", sizeof(cc->data_area[0])); < cmn_err(CE_NOTE," cc_write: debug step06. --- cc->data_area[0] = 0x%x \n", cc->data_area[0]); 942,943d864 < cc_timeout(void *unit) < /* E.Inoue 945d865 < end */ 951d870 < /* E.Inoue 953,954d871 < end */ < cc = ddi_get_soft_state(cc_state,(int)unit); 1038,1039d954 < cc_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cred_p, int *rval_p) < /* E.Inoue 1041d955 < end */ 1105d1018 < /* E.Inoue 1107,1108d1019 < end */ < cc->timeout_id = timeout(cc_timeout, (void *)unit, cc->data1 * hz); 2123d2033 < /* E.Inoue 2125d2034 < end */ 2143d2051 < /* E.Inoue 2145d2052 < end */ 2167d2073 < /* E.Inoue 2169d2074 < end */ 2188d2092 < /* E.Inoue 2190d2093 < end */ 2669,2694c2572,2577 < cc->k->csr &= (uint16_t)~CC_WRITE; < < /* E.Inoue < cmn_err(CE_NOTE," camac_s: debug step01. --- cc->k->csr is %lu bytes\n", sizeof(cc->k->csr)); < cmn_err(CE_NOTE," camac_s: debug step01. --- cc->k->csr=0x%x\n", cc->k->csr); < end */ < < cc->k->csr |= (uint16_t)CC_GO; /* Go! */ < < /* E.Inoue < cmn_err(CE_NOTE," camac_s: debug step02. --- cc->k->csr is %lu bytes\n", sizeof(cc->k->csr)); < cmn_err(CE_NOTE," camac_s: debug step02. --- cc->k->csr=0x%x\n", cc->k->csr); < end */ < < while ((cc->k->csr & ((uint16_t)CC_RDY|(uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < (uint16_t)counter++; < < /* E.Inoue < cmn_err(CE_NOTE," camac_s: debug step05. --- "); < end */ < if ((cc->k->csr & (uint16_t)CC_RDY) != 0) { < /* E.Inoue < cmn_err(CE_NOTE," camac_s: debug step04. --- cc->k->csr is %lu bytes\n", sizeof(cc->k->csr)); < cmn_err(CE_NOTE," camac_s: debug step04. --- cc->k->csr & CC_RDY=0x%x\n", cc->k->csr & CC_RDY); < end */ < if ((mode & (uint16_t)CC_BIT16) == 0) { --- > cc->k->csr &= ~CC_WRITE; > cc->k->csr |= CC_GO; /* Go! */ > while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) > counter++; > if ((cc->k->csr & CC_RDY) != 0) { > if ((mode & CC_BIT16) == 0) { 2696,2699d2578 < /* E.Inoue < cmn_err(CE_NOTE," camac_s: debug step03. --- *dat is %lu bytes\n", sizeof(*dat)); < cmn_err(CE_NOTE," camac_s: debug step03. --- *dat=0x%x\n", *dat); < end */ 2701,2704d2579 < /* E.Inoue < cmn_err(CE_NOTE," camac_s: debug step03. --- *(dat+1) is %lu bytes\n", sizeof(*(dat+1))); < cmn_err(CE_NOTE," camac_s: debug step03. --- *(dat+1)=0x%x\n", *(dat+1)); < end */ 2720d2594 < /* E.Inoue 2722,2744c2596 < end */ < cc->k->csr |= (uint16_t)CC_WRITE; < < /* E.Inoue < cmn_err(CE_NOTE," camac_s: debug step06. --- cc->k->csr is %lu bytes\n", sizeof(cc->k->csr)); < cmn_err(CE_NOTE," camac_s: debug step06. --- cc->k->csr=0x%x\n", cc->k->csr); < cmn_err(CE_NOTE," camac_s: debug step06. --- CC_WRITE is %lu bytes\n", sizeof(CC_WRITE)); < cmn_err(CE_NOTE," camac_s: debug step06. --- CC_WRITE=0x%x\n", CC_WRITE); < end */ < < /* E.Inoue < cc->k->csr |= CC_GO; end */ /* Go! */ < < cc->k->csr |= (uint16_t)CC_GO; /* Go! */ < < /* E.Inoue < cmn_err(CE_NOTE," camac_s: debug step06. --- cc->k->csr is %lu bytes\n", sizeof(cc->k->csr)); < cmn_err(CE_NOTE," camac_s: debug step06. --- cc->k->csr=0x%x\n", cc->k->csr); < cmn_err(CE_NOTE," camac_s: debug step06. --- CC_GO is %lu bytes\n", sizeof(CC_GO)); < cmn_err(CE_NOTE," camac_s: debug step06. --- CC_GO=0x%x\n", CC_GO); < end */ < < /* E.Inoue --- > cc->k->csr |= CC_GO; /* Go! */ 2746,2750c2598,2600 < end */ < while ((cc->k->csr & ((uint16_t)CC_RDY|(uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < (uint16_t)counter++; < if ((cc->k->csr & (uint16_t)CC_RDY) != 0) { < if ((mode & (uint16_t)CC_BIT16) == 0) { --- > counter++; > if ((cc->k->csr & CC_RDY) != 0) { > if ((mode & CC_BIT16) == 0) { 2761c2611 < cc->k->csr |= (uint16_t)CC_GO; /* Go! */ --- > cc->k->csr |= CC_GO; /* Go! */ 2765,2766c2615,2616 < while ((cc->k->csr & ((uint16_t)CC_DONE | (uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < (uint16_t)counter++; --- > while ((cc->k->csr & (CC_DONE | CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) > counter++; 2770,2771c2620,2621 < if ((uint16_t)counter >= (uint16_t)CC_TIMEOUT_SINGLE) { < cc->status = (uint16_t)CC_STA_SINGLE_TIMEOUT; --- > if (counter >= CC_TIMEOUT_SINGLE) { > cc->status = CC_STA_SINGLE_TIMEOUT; 2951d2800 < /* E.Inoue 2953,2954d2801 < end */ < cc->timeout_id = timeout(cc_timeout, (void *)unit, CC_TIMEOUT_DMA * hz); onlsun1[89]% cc.cファイルはかなりの個所に変更がある。 不必要な部分を削除する。 (3-4-7-a). FORCE-50T-sol7/cc.cファイルの修正 注. ファイル中のレコードを修正するたびにエディタから抜けているために 行番号が少しずつずれてしまって、見にくくなっている。 32ビットカーネル用のccドライバのデバッグはやっていないので、当面は コンパイル時に問題が起きなければよしという状態にしてある。 従って、 このファイルはデバッグのための出力文が付いたままにしておく。 ここでは なにも修正しない。 (3-4-8). FORCE-50T-sol7/cc.confファイルの整備 onlsun1[46]% diff cc.conf ../tmp1/FORCE-50T-sol2.6/cc.conf onlsun1[47]% cc.confファイルは変更していない。 (3-4-9). FORCE-50T-sol7/cc.hファイルの整備 onlsun1[58]% diff cc.h ../tmp1/FORCE-50T-sol2.6/cc.h 68a69,71 > u_short command; > u_short mode; > u_short naf; 73,75d75 < u_short command; < u_short mode; < u_short naf; onlsun1[59]% 実質的な変更はない。 バージョン番号をアップデートする (3-4-5-a). FORCE-50T-sol7/camlib.cファイルの修正 onlsun1[59]% vi cc.h : 16 #define CC_START_MESSAGE \ 17 "CAMAC device driver V3.0x, 1991-1993 by Y.TAKEUCHI (T.I.T.)" <--- 修正 : onlsun1[60]% (3-4-10). FORCE-50T-sol7/cc64.cファイルの整備 onlsun1[63]% diff cc64.c ../tmp1/FORCE-50T-sol2.6/cc.c > cc64.diff onlsun1[64]% cat cc64.diff 32,38d31 < /* E.Inoue */ < /* < #include < #include < */ < /* #include */ < /* end */ 50d42 < /* E.Inoue 53,90d44 < end */ < /* E.Inoue DMA_ATTR_V0, dma_attr_version */ < /* E.Inoue (unsigned long long)0x0, dma_attr_addr_lo */ < /* E.Inoue (unsigned long long)0xffffffff, dma_attr_addr_hi */ < /* E.Inoue (unsigned long long)0xffffffff, dma_attr_count_max */ < /* E.Inoue 0x4, dma_attr_align */ < /* E.Inoue DEFAULT_BURSTSIZE | BURST32, dma_attr_burstsizes */ < /* E.Inoue 0x4, dma_attr_minxfer */ < /* E.Inoue (unsigned long long)0xffffffff, dma_attr_maxxfer */ < /* E.Inoue (unsigned long long)0xffffffff, dma_attr_seg */ < /* E.Inoue 17, dma_attr_sgllen */ < /* E.Inoue 512, dma_attr_granular */ < /* E.Inoue 0, dma_attr_flags */ < /* E.Inoue < }; < end */ < /* E.Inoue */ < /* < static ddi_dma_attr_t cc_dma_attr = < { < */ < /* DMA_ATTR_V0, */ /* dma_attr_version */ < /* (uint64_t)0x0, */ /* dma_attr_addr_lo */ < /* (uint64_t)0xffffffff, */ /* dma_attr_addr_hi */ < /* (uint64_t)0xffffffff, */ /* dma_attr_count_max */ < /* (uint64_t)0x4, */ /* dma_attr_align */ < /* DEFAULT_BURSTSIZE | BURST32, */ /* dma_attr_burstsizes */ < /* 0x4, */ /* dma_attr_minxfer */ < /* (uint64_t)0xffffffff, */ /* dma_attr_maxxfer */ < /* (uint64_t)0xffffffff, */ /* dma_attr_seg */ < /* 17, */ /* dma_attr_sgllen */ < /* 512, */ /* dma_attr_granular */ < /* 0, */ /* dma_attr_flags */ < /* }; */ < < static ddi_dma_attr_t cc_dma_attr = < { < 92,98c46,49 < /* (uint64_t)0x0, */ /* dma_attr_addr_lo */ < (uint64_t)0x00000000, /* dma_attr_addr_lo */ < (uint64_t)0xffffffff, /* dma_attr_addr_hi */ < (uint64_t)0xffffffff, /* dma_attr_count_max */ < /* (uint64_t)0x4, */ /* dma_attr_align */ < (uint64_t)0x1, /* dma_attr_align */ < /* 0xffff, */ /* dma_attr_burstsizes */ --- > (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 */ 100,106c51,53 < /* 0x4, */ /* dma_attr_minxfer */ < /* 0x1, */ < 0x1, /* dma_attr_minxfer */ < (uint64_t)0xffff, /* dma_attr_maxxfer */ < (uint64_t)0xffffff, /* dma_attr_seg */ < /* 17, */ /* dma_attr_sgllen */ < /* 1, */ --- > 0x4, /* dma_attr_minxfer */ > (unsigned long long)0xffffffff, /* dma_attr_maxxfer */ > (unsigned long long)0xffffffff, /* dma_attr_seg */ 110,111c57 < }; < --- > }; 113d58 < /* end */ 152,154d96 < /* E.Inoue */ < ddi_idevice_cookie_t idevice_cookie; < /* end */ 160d101 < /* E.Inoue 162,163d102 < end */ < timeout_id_t timeout_id; 179,186d117 < /* E.inoue */ < ddi_acc_handle_t kreg_handle; /* access handle to csr */ < ddi_acc_handle_t datar_handle; /* access handle to data */ < struct K_REG *kreg; < uint16_t *datar; < uint16_t dev_kreg; < /* end */ < 204d134 < /* E.Inoue 207,209d136 < end */ < static int cc_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cred_p, < int *rval_p); 212,213c139 < /*static u_int cc_intr(); */ < static u_int cc_intr(caddr_t unit); --- > static u_int cc_intr(); 216d141 < /* E.Inoue 218,219d142 < end */ < static void cc_timeout(void *unit); 258,264c181 < /* begin */ < /* D_NEW | D_MP, */ /* Driver comaptibility flag */ < D_NEW | D_MP | D_64BIT, /* Driver comaptibility flag */ < CB_REV, /* cb_rev */ < nodev, /* async I/O read entry point */ < nodev /* async I/O write entry point */ < /* end */ --- > D_NEW | D_MP /* Driver comaptibility flag */ 277,280c194 < /* E.Inoue < (struct bus_ops *)0, */ /* bus operations */ < NULL, /* bus operations */ < NULL /* devo_power */ --- > (struct bus_ops *)0 /* bus operations */ 382d295 < /* E.Inoue 384,385d296 < end */ < if (ddi_map_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t)0, (off_t)0)) { 391d301 < /* E.Inoue 393,394d302 < end */ < if (ddi_peek16(dip,(short *)&cc->k->csr,(short *)&value) == DDI_FAILURE) { 406d313 < /* E.Inoue 408,409d314 < end */ < ddi_unmap_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t) 0, (off_t) 0); 415d319 < /* E.Inoue 417,418d320 < end */ < uint16_t value; 423,425d324 < /* E.Inoue */ < ddi_device_acc_attr_t dev_attr; < /* end */ 427,431d325 < /* E.Inoue */ < switch(cmd){ < case DDI_ATTACH: < /* end */ < 443d336 < /* E.Inoue 446,449d338 < end */ < value = (uint16_t)CC_RST; < ddi_poke16((dev_info_t *)dip, (int16_t *)&cc->k->csr, (int16_t)value); < /* E.Inoue 451,452d339 < end */ < ddi_peek16((dev_info_t *)dip, (int16_t *)&cc->k->csr, (int16_t*)&value); 468,500d354 < /* E.Inoue */ < /* < * We make no attempt to handle hi-level interruprs. < */ < if (ddi_intr_hilevel(dip, 0)) { < ddi_soft_state_free(cc_state, instance); < cmn_err(CE_CONT, < "cc_attach: high-level interrupts are not supported\n"); < return (DDI_FAILURE); < } < < /* < * Before adding the interrupt, get the interrupt block < * cookie associated with the interrupt specification, to < * be used to initialize the mutex used by the interrupt < * handler. < */ < if (ddi_get_iblock_cookie(dip, 0, < &cc->iblock_cookie) != DDI_SUCCESS) { < ddi_soft_state_free(cc_state, instance); < cmn_err(CE_CONT, < "cc_attach: doesn't get correct iblock_cookie\n"); < return (DDI_FAILURE); < } < < /* initialize MUTEX */ < mutex_init(&cc->mutex, "CAMAC mutex", < MUTEX_DRIVER, (void *)cc->iblock_cookie); < < /* Initialize the conditional variables. */ < cv_init(&cc->cv, "CAMAC cv", CV_DRIVER, NULL); < /* end */ < 502d355 < /* 506,516d358 < */ < /* < if (ddi_add_intr((dev_info_t *) dip, 0, < (ddi_iblock_cookie_t *) &cc->iblock_cookie, < (ddi_idevice_cookie_t *) &cc->idevice_cookie, cc_intr, < (caddr_t) instance) != DDI_SUCCESS) { < */ < if (ddi_add_intr((dev_info_t *) dip, 0, < (ddi_iblock_cookie_t *) &cc->iblock_cookie, < (ddi_idevice_cookie_t *) NULL, cc_intr, < (caddr_t) instance) != DDI_SUCCESS) { 522,525d363 < /* < cmn_err(CE_WARN,"cc_attach: idevice_cookie.idev_vector: 0x%x\n", cc->idevice_cookie.idev_vector); < cmn_err(CE_WARN,"cc_attach: idevice_cookie.idev_priority: 0x%x\n", cc->idevice_cookie.idev_priority); < */ 528d365 < /* E.Inoue 531d367 < end */ 534d369 < /* E.Inoue 536d370 < end */ 546,549d379 < /* E.Inoue */ < /* < * the registers look OK, so let's map them in so we can use them < */ 551,592d380 < /* < * Initialize the device access attributes for the register < * mapping < */ < dev_attr.devacc_attr_version = DDI_DEVICE_ATTR_V0; < dev_attr.devacc_attr_endian_flags = DDI_STRUCTURE_BE_ACC; < dev_attr.devacc_attr_dataorder = DDI_STRICTORDER_ACC; < < /* < * Map in the kreg register < */ < if (ddi_regs_map_setup(dip, 0, (caddr_t *)&cc->kreg, 0, 0, < &dev_attr, &cc->kreg_handle) != DDI_SUCCESS) { < mutex_destroy(&cc->mutex); < ddi_remove_intr(cc->dip, 0, cc->iblock_cookie); < ddi_soft_state_free(cc_state, instance); < cmn_err(CE_WARN,"cc_attach: can't alloc kreg handle"); < return (DDI_FAILURE); < } < < /* < * Map in the data register < */ < /* < if (ddi_regs_map_setup(dip, 2, (caddr_t *)&(pio_p->data), 0, < sizeof (u_char), &dev_acc_attr, &pio_p->data_handle) != < DDI_SUCCESS) { < mutex_destroy(&pio_p->mutex); < ddi_remove_intr(pio_p->dip, 0, pio_p->iblock_cookie); < ddi_soft_state_free(state_head, instance); < ddi_regs_map_free(&pio_p->csr_handle); < return (DDI_FAILURE); < } < */ < < /* < * reset device (including disabling interrupts) < */ < ddi_put16(cc->kreg_handle, &cc->kreg->csr, CC_RST); < < /* end */ < 594,599d381 < < case DDI_PM_RESUME: < case DDI_RESUME: < default: < return (DDI_FAILURE); < } 615,622d396 < < /* E.Inoue */ < /* < * turn off the device (including interrupts) < */ < ddi_put16(cc->kreg_handle, &cc->kreg->csr, CC_RST); < < /* end */ 797,801d570 < cmn_err(CE_NOTE," cc_open: debug step01. --- cc is %lu bytes\n", sizeof(cc)); < cmn_err(CE_NOTE," cc_open: debug step01. --- ddi_get_soft_state(cc_state,unit) is %lu bytes\n", sizeof(ddi_get_soft_state(cc_state,unit))); < */ < < /* 812,817d580 < /* < cmn_err(CE_NOTE," cc_open: debug step02. --- cc->max_branch is %lu bytes\n", sizeof(cc->max_branch)); < cmn_err(CE_NOTE," cc_open: debug step02. --- CC_K_MAX_BRANCH is %lu bytes\n", sizeof(CC_K_MAX_BRANCH)); < cmn_err(CE_NOTE," cc_open: debug step02. --- cc->max_branch= 0x%x\n", cc->max_branch); < */ < 822,824c585 < /* cc->k->csr = CC_RST; */ /* K2917 Reset */ < ddi_put16(cc->kreg_handle, &cc->kreg->csr, (uint16_t)CC_RST); < /* K2917 Reset */ --- > cc->k->csr = CC_RST; /* K2917 Reset */ 826,829c587 < /* < cmn_err(CE_NOTE," cc_open: debug step03. --- CC_INT_AUTO_CLEAR is %lu bytes\n", sizeof(CC_INT_AUTO_CLEAR)); < cmn_err(CE_NOTE," cc_open: debug step03. --- intrpri is %lu bytes\n", sizeof(intrpri)); < */ --- > 831d588 < /* 840,854d596 < */ < /* E.Inoue */ < ddi_put16(cc->kreg_handle, &cc->kreg->lamc, (uint16_t)(CC_INT_AUTO_CLEAR | intrpri)); < ddi_put16(cc->kreg_handle, &cc->kreg->donc, (uint16_t)(CC_INT_AUTO_CLEAR | intrpri)); < ddi_put16(cc->kreg_handle, &cc->kreg->empc, (uint16_t)(CC_INT_AUTO_CLEAR | intrpri)); < ddi_put16(cc->kreg_handle, &cc->kreg->aboc, (uint16_t)(CC_INT_AUTO_CLEAR | intrpri)); < ddi_put16(cc->kreg_handle, &cc->kreg->lamv, (uint16_t)intrvec); < ddi_put16(cc->kreg_handle, &cc->kreg->donv, (uint16_t)intrvec); < ddi_put16(cc->kreg_handle, &cc->kreg->empv, (uint16_t)intrvec); < ddi_put16(cc->kreg_handle, &cc->kreg->abov, (uint16_t)intrvec); < /* end */ < /* < cmn_err(CE_NOTE,"cc_open: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle, < &cc->kreg->lamv)); < */ 856d597 < 890,895c631 < /* E.Inoue */ < register struct iovec *iov = uio->uio_iov; < /* end */ < /* < register struct iovec32 *iov = uio->uio_iov; < */ --- > register struct iovec *iov = uio->uio_iov; 899,904c635 < /* E.Inoue */ < struct iovec iov_save, *iovs = &iov_save; < /* end */ < /* < struct iovec32 iov_save, *iovs = &iov_save; < */ --- > struct iovec iov_save, *iovs = &iov_save; 909d639 < /* cmn_err(CE_NOTE," cc_write enter: \n"); */ 933,943d662 < /* < cmn_err(CE_NOTE," cc_write: debug step01. --- cc->mode is %lu bytes\n", sizeof(cc->mode)); < cmn_err(CE_NOTE," cc_write: debug step01. --- cc->mode = 0x%x \n", cc->mode); < < cmn_err(CE_NOTE," cc_write: debug step02. --- cc->naf is %lu bytes\n", sizeof(cc->naf)); < cmn_err(CE_NOTE," cc_write: debug step02. --- cc->naf = 0x%x \n", cc->naf); < */ < /* < cmn_err(CE_NOTE,"cc_write-enter: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle,&cc->kreg->lamv)); < */ < 960,968d678 < /* < cmn_err(CE_NOTE," cc_write: debug step03. --- unit is %lu bytes\n", sizeof(unit)); < cmn_err(CE_NOTE," cc_write: debug step03. --- unit = 0x%x \n", unit); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area is %lu bytes\n", sizeof(cc->data_area)); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area = 0x%x \n", cc->data_area); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[0] is %lu bytes\n", sizeof(cc->data_area[0])); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[0] = 0x%x \n", cc->data_area[0]); < cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[1] = 0x%x \n", cc->data_area[1]); < */ 970,980c680 < /* < cmn_err(CE_NOTE," cc_write: debug step04. --- mode is %lu bytes\n", sizeof(mode)); < cmn_err(CE_NOTE," cc_write: debug step04. --- mode = 0x%x \n", mode); < cmn_err(CE_NOTE," cc_write: debug step04. --- CC_BIT16 is %lu bytes\n", sizeof(CC_BIT16)); < cmn_err(CE_NOTE," cc_write: debug step04. --- CC_BIT16 = 0x%x \n", CC_BIT16); < */ < /* < cmn_err(CE_NOTE," cc_write: debug step04. --- cc->data_area[0] = 0x%x \n", cc->data_area[0]); < cmn_err(CE_NOTE," cc_write: debug step04. --- cc->data_area[1] = 0x%x \n", cc->data_area[1]); < */ < if ((mode & (uint16_t)CC_BIT16) == 0) --- > if ((mode & CC_BIT16) == 0) 988,991c688 < /* < cmn_err(CE_NOTE," cc_write: debug step05. --- camac write"); < */ < if ((mode & (uint16_t)CC_BIT16) == 0) --- > if ((mode & CC_BIT16) == 0) 997,1010d693 < /* < cmn_err(CE_NOTE," cc_write: debug step06. --- unit is %lu bytes\n", sizeof(unit)); < cmn_err(CE_NOTE," cc_write: debug step06. --- unit = 0x%x \n", unit); < cmn_err(CE_NOTE," cc_write: debug step06. --- mode is %lu bytes\n", sizeof(mode)); < cmn_err(CE_NOTE," cc_write: debug step06. --- mode = 0x%x \n", mode); < cmn_err(CE_NOTE," cc_write: debug step06. --- naf is %lu bytes\n", sizeof(naf)); < cmn_err(CE_NOTE," cc_write: debug step06. --- naf = 0x%x \n", naf); < cmn_err(CE_NOTE," cc_write: debug step06. --- cc->data_area[0] is %lu bytes\n", sizeof(cc->data_area[0])); < cmn_err(CE_NOTE," cc_write: debug step06. --- cc->data_area[0] = 0x%x \n", cc->data_area[0]); < */ < /* < cmn_err(CE_NOTE,"cc_write: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamv)); < */ < 1025,1031d707 < /* < cmn_err(CE_NOTE," cc_write: CC_CMD_DOBLOCK enter: \n"); < cmn_err(CE_NOTE," cc_write: cc->kreg->donv = 0x%x \n", ddi_get16(cc->kreg_handle,&cc->kreg->donv)); < */ < /* < cmn_err(CE_NOTE," cc_write: cc->kreg->csr = 0x%x \n", ddi_get16(cc->kreg_handle,&cc->kreg->csr)); < */ 1037,1041d712 < copyin((caddr_t)iov->iov_base, (caddr_t)cc->data_area, sizeof(u_short)); < /* < cmn_err(CE_NOTE," cc_write: CC_CMD_DOBLOCK: iov->iov_base = 0x%x\n", iov->iov_base); < cmn_err(CE_NOTE," cc_write: CC_CMD_DOBLOCK: contents of iov->iov_base = 0x%x\n", cc->data_area[0]); < */ 1060d730 < /* cmn_err(CE_NOTE," cc_write: return camac_b(). \n"); */ 1067,1071d736 < /* < cmn_err(CE_NOTE," cc_write: cc->interrupt = 0x%x \n", cc->interrupt); < cmn_err(CE_NOTE," cc_write: cc->kreg->donv = 0x%x \n", ddi_get16(cc->kreg_handle,&cc->kreg->donv)); < cmn_err(CE_NOTE," cc_write: cc->kreg->csr = 0x%x \n", ddi_get16(cc->kreg_handle,&cc->kreg->csr)); < */ 1200,1201d864 < cc_timeout(void *unit) < /* E.Inoue 1203d865 < end */ 1209d870 < /* E.Inoue 1211,1212d871 < end */ < cc = ddi_get_soft_state(cc_state,(int)unit); 1243,1244c902 < /* cc_intr(int unit) */ < cc_intr(caddr_t unit) --- > cc_intr(int unit) 1249,1254d906 < /* E.Inoue */ < register struct uio *uio; < /* end */ < /* E.Inoue */ < uint_t chk_done; < /* end */ 1255a908 > cc = ddi_get_soft_state(cc_state,unit); 1257,1258d909 < cc = (struct cc_device *)ddi_get_soft_state(cc_state,(u_int)unit); < 1261,1297d911 < /* < cmn_err(CE_NOTE," cc_intr: debug step01. enter intrrupt service routine "); < */ < /* < cmn_err(CE_NOTE," cc_intr: enter intrrupt: cc->kreg->csr = 0x%x\n", cc->kreg->csr); < cmn_err(CE_NOTE," cc_intr: cc->kreg->mtc(wc) = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->mtc)); < cmn_err(CE_NOTE," cc_intr: cc->kreg->cwc = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cwc)); < cmn_err(CE_NOTE," cc_intr: cc->kreg->cser = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cser)); < */ < /* < cmn_err(CE_NOTE," cc_intr: cc->kreg->dlr(data low) = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->dlr)); < cmn_err(CE_NOTE," cc_intr: cc->kreg->dhr(data high) = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->dhr)); < */ < < /* E.Inoue */ < uio = cc->uio; < /* < cmn_err(CE_NOTE," cc_intr: 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); < */ < /* end */ < < /* < cmn_err(CE_NOTE," cc_intr: cc->dma_cookie.dmac_address = 0x%x \n", cc->dma_cookie.dmac_address); < copyin((caddr_t)cc->dma_cookie.dmac_address, (caddr_t)cc->data_area, 10*sizeof(u_short)); < cmn_err(CE_NOTE," cc_intr: contents of cc->dma_cookie.dmac_address =0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area[0],cc->data_area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->data_area[5],cc->data_area[6],cc->data_area[7],cc->data_area[8],cc->data_area[9]); < cmn_err(CE_NOTE," cc_intr: cc->kreg->maclo = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->maclo)); < cmn_err(CE_NOTE," cc_intr: cc->kreg->machi = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->machi)); < < copyin((caddr_t)uio->uio_iov->iov_base, (caddr_t)cc->data_area, 10*sizeof(u_short)); < cmn_err(CE_NOTE," cc_intr: contents of uio->uio_iov->iov_base =0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area[0],cc->data_area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->data_area[5],cc->data_area[6],cc->data_area[7],cc->data_area[8],cc->data_area[9]); < */ 1299,1300d912 < < /* E.Inoue 1309,1330d920 < end */ < /* E.Inoue */ < if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & (uint16_t)CC_LAM) != 0) < { < cc->interrupt |= CC_INT_LAM; < /* cmn_err(CE_NOTE," cc_intr: CC_INT_LAM: step02."); */ < } < if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & (uint16_t)CC_DONE) != 0) < { < cc->interrupt |= CC_INT_DONE; < /* cmn_err(CE_NOTE," cc_intr: CC_INT_DONE: step02."); */ < } < if ((ddi_get16(cc->kreg_handle, &cc->kreg->empc) & (uint16_t)CC_INT_ENABLE) == 0) < { < cc->interrupt |= CC_INT_EMPTY; < /* cmn_err(CE_NOTE," cc_intr: CC_INT_EMPTY: step02."); */ < } < if ((ddi_get16(cc->kreg_handle, &cc->kreg->aboc) & (uint16_t)CC_INT_ENABLE) == 0) < { < cc->interrupt |= CC_INT_ABORT; < /* cmn_err(CE_NOTE," cc_intr: CC_INT_ABORT: step02."); */ < } 1332,1333d921 < /* end */ < 1336,1339d923 < /* < cmn_err(CE_NOTE," cc_intr: size of ddi_get16(cc->kreg_handle, &cc->kreg->csr) is %lu bytes\n", sizeof(ddi_get16(cc->kreg_handle, &cc->kreg->csr))); < cmn_err(CE_NOTE," cc_intr: size of CC_DONE is %lu bytes\n", sizeof(CC_DONE)); < */ 1341,1355d924 < /* E.Inoue */ < chk_done = 0x7ffffff; /* about 10 sec */ < while (chk_done-- > 0){ < if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & CC_DONE) != 0){ < cc->interrupt |= CC_INT_DONE; < break; < } < } < < /* end */ < /* < cmn_err(CE_NOTE," cc_intr: freeze check: step01."); < */ < < 1365d933 < /* cmn_err(CE_NOTE," cc_intr: cc->executing_dma_flag != 0: step03."); */ 1368d935 < 1379,1383d945 < /* cmn_err(CE_NOTE," cc_intr: cc->interrupt != 0: step04."); */ < /* < cmn_err(CE_NOTE," cc_intr: exit intrrupt: cc->kreg->csr = 0x%x\n", cc->kreg->csr); < cmn_err(CE_NOTE," cc_intr: cc->kreg->mtc(wc) = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->mtc)); < */ 1393,1394d954 < cc_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cred_p, int *rval_p) < /* E.Inoue 1396d955 < end */ 1431,1434d989 < /* < cmn_err(CE_NOTE,"CCIOC_SET_BRANCH: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle,&cc->kreg->lamv)); < */ < 1443,1445d997 < /* < cmn_err(CE_NOTE,"CCIOC_SET_CRATE: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle,&cc->kreg->lamv)); < */ 1449d1000 < 1451c1002 < mutex_enter(&cc->mutex); /* start MUTEX */ --- > mutex_enter(&cc->mutex); /* start MUTEX */ 1453d1003 < /* E.Inoue 1455,1462c1005,1008 < end */ < /* E.Inoue */ < cc->dev_kreg = (uint16_t)CC_INT_AUTO_CLEAR | (uint16_t)CC_INT_ENABLE | intrpri; < ddi_put16(cc->kreg_handle, &cc->kreg->lamc, cc->dev_kreg); < /* end */ < /* E.Inoue */ < /* < cmn_err(CE_NOTE," cc->kreg->lamc = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamc)); --- > > /* lock out clock */ > /* by E.Inoue > s = spl5(); 1464,1466c1010,1017 < /* < cc->dev_kreg = 0xff; < ddi_put16(cc->kreg_handle, &cc->kreg->lamv, cc->dev_kreg); --- > if (cc->interrupt & CC_INT_LAM) { > cc->interrupt &= ~CC_INT_LAM; > return 0; > } > > /* mutex_enter(&cc->mutex); */ /* start MUTEX */ > /* E.Inoue > cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, data * hz); 1467a1019,1022 > cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, cc->data1 * hz); > /* mutex_enter(&cc->mutex); */ /* start MUTEX */ > > /* wait interrupt */ 1469c1024,1026 < ddi_put16(cc->kreg_handle, &cc->kreg->lamv, 0xff); --- > cv_timedwait(&cc->cv, &cc->mutex, timeout); > if (cc->interrupt == 0) > cc->interrupt |= CC_INT_TIMEOUT; 1471,1474c1028,1033 < /* < cmn_err(CE_NOTE,"cc_ioctl: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamv)); < */ < /* end */ --- > 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 */ 1476,1490c1035,1036 < if (cc->interrupt & CC_INT_LAM) { < cc->interrupt &= ~CC_INT_LAM; < return 0; < } < cc->timeout_id = timeout(cc_timeout, (void *)unit, cc->data1 * hz); < < /* wait interrupt */ < if (cv_wait_sig(&cc->cv, &cc->mutex) == 0) { < /* cmn_err(CE_NOTE," cc_ioctl: debug step02. cv_wait_sig() == 0"); */ < untimeout(cc->timeout_id); < mutex_exit(&cc->mutex); /* end MUTEX */ < return EINTR; < } < /* < cmn_err(CE_NOTE," cc_ioctl: debug step03. cv_wait_sig() != 0"); --- > /* by E.Inoue > splx(s); 1492d1037 < mutex_exit(&cc->mutex); /* end MUTEX */ 1494,1500c1039,1045 < 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; 1503,1504c1048,1049 < mutex_enter(&cc->mutex); /* start MUTEX */ < ddi_copyin((caddr_t)arg,(caddr_t)&cc->data1,sizeof(cc->data1),flag); --- > mutex_enter(&cc->mutex); /* start MUTEX */ > ddi_copyin((caddr_t)arg,(caddr_t)&cc->data1,sizeof(cc->data1),flag); 1508,1513c1053,1058 < camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)&cc->data1); < camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); < sdat |= 0x100; < camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); < mutex_exit(&cc->mutex); /* end MUTEX */ < break; --- > camac_s(unit, CC_BIT24, NAF(30, 13, 17), (u_short *)&cc->data1); > camac_s(unit, CC_BIT16, NAF(30, 0, 1), &sdat); > sdat |= 0x100; > camac_s(unit, CC_BIT16, NAF(30, 0, 17), &sdat); > mutex_exit(&cc->mutex); /* end MUTEX */ > break; 1516,1527c1061,1067 < /* E.Inoue cc->k->lamc = CC_INT_AUTO_CLEAR | intrpri; end */ < /* E.Inoue */ < cc->dev_kreg = (uint16_t)CC_INT_AUTO_CLEAR | intrpri; < ddi_put16(cc->kreg_handle, &cc->kreg->lamc, cc->dev_kreg); < /* end */ < 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; < --- > 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; 1552d1091 < /* 1554,1556d1092 < */ < ddi_put16(cc->kreg_handle, &cc->kreg->csr, (uint16_t)CC_RST); < 1559d1094 < /* 1568,1577d1102 < */ < ddi_put16(cc->kreg_handle, &cc->kreg->lamc, (uint16_t)(CC_INT_AUTO_CLEAR | intrpri)); < ddi_put16(cc->kreg_handle, &cc->kreg->donc, (uint16_t)(CC_INT_AUTO_CLEAR | intrpri)); < ddi_put16(cc->kreg_handle, &cc->kreg->empc, (uint16_t)(CC_INT_AUTO_CLEAR | intrpri)); < ddi_put16(cc->kreg_handle, &cc->kreg->aboc, (uint16_t)(CC_INT_AUTO_CLEAR | intrpri)); < ddi_put16(cc->kreg_handle, &cc->kreg->lamv, (uint16_t)intrvec); < ddi_put16(cc->kreg_handle, &cc->kreg->donv, (uint16_t)intrvec); < ddi_put16(cc->kreg_handle, &cc->kreg->empv, (uint16_t)intrvec); < ddi_put16(cc->kreg_handle, &cc->kreg->abov, (uint16_t)intrvec); < 2509d2033 < /* E.Inoue 2511d2034 < end */ 2529d2051 < /* E.Inoue 2531d2052 < end */ 2553d2073 < /* E.Inoue 2555d2074 < end */ 2574d2092 < /* E.Inoue 2576d2093 < end */ 3030d2546 < /* 3035,3039d2550 < */ < ddi_put16(cc->kreg_handle, &cc->kreg->lamc, (uint16_t)CC_INT_AUTO_CLEAR); < ddi_put16(cc->kreg_handle, &cc->kreg->donc, (uint16_t)CC_INT_AUTO_CLEAR); < ddi_put16(cc->kreg_handle, &cc->kreg->empc, (uint16_t)CC_INT_AUTO_CLEAR); < ddi_put16(cc->kreg_handle, &cc->kreg->aboc, (uint16_t)CC_INT_AUTO_CLEAR); 3042,3049c2553,2555 < /* E.Inoue */ < /* cc->k->cma = CC_CMA_INIT; */ /* Initialize memory pointer */ < ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT); < /* Initialize memory pointer */ < /* cc->k->cmr = mode | (cc->cur_crate << 8); */ /* Write command list */ < ddi_put16(cc->kreg_handle, &cc->kreg->cmr, (mode | (uint16_t)(cc->cur_crate << 8))); < /* Write command list */ < /* cc->k->cmr = naf; --- > cc->k->cma = CC_CMA_INIT; /* Initialize memory pointer */ > cc->k->cmr = mode | (cc->cur_crate << 8); /* Write command list */ > cc->k->cmr = naf; 3051,3057c2557 < */ < ddi_put16(cc->kreg_handle, &cc->kreg->cmr, (uint16_t)naf); < ddi_put16(cc->kreg_handle, &cc->kreg->cmr, (uint16_t)CC_HALT); < /* cc->k->cma = CC_CMA_INIT; */ /* Reset memory pointer */ < ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT); < /* Reset memory pointer */ < /* end */ --- > cc->k->cma = CC_CMA_INIT; /* Reset memory pointer */ 3060,3064d2559 < < /* < cmn_err(CE_NOTE,"camac_s: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamv)); < */ < 3077,3110c2572,2577 < /* < cmn_err(CE_NOTE,"camac_s: step2: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamv)); < */ < /* E.Inoue < cc->k->csr &= (uint16_t)~CC_WRITE; < end */ < /* E.Inoue */ < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg &= (uint16_t)~CC_WRITE; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* end */ < /* < cmn_err(CE_NOTE,"camac_s: step3: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamv)); < */ < /* E.Inoue < cc->k->csr |= (uint16_t)CC_GO; end */ /* Go! */ < /* E.Inoue */ < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_GO; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* Go! */ < /* end */ < < /* E.Inoue < while ((cc->k->csr & ((uint16_t)CC_RDY|(uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < end */ < while (((ddi_get16(cc->kreg_handle, &cc->kreg->csr)) & ((uint16_t)CC_RDY|(uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < (uint16_t)counter++; < /* E.Inoue < if ((cc->k->csr & (uint16_t)CC_RDY) != 0) { < end */ < if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & (uint16_t)CC_RDY) != 0) { < if ((mode & (uint16_t)CC_BIT16) == 0) { < /* E.Inoue --- > cc->k->csr &= ~CC_WRITE; > cc->k->csr |= CC_GO; /* Go! */ > while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) > counter++; > if ((cc->k->csr & CC_RDY) != 0) { > if ((mode & CC_BIT16) == 0) { 3113,3118d2579 < end */ < *dat = ddi_get16(cc->kreg_handle, &cc->kreg->dhr) & (uint16_t)0x00FF; < *(dat + 1) = ddi_get16(cc->kreg_handle, &cc->kreg->dlr); < /* < cmn_err(CE_NOTE," camac_s: read data. --- *dat = 0x%x, *(dat + 1) = 0x%x\n", *dat, *(dat + 1)); < */ 3121d2581 < /* E.Inoue 3123,3124d2582 < end */ < *dat = ddi_get16(cc->kreg_handle, &cc->kreg->dlr); 3126,3128d2583 < /* < cmn_err(CE_NOTE,"camac_s: step4: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamv)); < */ 3140,3168c2595,2600 < /* E.Inoue < cc->k->csr |= (uint16_t)CC_WRITE; < end */ < /* E.Inoue */ < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_WRITE; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* end */ < < /* E.Inoue < cc->k->csr |= (uint16_t)CC_GO; end */ /* Go! */ < /* E.Inoue */ < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_GO; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* Go! */ < /* end */ < < /* E.Inoue < while ((cc->k->csr & ((uint16_t)CC_RDY|(uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < end */ < while (((ddi_get16(cc->kreg_handle, &cc->kreg->csr)) & ((uint16_t)CC_RDY|(uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < (uint16_t)counter++; < /* E.Inoue < if ((cc->k->csr & (uint16_t)CC_RDY) != 0) { < end */ < if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & (uint16_t)CC_RDY) != 0) { < if ((mode & (uint16_t)CC_BIT16) == 0) { < /* E.Inoue --- > cc->k->csr |= CC_WRITE; > cc->k->csr |= CC_GO; /* Go! */ > while ((cc->k->csr & (CC_RDY|CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) > counter++; > if ((cc->k->csr & CC_RDY) != 0) { > if ((mode & CC_BIT16) == 0) { 3171,3173d2602 < end */ < ddi_put16(cc->kreg_handle, &cc->kreg->dhr, *dat); < ddi_put16(cc->kreg_handle, &cc->kreg->dlr, *(dat + 1)); 3176d2604 < /* E.Inoue 3178,3179d2605 < end */ < ddi_put16(cc->kreg_handle, &cc->kreg->dlr, *dat); 3185,3192c2611 < /* E.Inoue < cc->k->csr |= (uint16_t)CC_GO; */ /* Go! */ < /* E.Inoue */ < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_GO; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* Go! */ < /* end */ --- > cc->k->csr |= CC_GO; /* Go! */ 3196,3200c2615,2616 < /* < while ((cc->k->csr & ((uint16_t)CC_DONE | (uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < */ < while (((ddi_get16(cc->kreg_handle, &cc->kreg->csr)) & ((uint16_t)CC_DONE | (uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) < (uint16_t)counter++; --- > while ((cc->k->csr & (CC_DONE | CC_ERR)) == 0 && counter < CC_TIMEOUT_SINGLE) > counter++; 3202d2617 < /* 3204,3205d2618 < */ < cc->camac_qx = ddi_get16(cc->kreg_handle, &cc->kreg->csr); 3207,3208c2620,2621 < if ((uint16_t)counter >= (uint16_t)CC_TIMEOUT_SINGLE) { < cc->status = (uint16_t)CC_STA_SINGLE_TIMEOUT; --- > if (counter >= CC_TIMEOUT_SINGLE) { > cc->status = CC_STA_SINGLE_TIMEOUT; 3211,3214d2623 < /* < cmn_err(CE_NOTE,"camac_s-end: cc->kreg->lamv = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->lamv)); < */ < 3261d2669 < /* E.Inoue 3263,3266d2670 < end */ < /* E.Inoue */ < register uint32_t dma_addr; < /* end */ 3272d2675 < /* E.Inoue 3276,3281d2678 < end */ < register uint16_t mode; < register uint16_t naf; < register int wc; < < /* E.Inoue 3283,3286d2679 < end */ < /* E.Inoue */ < register uint_t flags; < /* end */ 3288d2680 < int *d_data; 3292,3294d2683 < /* E.Inoue */ < cc->bp = bp; < /* end */ 3298,3302d2686 < /* < cmn_err(CE_NOTE," cc_strategy: mode = 0x%x \n", mode); < cmn_err(CE_NOTE," cc_strategy: naf = 0x%x \n", naf); < cmn_err(CE_NOTE," cc_strategy: wc = 0x%x \n", wc); < */ 3317,3318d2700 < /* cmn_err(CE_NOTE," cc_strategy: check1. --- unit = 0x%x \n", unit); */ < /* cmn_err(CE_NOTE," cc_strategy: check1. \n"); */ 3326,3327d2707 < /* mutex_exit(&cc->mutex); */ < /* cmn_err(CE_NOTE," cc_strategy: check2. \n"); */ 3333d2712 < /* E.Inoue 3342,3362d2720 < end */ < /* E.Inoue < if((ddi_dma_buf_bind_handle(cc->handle, cc->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"); < cc->bp->b_flags |= B_ERROR; < cc->bp->b_error = EIO; < return cc->bp->b_flags; < } < end */ < /* E.Inoue */ < if((ddi_dma_buf_bind_handle(cc->handle, cc->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"); < cc->bp->b_flags |= B_ERROR; < cc->bp->b_error = EIO; < return cc->bp->b_flags; < } < /* end */ 3386,3417d2743 < /* E.Inoue < dma_addr += 0x8; < end */ < /* < cmn_err(CE_NOTE," cc_strategy: cc->ccount = 0x%x \n", cc->ccount); < cmn_err(CE_NOTE," cc_strategy: size of cc->dma_cookie.dmac_address is %lu bytes\n", sizeof(cc->dma_cookie.dmac_address)); < cmn_err(CE_NOTE," cc_strategy: size of cc->dma_cookie.dmac_size is %lu bytes\n", sizeof(cc->dma_cookie.dmac_size)); < cmn_err(CE_NOTE," cc_strategy: size of dma_addr = %lu bytes \n", sizeof(dma_addr)); < */ < /* E.Inoue dma_addr = cc->dma_cookie.dmac_laddress; */ < /* < cmn_err(CE_NOTE," cc_strategy: contents of dma_addr = 0x%x \n", dma_addr); < cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_address = 0x%x \n", cc->dma_cookie.dmac_address); < cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_laddress = 0x%x \n", cc->dma_cookie.dmac_laddress); < cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_size = 0x%x \n", cc->dma_cookie.dmac_size); < */ < /* < d_data = cc->dma_cookie.dmac_address; < cmn_err(CE_NOTE," cc_strategy: *d_data = 0x%x \n", *d_data); < */ < /* < copyin((caddr_t)cc->dma_cookie.dmac_address, (caddr_t)cc->data_area, sizeof(u_short)); < cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_address =0x%x\n", cc->data_area[0]); < */ < /* copyin((uint16_t *)cc->dma_cookie.dmac_address, (u_short *)cc->data_area, 4*sizeof(u_short)); */ < copyin((caddr_t)cc->dma_cookie.dmac_address, (caddr_t)cc->data_area, 4*sizeof(u_short)); < /* < cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_address =0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area[0],cc->data_area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->data_area[5]); < */ < < < 3424,3426c2750 < /* E.inoue < cc->k->cma = CC_CMA_INIT; end */ /* Initialize memory pointer */ < /* E.Inoue --- > cc->k->cma = CC_CMA_INIT; /* Initialize memory pointer */ 3429,3430c2753 < cc->k->cmr = -(cc->len & 0xFFFF); end */ /* Max len = 1MWord */ < /* E.inoue --- > cc->k->cmr = -(cc->len & 0xFFFF); /* Max len = 1MWord */ 3433,3436c2756,2757 < cc->k->cma = CC_CMA_INIT; end */ /* Reset memory pointer */ < /* E.inoue < cc->k->maclo = dma_addr & 0xFFFF; end */ /* Set DMA base address */ < /* E.Inoue --- > cc->k->cma = CC_CMA_INIT; /* Reset memory pointer */ > cc->k->maclo = dma_addr & 0xFFFF; /* Set DMA base address */ 3438,3439c2759 < cc->k->amr = CC_AMR_INIT; end */ /* Set VME AM code */ < /* E.Inoue --- > cc->k->amr = CC_AMR_INIT; /* Set VME AM code */ 3441c2761 < cc->k->cser = CC_DMA_RESET; end */ /* DMA reset */ --- > cc->k->cser = CC_DMA_RESET; /* DMA reset */ 3443,3499d2762 < /* E.Inoue */ < ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT); < /* Initialize memory pointer */ < /* ddi_put16(cc->kreg_handle, &cc->kreg->cmr, mode | (cc->cur_crate << 8)); */ < cc->cur_crate = cc->cur_crate << 8; < ddi_put16(cc->kreg_handle, &cc->kreg->cmr, mode | (uint16_t)cc->cur_crate); < ddi_put16(cc->kreg_handle, &cc->kreg->cmr, naf); < /* ddi_put16(cc->kreg_handle, &cc->kreg->cmr, -(cc->len & 0xFFFF)); */ < cc->len = cc->len & 0xFFFF; < ddi_put16(cc->kreg_handle, &cc->kreg->cmr, -((uint16_t)cc->len)); < /* Max len = 1MWord */ < ddi_put16(cc->kreg_handle, &cc->kreg->cmr, (uint16_t)0xFFFF); < ddi_put16(cc->kreg_handle, &cc->kreg->cmr, (uint16_t)CC_HALT); < ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT); < /* Reset memory pointer */ < /* E.Inoue */ < /* < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cmr)); < ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT); < */ < /* Reset memory pointer */ < /* end */ < < /* ddi_put16(cc->kreg_handle, &cc->kreg->maclo, dma_addr & 0xFFFF); */ < dma_addr = dma_addr & 0xFFFF; < ddi_put16(cc->kreg_handle, &cc->kreg->maclo, (uint16_t)dma_addr); < /* Set DMA base address */ < /* ddi_put16(cc->kreg_handle, &cc->kreg->machi, dma_addr >> 16); */ < dma_addr = dma_addr >> 16; < ddi_put16(cc->kreg_handle, &cc->kreg->machi, (uint16_t)dma_addr); < ddi_put16(cc->kreg_handle, &cc->kreg->amr, (uint16_t)CC_AMR_INIT); < /* ddi_put16(cc->kreg_handle, &cc->kreg->amr, (uint16_t)0x0079); */ < /* Set VME AM code */ < /* E.Inoue < if (wc == 1) < ddi_put16(cc->kreg_handle, &cc->kreg->mtc, (uint16_t)wc+1); < else < ddi_put16(cc->kreg_handle, &cc->kreg->mtc, (uint16_t)wc); < end */ < ddi_put16(cc->kreg_handle, &cc->kreg->mtc, (uint16_t)wc); < ddi_put16(cc->kreg_handle, &cc->kreg->cser, (uint16_t)CC_DMA_RESET); < /* DMA reset */ < /* end */ < /* < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->mtc = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->mtc)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cwc = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->cwc)); < */ < 3502d2764 < /* E.Inoue 3505,3506c2767 < cc->k->csr |= CC_DMA; end */ /* DMA mode */ < /* E.Inoue --- > cc->k->csr |= CC_DMA; /* DMA mode */ 3508,3523d2768 < end */ < /* E.inoue */ < ddi_put16(cc->kreg_handle, &cc->kreg->docr, (uint16_t)CC_DOCR_INIT | (uint16_t)CC_DMA_READ); < ddi_put16(cc->kreg_handle, &cc->kreg->sccr, (uint16_t)CC_DMA_START); < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_DMA; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* DMA mode */ < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg &= (uint16_t)~CC_WRITE; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* end */ < /* < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->maclo = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->maclo)); < cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->machi = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->machi)); < */ 3527d2771 < /* E.Inoue 3530,3531c2774 < cc->k->csr |= CC_DMA; end */ /* DMA mode */ < /* E.Inoue --- > cc->k->csr |= CC_DMA; /* DMA mode */ 3533,3548d2775 < end */ < /* E.Inoue */ < ddi_put16(cc->kreg_handle, &cc->kreg->docr, (uint16_t)CC_DOCR_INIT | (uint16_t)CC_DMA_WRITE); < ddi_put16(cc->kreg_handle, &cc->kreg->sccr, (uint16_t)CC_DMA_START); < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_DMA; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* DMA mode */ < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_WRITE; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* end */ < /* < cmn_err(CE_NOTE," cc_strategy: write: cc->kreg->maclo = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->maclo)); < cmn_err(CE_NOTE," cc_strategy: write: cc->kreg->machi = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->machi)); < */ 3558,3562c2785,2787 < /* E.Inoue < cc->k->cma = cc->now_cma; end */ /* Initialize memory pointer */ < /* E.Inoue < cc->k->maclo = dma_addr & 0xFFFF; end */ /* Set DMA base address */ < /* E.Inoue --- > cc->k->cma = cc->now_cma; /* Initialize memory pointer > */ > cc->k->maclo = dma_addr & 0xFFFF; /* Set DMA base address */ 3564,3565c2789 < cc->k->amr = CC_AMR_INIT; end */ /* Set VME AM code */ < /* E.Inoue --- > cc->k->amr = CC_AMR_INIT; /* Set VME AM code */ 3567c2791 < cc->k->cser = CC_DMA_RESET; end */ /* DMA reset */ --- > cc->k->cser = CC_DMA_RESET; /* DMA reset */ 3569d2792 < /* E.Inoue 3572,3573c2795 < cc->k->csr |= CC_DMA; end */ /* DMA mode */ < /* E.Inoue --- > cc->k->csr |= CC_DMA; /* DMA mode */ 3575,3596d2796 < end */ < /* E.Inoue */ < ddi_put16(cc->kreg_handle, &cc->kreg->cma, cc->now_cma); < /* Initialize memory pointer */ < ddi_put16(cc->kreg_handle, &cc->kreg->maclo, dma_addr & 0xFFFF); < /* Set DMA base address */ < ddi_put16(cc->kreg_handle, &cc->kreg->machi, dma_addr >> 16); < ddi_put16(cc->kreg_handle, &cc->kreg->amr, (uint16_t)CC_AMR_INIT); < /* Set VME AM code */ < ddi_put16(cc->kreg_handle, &cc->kreg->mtc, cc->now_wc); < ddi_put16(cc->kreg_handle, &cc->kreg->cser, (uint16_t)CC_DMA_RESET); < /* DMA reset */ < ddi_put16(cc->kreg_handle, &cc->kreg->docr, (uint16_t)CC_DOCR_INIT | (uint16_t)CC_DMA_READ); < ddi_put16(cc->kreg_handle, &cc->kreg->sccr, (uint16_t)CC_DMA_START); < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_DMA; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* DMA mode */ < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg &= (uint16_t)~CC_WRITE; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* end */ 3598d2797 < /* E.Inoue */ 3600,3601d2798 < /* end */ < 3603d2799 < /* cmn_err(CE_NOTE," cc_strategy: check3. --- start DMA\n"); */ 3605d2800 < /* E.Inoue 3607,3610c2802 < end */ < /* E.Inoue < cc->k->csr |= CC_GO; end */ /* Go! */ < /* E.Inue --- > cc->k->csr |= CC_GO; /* Go! */ 3612,3620d2803 < end */ < /* E.Inoue */ < cc->timeout_id = timeout(cc_timeout, (void *)unit, CC_TIMEOUT_DMA * (clock_t)hz); < cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < cc->dev_kreg |= (uint16_t)CC_GO; < ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); < /* Go! */ < ddi_put16(cc->kreg_handle, &cc->kreg->donc, (uint16_t)CC_INT_AUTO_CLEAR | (uint16_t)CC_INT_ENABLE | intrpri); < /* end */ 3622d2804 < /* cmn_err(CE_NOTE," cc_strategy: check4. --- return cc_strategy\n"); */ 3637,3640d2818 < /* E.Inoue */ < int ret; < /* end */ < caddr_t d_data; 3658,3659c2836 < /* uio->uio_offset = 0; */ < uio->uio_loffset = 0; --- > uio->uio_offset = 0; 3680,3688d2856 < /* < 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_loffset); < */ 3694,3702c2862 < /* < cmn_err(CE_NOTE," camac_b: read: call physio --- uio = 0x%x \n", uio); < */ < /* physio(cc_strategy, NULL, dev, B_READ, cc_minphys, uio); */ < ret = physio(cc_strategy, NULL, dev, B_READ, cc_minphys, uio); < /* cmn_err(CE_NOTE," camac_b: read: physio return value = 0x%x\n", ret); */ < /* < cmn_err(CE_NOTE," camac_b: read: cc->kreg->csr = 0x%x\n", cc->kreg->csr); < */ --- > physio(cc_strategy, NULL, dev, B_READ, cc_minphys, uio); 3705,3713c2865 < /* < cmn_err(CE_NOTE," camac_b: write: call physio --- uio = 0x%x \n", uio); < */ < /* physio(cc_strategy, NULL, dev, B_WRITE, cc_minphys, uio); */ < ret = physio(cc_strategy, NULL, dev, B_WRITE, cc_minphys, uio); < /* cmn_err(CE_NOTE," camac_b: write: physio return value = 0x%x\n", ret); */ < /* < cmn_err(CE_NOTE," camac_b: write: cc->kreg->csr = 0x%x\n", cc->kreg->csr); < */ --- > physio(cc_strategy, NULL, dev, B_WRITE, cc_minphys, uio); 3719,3724d2870 < /* < cmn_err(CE_NOTE," camac_b: cc->len = 0x%x, cc->k->mtc = 0x%x\n", cc->len, ddi_get16(cc->kreg_handle, &cc->kreg->mtc)); < */ < /* E.Inoue < cmn_err(CE_NOTE," camac_b: cc->kreg->dlr(data low) = 0x%x \n", ddi_get16(cc->kreg_handle, &cc->kreg->dlr)); < end */ 3726d2871 < /* E.inoue 3729,3733d2873 < end */ < /* E.Inoue */ < ddi_put16(cc->kreg_handle, &cc->kreg->donc, (CC_INT_AUTO_CLEAR | intrpri)); < cc->camac_qx = ddi_get16(cc->kreg_handle, &cc->kreg->csr); < /* end */ 3761,3768d2900 < /* < 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_loffset); < */ 3771d2902 < /* E.inoue 3774,3778c2905,2906 < cc->retlen = cc->len - cc->k->mtc / 2; */ /* retlen=number of transfer */ < if ((mode & CC_QSCAN) == 0 || (ddi_get16(cc->kreg_handle, &cc->kreg->csr) & CC_ERR) == 0) { < if ((mode & CC_BIT16) == 0) { < cc->retlen = cc->len - ddi_get16(cc->kreg_handle, &cc->kreg->mtc) / 2; /* retlen=number of transfer */ < if ((mode & CC_QSCAN) == 0 && (ddi_get16(cc->kreg_handle, &cc->kreg->csr) & CC_ERR) != 0) /* Q-STOP */ --- > 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 */ 3784d2911 < /* E.inoue 3786,3793c2913 < if ((mode & CC_QSCAN) == 0 && (cc->k->csr & CC_ERR) != 0) end */ /* Q-STOP */ < /* E.Inoue */ < cc->retlen = cc->len - ddi_get16(cc->kreg_handle, &cc->kreg->mtc); < /* < cmn_err(CE_NOTE," camac_b: cc->len = 0x%x, cc->k->mtc = 0x%x\n", cc->len, ddi_get16(cc->kreg_handle, &cc->kreg->mtc)); < */ < if ((mode & CC_QSCAN) == 0 && (ddi_get16(cc->kreg_handle, &cc->kreg->csr) & CC_ERR) != 0) /*Q-STOP */ < /* end */ --- > if ((mode & CC_QSCAN) == 0 && (cc->k->csr & CC_ERR) != 0) /* Q-STOP */ onlsun1[65]% (3-4-10-a). FORCE-50T-sol7/cc64.cファイルの修正 onlsun1[73]% vi cc64.c : 2 * cc64.c * <--- 追加 3 * 1-NOV-1993 Y.Takeuchi (T.I.T.) * : 12 * 28-Dec-2000 E.Inoue <--- 追加 13 * FORCE SPARC CPU-50T <--- 追加 * 14 * (64bit camac driver) <--- 追加 * : 36 /* E.Inoue */ <--- 削除 37 /* <--- 削除 38 #include <--- 削除 39 #include <--- 削除 40 */ <--- 削除 41 /* #include */ <--- 削除 42 /* end */ <--- 削除 : 54 /* E.Inoue <--- 削除 55 static ddi_dma_attr_t cc_dma_attr = <--- 削除 56 { <--- 削除 57 end */ <--- 削除 58 /* E.Inoue DMA_ATTR_V0, dma_attr_version */ <--- 削除 59 /* E.Inoue (unsigned long long)0x0, dma_attr_addr_lo */ <--- 削除 60 /* E.Inoue (unsigned long long)0xffffffff, dma_attr_addr_hi */ <--- 削除 61 /* E.Inoue (unsigned long long)0xffffffff, dma_attr_count_max */ <--- 削除 62 /* E.Inoue 0x4, dma_attr_align */ <--- 削除 63 /* E.Inoue DEFAULT_BURSTSIZE | BURST32, dma_attr_burstsizes */ <--- 削除 64 /* E.Inoue 0x4, dma_attr_minxfer */ <--- 削除 65 /* E.Inoue (unsigned long long)0xffffffff, dma_attr_maxxfer */ <--- 削除 66 /* E.Inoue (unsigned long long)0xffffffff, dma_attr_seg */ <--- 削除 67 /* E.Inoue 17, dma_attr_sgllen */ <--- 削除 68 /* E.Inoue 512, dma_attr_granular */ <--- 削除 69 /* E.Inoue 0, dma_attr_flags */ <--- 削除 70 /* E.Inoue <--- 削除 71 }; <--- 削除 72 end */ <--- 削除 73 /* E.Inoue */ <--- 削除 74 /* <--- 削除 75 static ddi_dma_attr_t cc_dma_attr = <--- 削除 76 { <--- 削除 77 */ <--- 削除 78 /* DMA_ATTR_V0, */ /* dma_attr_version */ <--- 削除 79 /* (uint64_t)0x0, */ /* dma_attr_addr_lo */ <--- 削除 80 /* (uint64_t)0xffffffff, */ /* dma_attr_addr_hi */ <--- 削除 81 /* (uint64_t)0xffffffff, */ /* dma_attr_count_max */ <--- 削除 82 /* (uint64_t)0x4, */ /* dma_attr_align */ <--- 削除 83 /* DEFAULT_BURSTSIZE | BURST32, */ /* dma_attr_burstsizes */ <--- 削除 84 /* 0x4, */ /* dma_attr_minxfer */ <--- 削除 85 /* (uint64_t)0xffffffff, */ /* dma_attr_maxxfer */ <--- 削除 86 /* (uint64_t)0xffffffff, */ /* dma_attr_seg */ <--- 削除 87 /* 17, */ /* dma_attr_sgllen */ <--- 削除 88 /* 512, */ /* dma_attr_granular */ <--- 削除 89 /* 0, */ /* dma_attr_flags */ <--- 削除 90 /* }; */ <--- 削除 : 92 static ddi_dma_attr_t cc_dma_attr = 93 { 94 95 DMA_ATTR_V0, /* dma_attr_version */ 96 /* (uint64_t)0x0, */ /* dma_attr_addr_lo */ <--- 削除 97 (uint64_t)0x00000000, /* dma_attr_addr_lo */ 98 (uint64_t)0xffffffff, /* dma_attr_addr_hi */ 99 (uint64_t)0xffffffff, /* dma_attr_count_max */ 100 /* (uint64_t)0x4, */ /* dma_attr_align */ <--- 削除 101 (uint64_t)0x1, /* dma_attr_align */ 102 /* 0xffff, */ /* dma_attr_burstsizes */ <--- 削除 103 DEFAULT_BURSTSIZE | BURST32, /* dma_attr_burstsizes */ 104 /* 0x4, */ /* dma_attr_minxfer */ <--- 削除 105 /* 0x1, */ <--- 削除 106 0x1, /* dma_attr_minxfer */ 107 (uint64_t)0xffff, /* dma_attr_maxxfer */ 108 (uint64_t)0xffffff, /* dma_attr_seg */ 109 /* 17, */ /* dma_attr_sgllen */ <--- 削除 110 /* 1, */ <--- 削除 111 17, /* dma_attr_sgllen */ 112 512, /* dma_attr_granular */ 113 0, /* dma_attr_flags */ 114 }; : 151 /* E.Inoue */ <--- 追加 152 ddi_idevice_cookie_t idevice_cookie; <--- 追加 153 /* end */ <--- 追加 : 162 timeout_id_t timeout_id; <--- 追加 : 178 /* E.inoue */ <--- 追加 179 ddi_acc_handle_t kreg_handle; /* access handle to csr */ <--- 追加 180 ddi_acc_handle_t datar_handle; /* access handle to data */ <--- 追加 181 struct K_REG *kreg; <--- 追加 182 uint16_t *datar; <--- 追加 183 uint16_t dev_kreg; <--- 追加 184 /* end */ <--- 追加 : 204 static int cc_ioctl(dev_t dev, int cmd, int arg, int flag, cred_t *cred_ p, <--- 削除 205 int *rval_p); <--- 削除 206 end */ 207 static int cc_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t * cred_p, <--- 追加 208 int *rval_p); <--- 追加 : 211 /*static u_int cc_intr(); */ <--- 削除 212 static u_int cc_intr(caddr_t unit); <--- 追加 : 213 /* E.Inoue */ <--- 削除 214 /* static void cc_timeout(); */ <--- 削除 215 /* static void cc_timeout(caddr_t unit); */ <--- 削除 216 static void cc_timeout(void *unit); <--- 追加 217 /* end */ <--- 削除 : 256 /* begin */ <--- 削除 257 /* D_NEW | D_MP, */ /* Driver comaptibility flag */ <--- 削除 258 D_NEW | D_MP | D_64BIT, /* Driver comaptibility flag */ <--- 追加 259 CB_REV, /* cb_rev */ <--- 追加 260 nodev, /* async I/O read entry point */ <--- 追加 261 nodev /* async I/O write entry point */ <--- 追加 262 /* end */ <--- 削除 : 275 /* E.Inoue 276 (struct bus_ops *)0, */ /* bus operations */ <--- 削除 277 NULL, /* bus operations */ <--- 追加 : 380 /* E.Inoue <--- 削除 381 if (ddi_map_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t)0, 0)) { <--- 削除 382 end */ <--- 削除 383 if (ddi_map_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t)0, (off_t) 0)) { <--- 追加 : 389 /* E.Inoue <--- 削除 390 if (ddi_peeks(dip,(short *)&cc->k->csr,(short *)&value) == DDI_FAILU RE) { <--- 削除 391 end */ <--- 削除 392 if (ddi_peek16(dip,(short *)&cc->k->csr,(short *)&value) == DDI_FAIL URE) { <--- 追加 : 404 /* E.Inoue <--- 削除 405 ddi_unmap_regs(dip, 0, (caddr_t *)&cc->k, (off_t) 0, (off_t) 0); <--- 削除 406 end */ <--- 削除 407 ddi_unmap_regs(dip, (u_int)0, (caddr_t *)&cc->k, (off_t) 0, (off_t ) 0); <--- 追加 : 413 /* E.Inoue <--- 削除 414 u_short value; <--- 削除 415 end */ <--- 削除 416 uint16_t value; <--- 追加 : 421 ddi_device_acc_attr_t dev_attr; <--- 追加 : 425 switch(cmd){ <--- 追加 426 case DDI_ATTACH: <--- 追加 : 440 /* E.Inoue <--- 削除 441 value = (u_short)CC_RST; <--- 削除 442 ddi_pokes(dip, (short *)&cc->k->csr, (short)value); <--- 削除 443 end */ <--- 削除 444 value = (uint16_t)CC_RST; <--- 追加 445 ddi_poke16((dev_info_t *)dip, (int16_t *)&cc->k->csr, (int16_t)value ); <--- 追加 446 /* E.Inoue <--- 削除 447 ddi_peeks(dip, (short *)&cc->k->csr, (short *)&value); <--- 削除 448 end */ <--- 削除 449 ddi_peek16((dev_info_t *)dip, (int16_t *)&cc->k->csr, (int16_t*)&va lue); <--- 追加 : 453 /* uprintf("cc_attach: unable to reset K2917\n"); */ <--- 削除 : 462 /* uprintf("cc_attach: unable to create minor node\n"); */ <--- 削除 : 465 /* E.Inoue */ <--- 追加 466 /* <--- 追加 467 * We make no attempt to handle hi-level interruprs. <--- 追加 468 */ <--- 追加 469 if (ddi_intr_hilevel(dip, 0)) { <--- 追加 470 ddi_soft_state_free(cc_state, instance); <--- 追加 471 cmn_err(CE_CONT, <--- 追加 472 "cc_attach: high-level interrupts are not supported\ n"); <--- 追加 473 return (DDI_FAILURE); <--- 追加 474 } <--- 追加 475 476 /* <--- 追加 477 * Before adding the interrupt, get the interrupt block <--- 追加 478 * cookie associated with the interrupt specification, to <--- 追加 479 * be used to initialize the mutex used by the interrupt <--- 追加 480 * handler. <--- 追加 481 */ <--- 追加 482 if (ddi_get_iblock_cookie(dip, 0, <--- 追加 483 &cc->iblock_cookie) != DDI_SUCCESS) { <--- 追加 484 ddi_soft_state_free(cc_state, instance); <--- 追加 485 cmn_err(CE_CONT, <--- 追加 486 "cc_attach: doesn't get correct iblock_cookie\n"); <--- 追加 487 return (DDI_FAILURE); <--- 追加 488 } <--- 追加 489 490 /* initialize MUTEX */ <--- 追加 491 mutex_init(&cc->mutex, "CAMAC mutex", <--- 追加 492 MUTEX_DRIVER, (void *)cc->iblock_cookie); <--- 追加 493 494 /* Initialize the conditional variables. */ <--- 追加 495 cv_init(&cc->cv, "CAMAC cv", CV_DRIVER, NULL); <--- 追加 496 /* end */ <--- 追加 : 499 /* <--- 削除 500 if (ddi_add_intr(dip, 0, &cc->iblock_cookie, <--- 削除 501 (ddi_idevice_cookie_t *) NULL, cc_intr, <--- 削除 502 (caddr_t) instance) != DDI_SUCCESS) { <--- 削除 503 */ <--- 削除 504 /* <--- 削除 505 if (ddi_add_intr((dev_info_t *) dip, 0, <--- 削除 506 (ddi_iblock_cookie_t *) &cc->iblock_cookie, <--- 削除 507 (ddi_idevice_cookie_t *) &cc->idevice_cookie, cc_in tr, <--- 削除 508 (caddr_t) instance) != DDI_SUCCESS) { <--- 削除 509 */ <--- 削除 510 if (ddi_add_intr((dev_info_t *) dip, 0, <--- 追加 511 (ddi_iblock_cookie_t *) &cc->iblock_cookie, <--- 追加 512 (ddi_idevice_cookie_t *) NULL, cc_intr, <--- 追加 513 (caddr_t) instance) != DDI_SUCCESS) { <--- 追加 : 519 /* <--- 削除 520 cmn_err(CE_WARN,"cc_attach: idevice_cookie.idev_vector: 0x%x\n", cc- >idevice_cookie.idev_vector); <--- 削除 521 cmn_err(CE_WARN,"cc_attach: idevice_cookie.idev_priority: 0x%x\n", c c->idevice_cookie.idev_priority); <--- 削除 522 */ <--- 削除 : 520 /* initialize MUTEX */ <--- 削除 521 /* E.Inoue <--- 削除 522 mutex_init(&cc->mutex, "CAMAC mutex", <--- 削除 523 MUTEX_DRIVER, (void *)&cc->iblock_cookie); <--- 削除 524 end */ <--- 削除 525 <--- 削除 526 /* Initialize the conditional variables. */ <--- 削除 527 /* E.Inoue <--- 削除 528 cv_init(&cc->cv, "CAMAC cv", CV_DRIVER, NULL); <--- 削除 529 end */ <--- 削除 : 528 /* E.Inoue */ <--- 追加 529 /* <--- 追加 530 * the registers look OK, so let's map them in so we can use them <--- 追加 531 */ <--- 追加 532 533 /* <--- 追加 534 * Initialize the device access attributes for the register <--- 追加 535 * mapping <--- 追加 536 */ <--- 追加 537 dev_attr.devacc_attr_version = DDI_DEVICE_ATTR_V0; <--- 追加 538 dev_attr.devacc_attr_endian_flags = DDI_STRUCTURE_BE_ACC; <--- 追加 539 dev_attr.devacc_attr_dataorder = DDI_STRICTORDER_ACC; <--- 追加 540 541 /* <--- 追加 542 * Map in the kreg register <--- 追加 543 */ <--- 追加 544 if (ddi_regs_map_setup(dip, 0, (caddr_t *)&cc->kreg, 0, 0, <--- 追加 545 &dev_attr, &cc->kreg_handle) != DDI_SUCCESS) { <--- 追加 546 mutex_destroy(&cc->mutex); <--- 追加 547 ddi_remove_intr(cc->dip, 0, cc->iblock_cookie); <--- 追加 548 ddi_soft_state_free(cc_state, instance); <--- 追加 549 cmn_err(CE_WARN,"cc_attach: can't alloc kreg handle"); <--- 追加 550 return (DDI_FAILURE); <--- 追加 551 } <--- 追加 552 553 /* <--- 削除 554 * Map in the data register <--- 削除 555 */ <--- 削除 556 /* <--- 削除 557 if (ddi_regs_map_setup(dip, 2, (caddr_t *)&(pio_p->data), 0, <--- 削除 558 sizeof (u_char), &dev_acc_attr, &pio_p->data_handle) != <--- 削除 559 DDI_SUCCESS) { <--- 削除 560 mutex_destroy(&pio_p->mutex); <--- 削除 561 ddi_remove_intr(pio_p->dip, 0, pio_p->iblock_cookie); <--- 削除 562 ddi_soft_state_free(state_head, instance); <--- 削除 563 ddi_regs_map_free(&pio_p->csr_handle); <--- 削除 564 return (DDI_FAILURE); <--- 削除 565 } <--- 削除 566 */ <--- 削除 567 568 /* <--- 追加 569 * reset device (including disabling interrupts) <--- 追加 570 */ <--- 追加 571 ddi_put16(cc->kreg_handle, &cc->kreg->csr, CC_RST); <--- 追加 572 573 /* end */ : 577 case DDI_PM_RESUME: <--- 追加 578 case DDI_RESUME: <--- 追加 579 default: <--- 追加 580 return (DDI_FAILURE); <--- 追加 581 } <--- 追加 : 599 /* <--- 追加 600 * turn off the device (including interrupts) <--- 追加 601 */ <--- 追加 602 ddi_put16(cc->kreg_handle, &cc->kreg->csr, CC_RST); <--- 追加 : 764 static int 765 cc_open(dev_t *devp, int flag, int otyp, cred_t *cred_p) 766 { : 778 /* <--- 削除 779 cmn_err(CE_NOTE," cc_open: debug step01. --- cc is %lu bytes\n", size of(cc)); <--- 削除 780 cmn_err(CE_NOTE," cc_open: debug step01. --- ddi_get_soft_state(cc_st ate,unit) is %lu bytes\n", sizeof(ddi_get_soft_state(cc_state,unit))); <--- 削除 781 */ <--- 削除 : 778 /* <--- 削除 779 if (unit >= NCC || !md || md->md_alive == 0) <--- 削除 780 return (ENXIO); <--- 削除 781 */ <--- 削除 : 789 /* <--- 削除 790 cmn_err(CE_NOTE," cc_open: debug step02. --- cc->max_branch is %lu by tes\n", sizeof(cc->max_branch)); <--- 削除 791 cmn_err(CE_NOTE," cc_open: debug step02. --- CC_K_MAX_BRANCH is %lu b ytes\n", sizeof(CC_K_MAX_BRANCH)); <--- 削除 792 cmn_err(CE_NOTE," cc_open: debug step02. --- cc->max_branch= 0x%x\n", cc->max_branch); <--- 削除 793 */ <--- 削除 : 793 /* cc->k->csr = CC_RST; */ /* K2917 Reset */ <--- 削除 794 ddi_put16(cc->kreg_handle, &cc->kreg->csr, (uint16_t)CC_RST); <--- 追加 795 /* K2917 Reset */ <--- 追加 : 797 /* <--- 削除 798 cmn_err(CE_NOTE," cc_open: debug step03. --- CC_INT_AUTO_CLEAR is %lu bytes\n", sizeof(CC_INT_AUTO_CLEAR)); <--- 削除 799 cmn_err(CE_NOTE," cc_open: debug step03. --- intrpri is %lu bytes\n", sizeof(intrpri)); <--- 削除 800 */ <--- 削除 : 695 /* set interrupt registers of K2917 */ 696 /* <--- 削除 697 cc->k->lamc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <--- 削除 698 cc->k->donc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <--- 削除 699 cc->k->empc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <--- 削除 700 cc->k->aboc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <--- 削除 701 cc->k->lamv = (u_short)intrvec; <--- 削除 702 cc->k->donv = (u_short)intrvec; <--- 削除 703 cc->k->empv = (u_short)intrvec; <--- 削除 704 cc->k->abov = (u_short)intrvec; <--- 削除 705 */ <--- 削除 706 /* E.Inoue */ <--- 追加 707 ddi_put16(cc->kreg_handle, &cc->kreg->lamc, (uint16_t)(CC_INT_AUTO_C LEAR | intrpri)); <--- 追加 708 ddi_put16(cc->kreg_handle, &cc->kreg->donc, (uint16_t)(CC_INT_AUTO_C LEAR | intrpri)); <--- 追加 709 ddi_put16(cc->kreg_handle, &cc->kreg->empc, (uint16_t)(CC_INT_AUTO_C LEAR | intrpri)); <--- 追加 710 ddi_put16(cc->kreg_handle, &cc->kreg->aboc, (uint16_t)(CC_INT_AUTO_C LEAR | intrpri)); <--- 追加 711 ddi_put16(cc->kreg_handle, &cc->kreg->lamv, (uint16_t)intrvec); <--- 追加 712 ddi_put16(cc->kreg_handle, &cc->kreg->donv, (uint16_t)intrvec); <--- 追加 713 ddi_put16(cc->kreg_handle, &cc->kreg->empv, (uint16_t)intrvec); <--- 追加 714 ddi_put16(cc->kreg_handle, &cc->kreg->abov, (uint16_t)intrvec); <--- 追加 715 /* end */ <--- 追加 716 /* <--- 削除 717 cmn_err(CE_NOTE,"cc_open: cc->kreg->lamv = 0x%x \n", ddi_get16(c c->kreg_handle, <--- 削除 718 &cc->kreg->lamv)); <--- 削除 719 */ <--- 削除 720 721 722 return 0; : 733 static int 734 cc_write(dev_t dev, struct uio *uio, cred_t *cred_p) 735 { : 738 /* E.Inoue */ <--- 削除 739 register struct iovec *iov = uio->uio_iov; 740 /* end */ <--- 削除 741 /* <--- 削除 742 register struct iovec32 *iov = uio->uio_iov; <--- 削除 743 */ <--- 削除 : 742 /* E.Inoue */ <--- 削除 743 struct iovec iov_save, *iovs = &iov_save; 744 /* end */ <--- 削除 745 /* <--- 削除 746 struct iovec32 iov_save, *iovs = &iov_save; <--- 削除 747 */ <--- 削除 : 747 /* cmn_err(CE_NOTE," cc_write enter: \n"); */ <--- 削除 : 770 /* <--- 削除 771 cmn_err(CE_NOTE," cc_write: debug step01. --- cc->mode is %lu bytes\n ", sizeof(cc->mode)); <--- 削除 772 cmn_err(CE_NOTE," cc_write: debug step01. --- cc->mode = 0x%x \n", cc ->mode); <--- 削除 773 774 cmn_err(CE_NOTE," cc_write: debug step02. --- cc->naf is %lu bytes\n" , sizeof(cc->naf)); <--- 削除 775 cmn_err(CE_NOTE," cc_write: debug step02. --- cc->naf = 0x%x \n", cc- >naf); <--- 削除 776 */ <--- 削除 777 /* <--- 削除 778 cmn_err(CE_NOTE,"cc_write-enter: cc->kreg->lamv = 0x%x \n", ddi_ get16(cc->kreg_handle,&cc->kreg->lamv)); <--- 削除 779 */ <--- 削除 : 786 /* <--- 削除 787 cmn_err(CE_NOTE," cc_write: debug step03. --- unit is %lu bytes\n", s izeof(unit)); <--- 削除 788 cmn_err(CE_NOTE," cc_write: debug step03. --- unit = 0x%x \n", unit); <--- 削除 789 cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area is %lu by tes\n", sizeof(cc->data_area)); <--- 削除 790 cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area = 0x%x \n ", cc->data_area); <--- 削除 791 cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[0] is %lu bytes\n", sizeof(cc->data_area[0])); <--- 削除 792 cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[0] = 0x%x \n", cc->data_area[0]); <--- 削除 793 cmn_err(CE_NOTE," cc_write: debug step03. --- cc->data_area[1] = 0x%x \n", cc->data_area[1]); <--- 削除 794 */ <--- 削除 : 787 /* <--- 削除 788 cmn_err(CE_NOTE," cc_write: debug step04. --- mode is %lu bytes\n", s izeof(mode)); <--- 削除 789 cmn_err(CE_NOTE," cc_write: debug step04. --- mode = 0x%x \n", mode); <--- 削除 790 cmn_err(CE_NOTE," cc_write: debug step04. --- CC_BIT16 is %lu bytes\n ", sizeof(CC_BIT16)); <--- 削除 791 cmn_err(CE_NOTE," cc_write: debug step04. --- CC_BIT16 = 0x%x \n", CC _BIT16); <--- 削除 792 */ <--- 削除 793 /* <--- 削除 794 cmn_err(CE_NOTE," cc_write: debug step04. --- cc->data_area[0] = 0x%x \n", cc->data_area[0]); <--- 削除 795 cmn_err(CE_NOTE," cc_write: debug step04. --- cc->data_area[1] = 0x%x \n", cc->data_area[1]); <--- 削除 796 */ <--- 削除 797 if ((mode & (uint16_t)CC_BIT16) == 0) <--- 修正 : 795 /* <--- 削除 796 cmn_err(CE_NOTE," cc_write: debug step05. --- camac write");<--- 削除 797 */ <--- 削除 798 if ((mode & (uint16_t)CC_BIT16) == 0) <--- 修正 : 801 /* <--- 削除 802 cmn_err(CE_NOTE," cc_write: debug step06. --- unit is %lu bytes\n", s izeof(unit)); <--- 削除 803 cmn_err(CE_NOTE," cc_write: debug step06. --- unit = 0x%x \n", unit); <--- 削除 804 cmn_err(CE_NOTE," cc_write: debug step06. --- mode is %lu bytes\n", s izeof(mode)); <--- 削除 805 cmn_err(CE_NOTE," cc_write: debug step06. --- mode = 0x%x \n", mode); <--- 削除 806 cmn_err(CE_NOTE," cc_write: debug step06. --- naf is %lu bytes\n", si zeof(naf)); <--- 削除 807 cmn_err(CE_NOTE," cc_write: debug step06. --- naf = 0x%x \n", naf); <--- 削除 808 cmn_err(CE_NOTE," cc_write: debug step06. --- cc->data_area[0] is %lu bytes\n", sizeof(cc->data_area[0])); <--- 削除 809 cmn_err(CE_NOTE," cc_write: debug step06. --- cc->data_area[0] = 0x%x \n", cc->data_area[0]); <--- 削除 810 */ <--- 削除 811 /* <--- 削除 812 cmn_err(CE_NOTE,"cc_write: cc->kreg->lamv = 0x%x \n", ddi_get16( cc->kreg_handle, &cc->kreg->lamv)); <--- 削除 813 */ <--- 削除 : 816 /* <--- 削除 817 cmn_err(CE_NOTE," cc_write: CC_CMD_DOBLOCK enter: \n");<--- 削除 818 cmn_err(CE_NOTE," cc_write: cc->kreg->donv = 0x%x \n", ddi_get16 (cc->kreg_handle,&cc->kreg->donv)); <--- 削除 819 */ <--- 削除 820 /* <--- 削除 821 cmn_err(CE_NOTE," cc_write: cc->kreg->csr = 0x%x \n", ddi_get16( cc->kreg_handle,&cc->kreg->csr)); <--- 削除 822 */ <--- 削除 : 820 copyin((caddr_t)iov->iov_base, (caddr_t)cc->data_area, sizeof(u_ short)); <--- 削除 821 /* <--- 削除 822 cmn_err(CE_NOTE," cc_write: CC_CMD_DOBLOCK: iov->iov_base = 0x%x \n", iov->iov_base); <--- 削除 823 cmn_err(CE_NOTE," cc_write: CC_CMD_DOBLOCK: contents of iov->iov _base = 0x%x\n", cc->data_area[0]); <--- 削除 824 */ <--- 削除 : 839 /* cmn_err(CE_NOTE," cc_write: return camac_b(). \n"); */ <--- 削除 : 845 /* <--- 削除 846 cmn_err(CE_NOTE," cc_write: cc->interrupt = 0x%x \n", cc->interr upt); <--- 削除 847 cmn_err(CE_NOTE," cc_write: cc->kreg->donv = 0x%x \n", ddi_get16 (cc->kreg_handle,&cc->kreg->donv)); <--- 削除 848 cmn_err(CE_NOTE," cc_write: cc->kreg->csr = 0x%x \n", ddi_get16( cc->kreg_handle,&cc->kreg->csr)); <--- 削除 849 */ <--- 削除 : 972 static void 973 cc_timeout(void *unit) <--- 修正 974 /* E.Inoue <--- 削除 975 cc_timeout(caddr_t unit) <--- 削除 976 end */ <--- 削除 : 979 /* E.Inoue <--- 削除 980 cc = ddi_get_soft_state(cc_state,(int)*unit); <--- 削除 981 end */ <--- 削除 982 cc = ddi_get_soft_state(cc_state,(int)unit); <--- 追加 : 1009 static u_int 1010 /* cc_intr(int unit) */ <--- 削除 1011 cc_intr(caddr_t unit) <--- 追加 : 1015 /* E.Inoue */ 1016 register struct uio *uio; <--- 追加 1017 uint_t chk_done; <--- 追加 1018 /* end */ : 1021 cc = (struct cc_device *)ddi_get_soft_state(cc_state,(u_int)unit); <--- 修正 : 1025 /* <--- 削除 1026 cmn_err(CE_NOTE," cc_intr: debug step01. enter intrrupt service rout ine "); <--- 削除 1027 */ <--- 削除 1028 /* <--- 削除 1029 cmn_err(CE_NOTE," cc_intr: enter intrrupt: cc->kreg->csr = 0x%x\n", cc->kreg->csr); <--- 削除 1030 cmn_err(CE_NOTE," cc_intr: cc->kreg->mtc(wc) = 0x%x \n", ddi_get16(c c->kreg_handle, &cc->kreg->mtc)); <--- 削除 1031 cmn_err(CE_NOTE," cc_intr: cc->kreg->cwc = 0x%x \n", ddi_get16(cc->k reg_handle, &cc->kreg->cwc)); <--- 削除 1032 cmn_err(CE_NOTE," cc_intr: cc->kreg->cser = 0x%x \n", ddi_get16(cc-> kreg_handle, &cc->kreg->cser)); <--- 削除 1033 */ <--- 削除 1034 /* <--- 削除 1035 cmn_err(CE_NOTE," cc_intr: cc->kreg->dlr(data low) = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->dlr)); <--- 削除 1036 cmn_err(CE_NOTE," cc_intr: cc->kreg->dhr(data high) = 0x%x \n", ddi_ get16(cc->kreg_handle, &cc->kreg->dhr)); <--- 削除 1037 */ <--- 削除 1038 1039 /* E.Inoue */ <--- 削除 1040 uio = cc->uio; <--- 削除 1041 /* <--- 削除 1042 cmn_err(CE_NOTE," cc_intr: 0x%x %d %d %d %d %d",<--- 削除 1043 uio->uio_iov->iov_base, <--- 削除 1044 uio->uio_iov->iov_len, <--- 削除 1045 uio->uio_iovcnt, <--- 削除 1046 uio->uio_resid, <--- 削除 1047 uio->uio_segflg, <--- 削除 1048 uio->uio_offset); <--- 削除 1049 */ <--- 削除 1050 /* end */ <--- 削除 1051 1052 /* <--- 削除 1053 cmn_err(CE_NOTE," cc_intr: cc->dma_cookie.dmac_address = 0x%x \n", c c->dma_cookie.dmac_address); <--- 削除 1054 copyin((caddr_t)cc->dma_cookie.dmac_address, (caddr_t)cc->data_a rea, 10*sizeof(u_short)); <--- 削除 1055 cmn_err(CE_NOTE," cc_intr: contents of cc->dma_cookie.dmac_addre ss =0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area [0],cc->data_area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->data _area[5],cc->data_area[6],cc->data_area[7],cc->data_area[8],cc->data_area[9]); <--- 削除 1056 cmn_err(CE_NOTE," cc_intr: cc->kreg->maclo = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->maclo)); <--- 削除 1057 cmn_err(CE_NOTE," cc_intr: cc->kreg->machi = 0x%x \n", ddi_get16(cc- >kreg_handle, &cc->kreg->machi)); <--- 削除 1058 1059 copyin((caddr_t)uio->uio_iov->iov_base, (caddr_t)cc->data_area, 10*sizeof(u_short)); <--- 削除 1060 cmn_err(CE_NOTE," cc_intr: contents of uio->uio_iov->iov_base =0 x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area[0],c c->data_area[1],cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->data_area [5],cc->data_area[6],cc->data_area[7],cc->data_area[8],cc->data_area[9]); <--- 削除 1061 */ <--- 削除 : 1027 /* E.Inoue <--- 削除 1028 if ((cc->k->csr & CC_LAM) != 0) <--- 削除 1029 cc->interrupt |= CC_INT_LAM; <--- 削除 1030 if ((cc->k->csr & CC_DONE) != 0) <--- 削除 1031 cc->interrupt |= CC_INT_DONE; <--- 削除 1032 if ((cc->k->empc & CC_INT_ENABLE) == 0) <--- 削除 1033 cc->interrupt |= CC_INT_EMPTY; <--- 削除 1034 if ((cc->k->aboc & CC_INT_ENABLE) == 0) <--- 削除 1035 cc->interrupt |= CC_INT_ABORT; <--- 削除 1036 end */ <--- 削除 : 1027 /* E.Inoue */ <--- 削除 1028 if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & (uint16_t)CC_LAM) != 0) <--- 追加 1029 { <--- 追加 1030 cc->interrupt |= CC_INT_LAM; <--- 追加 1031 /* cmn_err(CE_NOTE," cc_intr: CC_INT_LAM: step02."); */ <--- 削除 1032 } <--- 追加 1033 if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & (uint16_t)CC_DONE) != 0) <--- 追加 1034 { <--- 追加 1035 cc->interrupt |= CC_INT_DONE; <--- 追加 1036 /* cmn_err(CE_NOTE," cc_intr: CC_INT_DONE: step02."); */ <--- 削除 1037 } <--- 追加 1038 if ((ddi_get16(cc->kreg_handle, &cc->kreg->empc) & (uint16_t)CC_INT_ ENABLE) == 0) <--- 追加 1039 { <--- 追加 1040 cc->interrupt |= CC_INT_EMPTY; <--- 追加 1041 /* cmn_err(CE_NOTE," cc_intr: CC_INT_EMPTY: step02."); */ <--- 削除 1042 } <--- 追加 1043 if ((ddi_get16(cc->kreg_handle, &cc->kreg->aboc) & (uint16_t)CC_INT_ ENABLE) == 0) <--- 追加 1044 { <--- 追加 1045 cc->interrupt |= CC_INT_ABORT; <--- 追加 1046 /* cmn_err(CE_NOTE," cc_intr: CC_INT_ABORT: step02."); */ <--- 削除 1047 } <--- 追加 1048 1049 /* end */ <--- 削除 : 1046 /* <--- 削除 1047 cmn_err(CE_NOTE," cc_intr: size of ddi_get16(cc->kreg_handle, &cc->kr eg->csr) is %lu bytes\n", sizeof(ddi_get16(cc->kreg_handle, &cc->kreg->csr))); <--- 削除 1048 cmn_err(CE_NOTE," cc_intr: size of CC_DONE is %lu bytes\n", sizeof(CC _DONE)); <--- 削除 1049 */ <--- 削除 : 1047 /* E.Inoue */ <--- 追加 1048 chk_done = 0x7ffffff; /* about 10 sec */ <--- 追加 1049 while (chk_done-- > 0){ <--- 追加 1050 if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & CC_DONE) != 0){ <--- 追加 1051 cc->interrupt |= CC_INT_DONE; <--- 追加 1052 break; <--- 追加 1053 } <--- 追加 1054 } <--- 追加 1055 1056 /* end */ <--- 追加 1057 /* <--- 削除 1058 cmn_err(CE_NOTE," cc_intr: freeze check: step01."); <--- 削除 1059 */ <--- 削除 : 1068 /* cmn_err(CE_NOTE," cc_intr: cc->executing_dma_flag != 0: step03."); */ <--- 削除 : 1081 /* cmn_err(CE_NOTE," cc_intr: cc->interrupt != 0: step04."); */ <--- 削除 1082 /* <--- 削除 1083 cmn_err(CE_NOTE," cc_intr: exit intrrupt: cc->kreg->csr = 0x%x\n", c c->kreg->csr); <--- 削除 1084 cmn_err(CE_NOTE," cc_intr: cc->kreg->mtc(wc) = 0x%x \n", ddi_get16(c c->kreg_handle, &cc->kreg->mtc)); <--- 削除 1085 */ <--- 削除 : 1089 static int 1090 cc_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cred_p, int *rval_p) 1091 /* E.Inoue <--- 削除 1092 cc_ioctl(dev_t dev, int cmd, int arg, int flag, cred_t *cred_p, int *rva l_p) <--- 削除 1093 end */ <--- 削除 1094 { : 1097 /* E.Inoue <--- 削除 1098 int idat, data; <--- 削除 1099 end */ <--- 削除 : 1122 /* <--- 削除 1123 cmn_err(CE_NOTE,"CCIOC_SET_BRANCH: cc->kreg->lamv = 0x%x \n", dd i_get16(cc->kreg_handle,&cc->kreg->lamv)); <--- 削除 1124 */ <--- 削除 : 1130 /* <--- 削除 1131 cmn_err(CE_NOTE,"CCIOC_SET_CRATE: cc->kreg->lamv = 0x%x \n", ddi _get16(cc->kreg_handle,&cc->kreg->lamv)); <--- 削除 1132 */ <--- 削除 : 1137 /* E.Inoue <--- 削除 1138 cc->k->lamc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; <--- 削除 1139 end */ <--- 削除 1140 /* E.Inoue */ <--- 追加 1141 cc->dev_kreg = (uint16_t)CC_INT_AUTO_CLEAR | (uint16_t)CC_INT_E NABLE | intrpri; <--- 追加 1142 ddi_put16(cc->kreg_handle, &cc->kreg->lamc, cc->dev_kreg); <--- 追加 1143 /* end */ <--- 追加 1144 /* E.Inoue */ 1145 /* <--- 削除 1146 cmn_err(CE_NOTE," cc->kreg->lamc = 0x%x \n", ddi_get16(cc->kreg_ handle, &cc->kreg->lamc)); <--- 削除 1147 */ <--- 削除 : 1141 /* E.Inoue */ <--- 削除 1142 /* <--- 削除 1143 cc->dev_kreg = 0xff; <--- 削除 1144 ddi_put16(cc->kreg_handle, &cc->kreg->lamv, cc->dev_kreg); <--- 削除 1145 */ <--- 削除 1146 /* <--- 削除 1147 ddi_put16(cc->kreg_handle, &cc->kreg->lamv, 0xff); <--- 削除 1148 */ <--- 削除 1149 /* <--- 削除 1150 cmn_err(CE_NOTE,"cc_ioctl: cc->kreg->lamv = 0x%x \n", ddi_get16( cc->kreg_handle, &cc->kreg->lamv)); <--- 削除 1151 */ <--- 削除 1152 /* end */ <--- 削除 : 1150 /* cmn_err(CE_NOTE," cc_ioctl: debug step02. cv_wait_sig() == 0"); */ <--- 削除 : 1154 /* <--- 削除 1155 cmn_err(CE_NOTE," cc_ioctl: debug step03. cv_wait_sig() != 0"); <--- 削除 1156 */ <--- 削除 : 1154 mutex_exit(&cc->mutex); /* end MUTEX */ <--- 追加 : 1178 /* E.Inoue cc->k->lamc = CC_INT_AUTO_CLEAR | intrpri; end */ <--- 削除 1179 /* E.Inoue */ 1180 cc->dev_kreg = (uint16_t)CC_INT_AUTO_CLEAR | intrpri; <--- 追加 1181 ddi_put16(cc->kreg_handle, &cc->kreg->lamc, cc->dev_kreg); <--- 追加 1182 /* end */ : 1213 /* <--- 削除 1214 cc->k->csr = CC_RST; <--- 削除 1215 */ <--- 削除 1216 ddi_put16(cc->kreg_handle, &cc->kreg->csr, (uint16_t)CC_RST); <--- 追加 : 1217 /* <--- 削除 1218 cc->k->lamc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <--- 削除 1219 cc->k->donc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <--- 削除 1220 cc->k->empc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <--- 削除 1221 cc->k->aboc = (u_short)(CC_INT_AUTO_CLEAR | intrpri); <--- 削除 1222 cc->k->lamv = (u_short)intrvec; <--- 削除 1223 cc->k->donv = (u_short)intrvec; <--- 削除 1224 cc->k->empv = (u_short)intrvec; <--- 削除 1225 cc->k->abov = (u_short)intrvec; <--- 削除 1226 */ <--- 削除 1227 ddi_put16(cc->kreg_handle, &cc->kreg->lamc, (uint16_t)(CC_INT_AUTO_C LEAR | intrpri)); <--- 追加 1228 ddi_put16(cc->kreg_handle, &cc->kreg->donc, (uint16_t)(CC_INT_AUTO_C LEAR | intrpri)); <--- 追加 1229 ddi_put16(cc->kreg_handle, &cc->kreg->empc, (uint16_t)(CC_INT_AUTO_C LEAR | intrpri)); <--- 追加 1230 ddi_put16(cc->kreg_handle, &cc->kreg->aboc, (uint16_t)(CC_INT_AUTO_C LEAR | intrpri)); <--- 追加 1231 ddi_put16(cc->kreg_handle, &cc->kreg->lamv, (uint16_t)intrvec); <--- 追加 1232 ddi_put16(cc->kreg_handle, &cc->kreg->donv, (uint16_t)intrvec); <--- 追加 1233 ddi_put16(cc->kreg_handle, &cc->kreg->empv, (uint16_t)intrvec); <--- 追加 1234 ddi_put16(cc->kreg_handle, &cc->kreg->abov, (uint16_t)intrvec); <--- 追加 : 2148 int cc_waitint(cc) 2149 struct cc_device *cc; 2150 { : 2158 /* E.Inoue <--- 削除 2159 s = spl5(); <--- 削除 2160 end */ <--- 削除 : 2175 /* E.Inoue <--- 削除 2176 splx(s); <--- 削除 2177 end */ <--- 削除 : 2196 /* E.Inoue <--- 削除 2197 s = spl5(); <--- 削除 2198 end */ <--- 削除 : 2214 /* E.Inoue <--- 削除 2215 splx(s); <--- 削除 2216 end */ <--- 削除 : 2665 /* E.Inoue */ 2666 /* <--- 削除 2667 cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2668 cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2669 cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2670 cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2671 */ <--- 削除 2672 ddi_put16(cc->kreg_handle, &cc->kreg->lamc, (uint16_t)CC_INT_AUTO_CL EAR); <--- 追加 2673 ddi_put16(cc->kreg_handle, &cc->kreg->donc, (uint16_t)CC_INT_AUTO_CL EAR); <--- 追加 2674 ddi_put16(cc->kreg_handle, &cc->kreg->empc, (uint16_t)CC_INT_AUTO_CL EAR); <--- 追加 2675 ddi_put16(cc->kreg_handle, &cc->kreg->aboc, (uint16_t)CC_INT_AUTO_CL EAR); <--- 追加 2676 /* end */ : 2673 /* cc->k->cma = CC_CMA_INIT; */ /* Initialize memory po inter */ <--- 削除 2674 ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT); 2675 /* Initialize memory poi nter */ <--- 追加 2676 /* cc->k->cmr = mode | (cc->cur_crate << 8); */ /* Write command list */ <--- 削除 2677 ddi_put16(cc->kreg_handle, &cc->kreg->cmr, (mode | (uint16_t)(cc->cu r_crate << 8))); <--- 追加 2678 /* Write command list */ 2679 /* cc->k->cmr = naf; <--- 削除 2680 cc->k->cmr = CC_HALT; <--- 削除 2681 */ <--- 削除 2682 ddi_put16(cc->kreg_handle, &cc->kreg->cmr, (uint16_t)naf); <--- 追加 2683 ddi_put16(cc->kreg_handle, &cc->kreg->cmr, (uint16_t)CC_HALT); <--- 追加 2684 /* cc->k->cma = CC_CMA_INIT; */ /* Reset memory poi nter */ <--- 削除 2685 ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT); 2686 /* Reset memory pointer */ <--- 追加 : 2685 /* <--- 削除 2686 cmn_err(CE_NOTE,"camac_s: cc->kreg->lamv = 0x%x \n", ddi_get16(c c->kreg_handle, &cc->kreg->lamv)); <--- 削除 2687 */ <--- 削除 : 2687 /* E.Inoue: from <--- 削除 2688 cmn_err(CE_NOTE," camac_s: debug step02. --- camac read"); <--- 削除 2689 E.Inoue: end */ <--- 削除 2690 /* E.Inoue <--- 削除 2691 cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2692 cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2693 cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2694 cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2695 end */ <--- 削除 : 2687 /* E.Inoue <--- 削除 2688 cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2689 cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2690 cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2691 cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2692 end */ <--- 削除 : 2688 /* <--- 削除 2689 cmn_err(CE_NOTE,"camac_s: step2: cc->kreg->lamv = 0x%x \n", ddi_ get16(cc->kreg_handle, &cc->kreg->lamv)); <--- 削除 2690 */ <--- 削除 2691 /* E.Inoue <--- 削除 2692 cc->k->csr &= (uint16_t)~CC_WRITE; <--- 削除 2693 end */ <--- 削除 2694 /* E.Inoue */ 2695 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2696 cc->dev_kreg &= (uint16_t)~CC_WRITE; <--- 追加 2697 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2698 /* end */ 2699 /* <--- 削除 2700 cmn_err(CE_NOTE,"camac_s: step3: cc->kreg->lamv = 0x%x \n", ddi_ get16(cc->kreg_handle, &cc->kreg->lamv)); <--- 削除 2701 */ <--- 削除 2702 /* E.Inoue 2703 cc->k->csr |= (uint16_t)CC_GO; end */ /* Go! */ <--- 削除 2704 /* E.Inoue */ 2705 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2706 cc->dev_kreg |= (uint16_t)CC_GO; <--- 追加 2707 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2708 /* Go! */ 2709 /* end */ 2710 <--- 削除 2711 /* E.Inoue <--- 削除 2712 while ((cc->k->csr & ((uint16_t)CC_RDY|(uint16_t)CC_ERR)) == 0 & & (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) <--- 削除 2713 end */ <--- 削除 2714 while (((ddi_get16(cc->kreg_handle, &cc->kreg->csr)) & ((uint16_ t)CC_RDY|(uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SIN GLE) <--- 追加 2715 (uint16_t)counter++; 2716 /* E.Inoue <--- 削除 2717 if ((cc->k->csr & (uint16_t)CC_RDY) != 0) { <--- 削除 2718 end */ <--- 削除 2719 if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & (uint16_t)CC_R DY) != 0) { <--- 追加 2720 if ((mode & (uint16_t)CC_BIT16) == 0) { <--- 追加 2721 /* E.Inoue <--- 削除 2722 *dat = cc->k->dhr & 0x00FF; <--- 削除 2723 *(dat + 1) = cc->k->dlr; <--- 削除 2724 end */ <--- 削除 : 2700 *dat = ddi_get16(cc->kreg_handle, &cc->kreg->dhr) & (uin t16_t)0x00FF; <--- 追加 2701 *(dat + 1) = ddi_get16(cc->kreg_handle, &cc->kreg->dlr); <--- 追加 2702 /* <--- 削除 2703 cmn_err(CE_NOTE," camac_s: read data. --- *dat = 0x%x, * (dat + 1) = 0x%x\n", *dat, *(dat + 1)); <--- 削除 2704 */ <--- 削除 : 2704 /* E.Inoue <--- 削除 2705 *dat = cc->k->dlr; <--- 削除 2706 end */ <--- 削除 2707 *dat = ddi_get16(cc->kreg_handle, &cc->kreg->dlr); <--- 追加 : 2706 /* <--- 削除 2707 cmn_err(CE_NOTE,"camac_s: step4: cc->kreg->lamv = 0x%x \n", ddi_ get16(cc->kreg_handle, &cc->kreg->lamv)); <--- 削除 2708 */ <--- 削除 : 2710 /* E.Inoue <--- 削除 2711 cc->k->lamc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2712 cc->k->donc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2713 cc->k->empc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2714 cc->k->aboc = (u_short)CC_INT_AUTO_CLEAR; <--- 削除 2715 end */ <--- 削除 2716 2717 /* E.Inoue <--- 削除 2718 cc->k->csr |= (uint16_t)CC_WRITE; <--- 削除 2719 end */ <--- 削除 2720 /* E.Inoue */ 2721 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2722 cc->dev_kreg |= (uint16_t)CC_WRITE; <--- 追加 2723 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2724 /* end */ <--- 削除 2725 : 2715 /* E.Inoue <--- 削除 2716 cc->k->csr |= (uint16_t)CC_GO; end */ /* Go! */ <--- 削除 2717 /* E.Inoue */ <--- 削除 2718 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2719 cc->dev_kreg |= (uint16_t)CC_GO; <--- 追加 2720 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2721 /* Go! */ 2722 /* end */ : 2719 /* E.Inoue <--- 削除 2720 while ((cc->k->csr & ((uint16_t)CC_RDY|(uint16_t)CC_ERR)) == 0 & & (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) <--- 削除 2721 end */ <--- 削除 2722 while (((ddi_get16(cc->kreg_handle, &cc->kreg->csr)) & ((uint16_ t)CC_RDY|(uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SIN GLE) <--- 追加 2723 (uint16_t)counter++; <--- 追加 2724 /* E.Inoue <--- 削除 2725 if ((cc->k->csr & (uint16_t)CC_RDY) != 0) { <--- 削除 2726 end */ <--- 削除 2727 if ((ddi_get16(cc->kreg_handle, &cc->kreg->csr) & (uint16_t)CC_R DY) != 0) { <--- 追加 2728 if ((mode & (uint16_t)CC_BIT16) == 0) { <--- 追加 2729 /* E.Inoue <--- 削除 2730 cc->k->dhr = *dat; <--- 削除 2731 cc->k->dlr = *(dat + 1); <--- 削除 2732 end */ <--- 削除 2733 ddi_put16(cc->kreg_handle, &cc->kreg->dhr, *dat); <--- 追加 2734 ddi_put16(cc->kreg_handle, &cc->kreg->dlr, *(dat + 1)); <--- 追加 : 2727 /* E.Inoue <--- 削除 2728 cc->k->dlr = *dat; <--- 削除 2729 end */ <--- 削除 2730 ddi_put16(cc->kreg_handle, &cc->kreg->dlr, *dat); <--- 追加 : 2733 /* E.Inoue <--- 削除 2734 cc->k->csr |= (uint16_t)CC_GO; */ /* Go! */ <--- 削除 2735 /* E.Inoue */ 2736 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2737 cc->dev_kreg |= (uint16_t)CC_GO; <--- 追加 2738 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2739 /* Go! */ 2740 /* end */ : 2742 /* <--- 削除 2743 while ((cc->k->csr & ((uint16_t)CC_DONE | (uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SINGLE) <--- 削除 2744 */ <--- 削除 2745 while (((ddi_get16(cc->kreg_handle, &cc->kreg->csr)) & ((uint16_t)CC _DONE | (uint16_t)CC_ERR)) == 0 && (uint16_t)counter < (uint16_t)CC_TIMEOUT_SING LE) <--- 追加 2746 (uint16_t)counter++; <--- 追加 : 2745 /* <--- 削除 2746 cc->camac_qx = cc->k->csr; <--- 削除 2747 */ <--- 削除 2748 cc->camac_qx = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 : 2745 if ((uint16_t)counter >= (uint16_t)CC_TIMEOUT_SINGLE) { <--- 修正 2746 cc->status = (uint16_t)CC_STA_SINGLE_TIMEOUT; <--- 修正 : 2749 /* <--- 削除 2750 cmn_err(CE_NOTE,"camac_s-end: cc->kreg->lamv = 0x%x \n", ddi_get 16(cc->kreg_handle, &cc->kreg->lamv)); <--- 削除 2751 */ <--- 削除 : 2794 /* E.Inoue <--- 削除 2795 register u_long dma_addr; <--- 削除 2796 end */ <--- 削除 2797 /* E.Inoue */ 2798 register uint32_t dma_addr; <--- 追加 2799 /* end */ : 2802 /* E.Inoue <--- 削除 2803 register mode; <--- 削除 2804 register naf; <--- 削除 2805 register int wc; <--- 削除 2806 end */ <--- 削除 2807 register uint16_t mode; <--- 追加 2808 register uint16_t naf; <--- 追加 2809 register int wc; <--- 追加 : 2806 /* E.Inoue <--- 削除 2807 register u_int flags; <--- 削除 2808 end */ <--- 削除 2809 /* E.Inoue */ 2810 register uint_t flags; <--- 追加 2811 /* end */ : 2810 int *d_data; <--- 追加 : 2814 /* E.Inoue */ 2815 cc->bp = bp; <--- 追加 2816 /* end */ : 2820 /* <--- 削除 2821 cmn_err(CE_NOTE," cc_strategy: mode = 0x%x \n", mode); <--- 削除 2822 cmn_err(CE_NOTE," cc_strategy: naf = 0x%x \n", naf);<--- 削除 2823 cmn_err(CE_NOTE," cc_strategy: wc = 0x%x \n", wc); <--- 削除 2824 */ <--- 削除 : 2834 /* cmn_err(CE_NOTE," cc_strategy: check1. --- unit = 0x%x \n", unit); */ <--- 削除 2835 /* cmn_err(CE_NOTE," cc_strategy: check1. \n"); */ <--- 削除 : 2840 /* mutex_exit(&cc->mutex); */ <--- 削除 2841 /* cmn_err(CE_NOTE," cc_strategy: check2. \n"); */ <--- 削除 : 2843 /* E.Inoue <--- 削除 2844 if((ddi_dma_buf_bind_handle(cc->handle, bp , <--- 削除 2845 flags | DDI_DMA_CONSISTENT, DDI_DMA_SLEEP, (caddr_t)0, <--- 削除 2846 &cc->dma_cookie, &cc->ccount) != DDI_DMA_MAPPED)){ <--- 削除 2847 cmn_err(CE_WARN,"cc_strategy: ddi_dma_buf_bind_handle failed"); <--- 削除 2848 bp->b_flags |= B_ERROR; <--- 削除 2849 bp->b_error = EIO; <--- 削除 2850 return bp->b_flags; <--- 削除 2851 } <--- 削除 2852 end */ <--- 削除 : 2843 /* E.Inoue <--- 削除 2844 if((ddi_dma_buf_bind_handle(cc->handle, cc->bp , <--- 削除 2845 flags | DDI_DMA_CONSISTENT, DDI_DMA_SLEEP, (caddr_t)0, <--- 削除 2846 &cc->dma_cookie, &cc->ccount) != DDI_DMA_MAPPED)){ <--- 削除 2847 cmn_err(CE_WARN,"cc_strategy: ddi_dma_buf_bind_handle failed"); <--- 削除 2848 cc->bp->b_flags |= B_ERROR; <--- 削除 2849 cc->bp->b_error = EIO; <--- 削除 2850 return cc->bp->b_flags; <--- 削除 2851 } <--- 削除 2852 end */ <--- 削除 2853 /* E.Inoue */ 2854 if((ddi_dma_buf_bind_handle(cc->handle, cc->bp , <--- 追加 2855 flags | DDI_DMA_CONSISTENT, DDI_DMA_SLEEP, (caddr_t)0, <--- 追加 2856 &cc->dma_cookie, &cc->ccount) != DDI_DMA_MAPPED)){ <--- 追加 2857 cmn_err(CE_WARN,"cc_strategy: ddi_dma_buf_bind_handle failed"); <--- 追加 2858 cc->bp->b_flags |= B_ERROR; <--- 追加 2859 cc->bp->b_error = EIO; <--- 追加 2860 return cc->bp->b_flags; <--- 追加 2861 } <--- 追加 2862 /* end */ : 2876 /* E.Inoue <--- 削除 2877 dma_addr += 0x8; <--- 削除 2878 end */ <--- 削除 2879 /* <--- 削除 2880 cmn_err(CE_NOTE," cc_strategy: cc->ccount = 0x%x \n", cc->ccount); <--- 削除 2881 cmn_err(CE_NOTE," cc_strategy: size of cc->dma_cookie.dmac_address is %lu bytes\n", sizeof(cc->dma_cookie.dmac_address)); <--- 削除 2882 cmn_err(CE_NOTE," cc_strategy: size of cc->dma_cookie.dmac_size is %l u bytes\n", sizeof(cc->dma_cookie.dmac_size)); <--- 削除 2883 cmn_err(CE_NOTE," cc_strategy: size of dma_addr = %lu bytes \n", siz eof(dma_addr)); <--- 削除 2884 */ <--- 削除 2885 /* E.Inoue dma_addr = cc->dma_cookie.dmac_laddress; */ <--- 削除 2886 /* <--- 削除 2887 cmn_err(CE_NOTE," cc_strategy: contents of dma_addr = 0x%x \n", dma_ addr); <--- 削除 2888 cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_addre ss = 0x%x \n", cc->dma_cookie.dmac_address); <--- 削除 2889 cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_laddr ess = 0x%x \n", cc->dma_cookie.dmac_laddress); <--- 削除 2890 cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_size = 0x%x \n", cc->dma_cookie.dmac_size); <--- 削除 2891 */ <--- 削除 2892 /* <--- 削除 2893 d_data = cc->dma_cookie.dmac_address; <--- 削除 2894 cmn_err(CE_NOTE," cc_strategy: *d_data = 0x%x \n", *d_data); <--- 削除 2895 */ <--- 削除 2896 /* <--- 削除 2897 copyin((caddr_t)cc->dma_cookie.dmac_address, (caddr_t)cc->data_a rea, sizeof(u_short)); <--- 削除 2898 cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_a ddress =0x%x\n", cc->data_area[0]); <--- 削除 2899 */ <--- 削除 2900 /* copyin((uint16_t *)cc->dma_cookie.dmac_address, (u_short *)cc- >data_area, 4*sizeof(u_short)); */ <--- 削除 2901 copyin((caddr_t)cc->dma_cookie.dmac_address, (caddr_t)cc->data_a rea, 4*sizeof(u_short)); <--- 追加 2902 /* <--- 削除 2903 cmn_err(CE_NOTE," cc_strategy: contents of cc->dma_cookie.dmac_a ddress =0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x\n", cc->data_area[0],cc->data_area[1] ,cc->data_area[2],cc->data_area[3],cc->data_area[4],cc->data_area[5]); <--- 削除 2904 */ <--- 削除 2905 2906 : 2883 /* E.inoue <--- 削除 2884 cc->k->cma = CC_CMA_INIT; end */ /* Initialize memory po <--- 削除 inter */ <--- 削除 2885 /* E.Inoue <--- 削除 2886 cc->k->cmr = mode | (cc->cur_crate << 8); <--- 削除 2887 cc->k->cmr = naf; <--- 削除 2888 cc->k->cmr = -(cc->len & 0xFFFF); end */ /* Max len = 1MW ord */ <--- 削除 2889 /* E.inoue <--- 削除 2890 cc->k->cmr = 0xFFFF; <--- 削除 2891 cc->k->cmr = CC_HALT; <--- 削除 2892 cc->k->cma = CC_CMA_INIT; end */ /* Reset memory poin ter */ <--- 削除 2893 /* E.inoue <--- 削除 2894 cc->k->maclo = dma_addr & 0xFFFF; end */ /* Set DMA base add ress */ <--- 削除 2895 /* E.Inoue <--- 削除 2896 cc->k->machi = dma_addr >> 16; <--- 削除 2897 cc->k->amr = CC_AMR_INIT; end */ /* Set VME AM code */ <--- 削除 2898 /* E.Inoue <--- 削除 2899 cc->k->mtc = wc; <--- 削除 2900 cc->k->cser = CC_DMA_RESET; end */ /* DMA reset */ <--- 削除 2901 <--- 削除 2902 /* E.Inoue */ 2903 ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT ); <--- 追加 2904 /* Initialize memory poi nter */ 2905 /* ddi_put16(cc->kreg_handle, &cc->kreg->cmr, mode | (cc->cur_cra te << 8)); */ <--- 削除 : 2889 /* ddi_put16(cc->kreg_handle, &cc->kreg->cmr, -(cc->len & 0xFFFF) ); */ <--- 削除 : 2896 /* E.Inoue */ 2897 /* <--- 削除 2898 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2899 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2900 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2901 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2902 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2903 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2904 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2905 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2906 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2907 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cmr = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cmr)); <--- 削除 2908 ddi_put16(cc->kreg_handle, &cc->kreg->cma, (uint16_t)CC_CMA_INIT ); <--- 削除 2909 */ <--- 削除 2910 /* Reset memory pointe r */ <--- 削除 2911 /* end */ : 2897 /* ddi_put16(cc->kreg_handle, &cc->kreg->maclo, dma_addr & 0xFFFF ); */ <--- 削除 2898 dma_addr = dma_addr & 0xFFFF; <--- 追加 2899 ddi_put16(cc->kreg_handle, &cc->kreg->maclo, (uint16_t)dma_addr) ; <--- 追加 2900 /* Set DMA base addres s */ 2901 /* ddi_put16(cc->kreg_handle, &cc->kreg->machi, dma_addr >> 16); */ <--- 削除 2902 dma_addr = dma_addr >> 16; <--- 追加 2903 ddi_put16(cc->kreg_handle, &cc->kreg->machi, (uint16_t)dma_addr) ; <--- 追加 2904 ddi_put16(cc->kreg_handle, &cc->kreg->amr, (uint16_t)CC_AMR_INIT ); <--- 追加 2905 /* ddi_put16(cc->kreg_handle, &cc->kreg->amr, (uint16_t)0x0079); */ <--- 削除 2906 /* Set VME AM code */ 2907 /* E.Inoue <--- 削除 2908 if (wc == 1) <--- 削除 2909 ddi_put16(cc->kreg_handle, &cc->kreg->mtc, (uint16_t)wc+1); <--- 削除 2910 else <--- 削除 2911 ddi_put16(cc->kreg_handle, &cc->kreg->mtc, (uint16_t)wc); <--- 削除 2912 end */ <--- 削除 2913 ddi_put16(cc->kreg_handle, &cc->kreg->mtc, (uint16_t)wc); <--- 追加 2914 ddi_put16(cc->kreg_handle, &cc->kreg->cser, (uint16_t)CC_DMA_RES ET); <--- 追加 2915 /* DMA reset */ 2916 /* end */ : 2907 /* <--- 削除 2908 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->mtc = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->mtc)); <--- 削除 2909 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->cwc = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->cwc)); <--- 削除 2910 */ <--- 削除 : 2910 /* E.Inoue <--- 削除 2911 cc->k->docr = CC_DOCR_INIT | CC_DMA_READ; <--- 削除 2912 cc->k->sccr = CC_DMA_START; <--- 削除 2913 cc->k->csr |= CC_DMA; end */ /* DMA mode */ <--- 削除 2914 /* E.Inoue <--- 削除 2915 cc->k->csr &= ~CC_WRITE; <--- 削除 2916 end */ <--- 削除 2917 /* E.inoue */ 2918 ddi_put16(cc->kreg_handle, &cc->kreg->docr, (uint16_t)CC_DOCR_IN IT | (uint16_t)CC_DMA_READ); <--- 追加 2919 ddi_put16(cc->kreg_handle, &cc->kreg->sccr, (uint16_t)CC_DMA_STA RT); <--- 追加 2920 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2921 cc->dev_kreg |= (uint16_t)CC_DMA; <--- 追加 2922 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2923 /* DMA mode */ 2924 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2925 cc->dev_kreg &= (uint16_t)~CC_WRITE; <--- 追加 2926 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2927 /* end */ : 2921 /* <--- 削除 2922 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->maclo = 0x%x \n", ddi _get16(cc->kreg_handle, &cc->kreg->maclo)); <--- 削除 2923 cmn_err(CE_NOTE," cc_strategy: read: cc->kreg->machi = 0x%x \n", ddi _get16(cc->kreg_handle, &cc->kreg->machi)); <--- 削除 2924 */ <--- 削除 : 2924 /* E.Inoue <--- 削除 2925 cc->k->docr = CC_DOCR_INIT | CC_DMA_WRITE; <--- 削除 2926 cc->k->sccr = CC_DMA_START; <--- 削除 2927 cc->k->csr |= CC_DMA; end */ /* DMA mode */ <--- 削除 2928 /* E.Inoue <--- 削除 2929 cc->k->csr |= CC_WRITE; <--- 削除 2930 end */ <--- 削除 : 2924 /* E.Inoue */ 2925 ddi_put16(cc->kreg_handle, &cc->kreg->docr, (uint16_t)CC_DOCR_IN IT | (uint16_t)CC_DMA_WRITE); <--- 追加 2926 ddi_put16(cc->kreg_handle, &cc->kreg->sccr, (uint16_t)CC_DMA_STA RT); <--- 追加 2927 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2928 cc->dev_kreg |= (uint16_t)CC_DMA; <--- 追加 2929 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2930 /* DMA mode */ 2931 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2932 cc->dev_kreg |= (uint16_t)CC_WRITE; <--- 追加 2933 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2934 /* end */ : 2935 /* <--- 削除 2936 cmn_err(CE_NOTE," cc_strategy: write: cc->kreg->maclo = 0x%x \n", dd i_get16(cc->kreg_handle, &cc->kreg->maclo)); <--- 削除 2937 cmn_err(CE_NOTE," cc_strategy: write: cc->kreg->machi = 0x%x \n", dd i_get16(cc->kreg_handle, &cc->kreg->machi)); <--- 削除 2938 */ <--- 削除 : 2944 /* E.Inoue <--- 削除 2945 cc->k->cma = cc->now_cma; end */ /* Initialize memory po inter */ <--- 削除 2946 /* E.Inoue <--- 削除 2947 cc->k->maclo = dma_addr & 0xFFFF; end */ /* Set DMA base addr ess */ <--- 削除 2948 /* E.Inoue <--- 削除 2949 cc->k->machi = dma_addr >> 16; <--- 削除 2950 cc->k->amr = CC_AMR_INIT; end */ /* Set VME AM co de */ <--- 削除 2951 /* E.Inoue <--- 削除 2952 cc->k->mtc = cc->now_wc; <--- 削除 2953 cc->k->cser = CC_DMA_RESET; end */ /* DMA reset */ <--- 削除 2954 2955 /* E.Inoue <--- 削除 2956 cc->k->docr = CC_DOCR_INIT | CC_DMA_READ; <--- 削除 2957 cc->k->sccr = CC_DMA_START; <--- 削除 2958 cc->k->csr |= CC_DMA; end */ /* DMA mode */ <--- 削除 2959 /* E.Inoue <--- 削除 2960 cc->k->csr &= ~CC_WRITE; <--- 削除 2961 end */ <--- 削除 2962 /* E.Inoue */ 2963 ddi_put16(cc->kreg_handle, &cc->kreg->cma, cc->now_cma); <--- 追加 2964 /* Initialize memory po inter */ 2965 ddi_put16(cc->kreg_handle, &cc->kreg->maclo, dma_addr & 0xFFFF); <--- 追加 2966 /* Set DMA base addres s */ 2967 ddi_put16(cc->kreg_handle, &cc->kreg->machi, dma_addr >> 16); <--- 追加 2968 ddi_put16(cc->kreg_handle, &cc->kreg->amr, (uint16_t)CC_AMR_INIT ); <--- 追加 2969 /* Set VME AM code */ 2970 ddi_put16(cc->kreg_handle, &cc->kreg->mtc, cc->now_wc); <--- 追加 2971 ddi_put16(cc->kreg_handle, &cc->kreg->cser, (uint16_t)CC_DMA_RES ET); <--- 追加 2972 /* DMA reset */ 2973 ddi_put16(cc->kreg_handle, &cc->kreg->docr, (uint16_t)CC_DOCR_IN IT | (uint16_t)CC_DMA_READ); <--- 追加 2974 ddi_put16(cc->kreg_handle, &cc->kreg->sccr, (uint16_t)CC_DMA_STA RT); <--- 追加 2975 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2976 cc->dev_kreg |= (uint16_t)CC_DMA; <--- 追加 2977 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2978 /* DMA mode */ 2979 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2980 cc->dev_kreg &= (uint16_t)~CC_WRITE; <--- 追加 2981 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2982 /* end */ 2983 } 2984 /* E.Inoue */ <--- 削除 2985 <--- 削除 2986 /* end */ <--- 削除 : 2969 /* cmn_err(CE_NOTE," cc_strategy: check3. --- start DMA\n"); */ <--- 削除 2970 cc->executing_dma_flag = 1; 2971 /* E.Inoue <--- 削除 2972 cc->timeout_id = timeout(cc_timeout, (caddr_t)&unit, CC_TIMEOUT_DMA * hz); <--- 削除 2973 end */ <--- 削除 2974 /* E.Inoue <--- 削除 2975 cc->k->csr |= CC_GO; end */ /* Go! */ <--- 削除 2976 /* E.Inue <--- 削除 2977 cc->k->donc = CC_INT_AUTO_CLEAR | CC_INT_ENABLE | intrpri; <--- 削除 2978 end */ <--- 削除 : 2970 /* E.Inoue */ 2971 cc->timeout_id = timeout(cc_timeout, (void *)unit, CC_TIMEOUT_DMA * (clock_t)hz); <--- 追加 2972 cc->dev_kreg = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 2973 cc->dev_kreg |= (uint16_t)CC_GO; <--- 追加 2974 ddi_put16(cc->kreg_handle, &cc->kreg->csr, cc->dev_kreg); <--- 追加 2975 /* Go! */ 2976 ddi_put16(cc->kreg_handle, &cc->kreg->donc, (uint16_t)CC_INT_AUT O_CLEAR | (uint16_t)CC_INT_ENABLE | intrpri); <--- 追加 2977 /* end */ : 2979 /* cmn_err(CE_NOTE," cc_strategy: check4. --- return cc_strategy\n"); */ <--- 削除 : 2993 /* E.Inoue */ 2994 int ret; <--- 追加 2995 /* end */ 2996 caddr_t d_data; <--- 追加 : 3014 /* uio->uio_offset = 0; */ <--- 削除 3015 uio->uio_loffset = 0; <--- 追加 : 3018 /* <--- 削除 3019 uprintf(" in: 0x%x %d %d %d %d %d\n", <--- 削除 3020 uio->uio_iov->iov_base, <--- 削除 3021 uio->uio_iov->iov_len, <--- 削除 3022 uio->uio_iovcnt, <--- 削除 3023 uio->uio_resid, <--- 削除 3024 uio->uio_segflg, <--- 削除 3025 uio->uio_offset); <--- 削除 3026 */ <--- 削除 : 3030 /* <--- 削除 3031 cmn_err(CE_NOTE," camac_b: read: call physio --- uio = 0x%x \n", uio); <--- 削除 3032 */ <--- 削除 3033 /* physio(cc_strategy, NULL, dev, B_READ, cc_minphys, uio); */ <--- 削除 3034 ret = physio(cc_strategy, NULL, dev, B_READ, cc_minphys, uio); <--- 追加 3035 /* cmn_err(CE_NOTE," camac_b: read: physio return value = 0x%x\n" , ret); */ <--- 削除 3036 /* <--- 削除 3037 cmn_err(CE_NOTE," camac_b: read: cc->kreg->csr = 0x%x\n", cc->kr eg->csr); <--- 削除 3038 */ <--- 削除 : 3033 /* <--- 削除 3034 cmn_err(CE_NOTE," camac_b: write: call physio --- uio = 0x%x \n" , uio); <--- 削除 3035 */ <--- 削除 3036 /* physio(cc_strategy, NULL, dev, B_WRITE, cc_minphys, uio); */ <--- 削除 3037 ret = physio(cc_strategy, NULL, dev, B_WRITE, cc_minphys, uio); <--- 追加 3038 /* cmn_err(CE_NOTE," camac_b: write: physio return value = 0x%x\n ", ret); */ <--- 削除 3039 /* <--- 削除 3040 cmn_err(CE_NOTE," camac_b: write: cc->kreg->csr = 0x%x\n", cc->k reg->csr); <--- 削除 3041 */ <--- 削除 : 3039 /* <--- 削除 3040 cmn_err(CE_NOTE," camac_b: cc->len = 0x%x, cc->k->mtc = 0x%x\n", cc->len, ddi_get16(cc->kreg_handle, &cc->kreg->mtc)); <--- 削除 3041 */ <--- 削除 3042 /* E.Inoue <--- 削除 3043 cmn_err(CE_NOTE," camac_b: cc->kreg->dlr(data low) = 0x%x \n", ddi_g et16(cc->kreg_handle, &cc->kreg->dlr)); <--- 削除 3044 end */ <--- 削除 3045 3046 /* E.inoue <--- 削除 3047 cc->k->donc = CC_INT_AUTO_CLEAR | intrpri; <--- 削除 3048 cc->camac_qx = cc->k->csr; <--- 削除 3049 end */ <--- 削除 3050 /* E.Inoue */ 3051 ddi_put16(cc->kreg_handle, &cc->kreg->donc, (CC_INT_AUTO_CLEAR | int rpri)); <--- 追加 3052 cc->camac_qx = ddi_get16(cc->kreg_handle, &cc->kreg->csr); <--- 追加 3053 /* end */ 3054 : 3053 /* */ <--- 削除 3054 /* <--- 削除 3055 uprintf("out: %d %d %d %d %d\n", <--- 削除 3056 uio->uio_iov->iov_len, <--- 削除 3057 uio->uio_iovcnt, <--- 削除 3058 uio->uio_resid, <--- 削除 3059 uio->uio_segflg, <--- 削除 3060 uio->uio_offset); <--- 削除 3061 */ <--- 削除 3062 /* <--- 削除 3063 cmn_err(CE_NOTE,"out: %d %d %d %d %d", <--- 削除 3064 uio->uio_iov->iov_len, <--- 削除 3065 uio->uio_iovcnt, <--- 削除 3066 uio->uio_resid, <--- 削除 3067 uio->uio_segflg, <--- 削除 3068 uio->uio_offset); <--- 削除 3069 */ <--- 削除 : 3080 /* E.inoue <--- 削除 3081 if ((mode & CC_QSCAN) == 0 || (cc->k->csr & CC_ERR) == 0) {<--- 削除 3082 if ((mode & CC_BIT16) == 0) { <--- 削除 3083 cc->retlen = cc->len - cc->k->mtc / 2; */ /* retlen=number o f transfer */ <--- 削除 3084 if ((mode & CC_QSCAN) == 0 || (ddi_get16(cc->kreg_handle, &cc->kreg- >csr) & CC_ERR) == 0) { <--- 追加 3085 if ((mode & CC_BIT16) == 0) { <--- 追加 3086 cc->retlen = cc->len - ddi_get16(cc->kreg_handle, &cc->kreg- >mtc) / 2; /* retlen=number of transfer */ <--- 追加 : 3089 /* E.inoue <--- 削除 3090 cc->retlen = cc->len - cc->k->mtc; <--- 削除 3091 if ((mode & CC_QSCAN) == 0 && (cc->k->csr & CC_ERR) != 0) en d */ /* Q-STOP */ <--- 削除 3092 /* E.Inoue */ 3093 cc->retlen = cc->len - ddi_get16(cc->kreg_handle, &cc->kreg- >mtc); <--- 追加 : 3091 /* <--- 削除 3092 cmn_err(CE_NOTE," camac_b: cc->len = 0x%x, cc->k->mtc = 0x%x\n", cc->len, ddi_get16(cc->kreg_handle, &cc->kreg->mtc)); <--- 削除 3093 */ <--- 削除 3094 if ((mode & CC_QSCAN) == 0 && (ddi_get16(cc->kreg_handle, &c c->kreg->csr) & CC_ERR) != 0) /*Q-STOP */ <--- 追加 : onlsun1[74]% コンパイルのチェックをする。 onl50t[44]% pwd /export/home/onl50t/inoue/compile-check onl50t[45]% ls FORCE-50T-sol7/ FORCE-50T-sol7-Jan12-2001/ FORCE-50T-sol7-Jan10-2001/ FORCE-50T-sol7-Jan12a2001/ FORCE-50T-sol7-Jan10a2001/ FORCE-50T-sol7-Jan12b2001/ FORCE-50T-sol7-Jan11-2001/ FORCE-50T-sol7-bak/ FORCE-50T-sol7-Jan11a2001/ FORCE-50T-sol7-bak1/ FORCE-50T-sol7-Jan11b2001/ FORCE-50T-sol7-bak2/ FORCE-50T-sol7-Jan11c2001/ FORCE-50T-sol7-bak3/ onl50t[46]% mv FORCE-50T-sol7 FORCE-50T-sol7-Jan12c2001 onl50t[47]% rcp -pr onlsun1:/export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit/FORCE-50T-sol7 . onl50t[48]% cd FORCE-50T-sol7 /export/home/onl50t/inoue/compile-check/FORCE-50T-sol7 onl50t[49]% ls -l total 516 -rw-r--r-- 1 inoue kek 2102 Dec 18 10:12 Makefile -rw-r--r-- 1 inoue kek 3624 Nov 22 15:52 README -rw-r--r-- 1 inoue kek 1170 Nov 22 15:52 cam1.c -rw-r--r-- 1 inoue kek 2336 Nov 22 15:52 cam2.f -rw-r--r-- 1 inoue kek 2055 Nov 22 15:52 cam3.c -rw-r--r-- 1 inoue kek 9740 Dec 18 15:19 camlib.c -rw-r--r-- 1 inoue kek 1415 Nov 22 15:52 camlib.h -rw-r--r-- 1 inoue kek 81531 Dec 28 10:32 cc.c -rw-r--r-- 1 inoue kek 288 Nov 22 15:52 cc.conf -rw-r--r-- 1 inoue kek 2931 Nov 22 15:52 cc.h -rw-r--r-- 1 inoue kek 82996 Jan 12 16:16 cc64.c -rw-r--r-- 1 inoue kek 49676 Dec 28 10:41 cc64.diff -rw-r--r-- 1 inoue kek 2288 Nov 22 15:52 cc_common.h -rw-r--r-- 1 inoue kek 876 Nov 22 15:52 cc_config.h -rw-r--r-- 1 inoue kek 3289 Nov 22 15:52 forlib.c -rw-r--r-- 1 inoue kek 4058 Nov 22 15:52 k2917.h -rw-r--r-- 1 inoue kek 2579 Dec 27 16:39 out drwxr-xr-x 2 inoue kek 512 Dec 6 11:33 script/ onl50t[50]% make ./script/cc_build.sh [Building for sun4u] rm -f cc.o cc64.o cc -xarch=v9 -O -c camlib.c -o camlib.o -I. cc -xarch=v9 -O -c forlib.c -o forlib.o -I. rm -f libcamac.a ar rcv libcamac.a camlib.o forlib.o a - camlib.o a - forlib.o ar: writing libcamac.a cc -xarch=v9 -O cam1.c -o cam1 -I. -L. -lcamac f77 -xarch=v9 -fast -O3 -u cam2.f -o cam2 -I. -L. -lcamac cam2.f: MAIN: cc -xarch=v9 -O cam3.c -o cam3 -I. -L. -lcamac onl50t[51]% ok. コンパイルのエラーは起きていない。 (3-4-11). FORCE-50T-sol7/cc_common.hファイルの整備 onlsun1[203]% diff cc_common.h ../tmp1/FORCE-50T-sol2.6/cc_common.h onlsun1[204]% cc_common.hファイルは変更していない。 (3-4-12). FORCE-50T-sol7/cc_config.hファイルの整備 onlsun1[205]% diff cc_config.h ../tmp1/FORCE-50T-sol2.6/cc_config.h onlsun1[206]% cc_config.hファイルは変更していない。 (3-4-13). FORCE-50T-sol7/forlib.cファイルの整備 onlsun1[206]% diff forlib.c ../tmp1/FORCE-50T-sol2.6/forlib.c onlsun1[207]% forlib.cファイルは変更していない。 (3-4-14). FORCE-50T-sol7/k2917.hファイルの整備 onlsun1[207]% diff k2917.h ../tmp1/FORCE-50T-sol2.6/k2917.h onlsun1[208]% k2917.hファイルは変更していない。 (3-4-15). FORCE-50T-sol7/script/ ディレクトリの整備 onlsun1[216]% pwd /export/home/onlsun1/inoue/workstation/onl50t/Solaris7/CAMAC-Kit/FORCE-50T-sol7/script onlsun1[217]% ls -l 合計 14 -rw-r--r-- 1 inoue kek 66 11月 22日 15:52 awk1.txt -rw-r--r-- 1 inoue kek 37 11月 22日 15:52 awk2.txt -rwxr-xr-x 1 inoue kek 233 11月 22日 15:52 cc_build.gcc.sh* -rwxr-xr-x 1 inoue kek 596 11月 22日 15:52 cc_build.sh* -rwxr-xr-x 1 inoue kek 833 11月 22日 15:52 cc_link.sh* -rwxr-xr-x 1 inoue kek 949 11月 22日 15:52 cc_load.sh* -rwxr-xr-x 1 inoue kek 404 11月 22日 15:52 cc_unload.sh* onlsun1[218]% (3-4-15A). FORCE-50T-sol7/script/awk1.txtファイルの整備 onlsun1[237]% diff awk1.txt ../../tmp1/FORCE-50T-sol2.6/script/awk1.txt onlsun1[238]% このファイルに関しては変更を加えていない。 従って、デバッグ後の削除、 変更の作業は必要ない。 (3-4-15Aa). FORCE-50T-sol7/script/awk1.txtファイルの修正 このファイルに関しては変更を加えていない。 従って、デバッグ後の削除、 変更の作業は必要ない。 (3-4-15B). FORCE-50T-sol7/script/awk2.txtファイルの整備 onlsun1[238]% diff awk2.txt ../../tmp1/FORCE-50T-sol2.6/script/awk2.txt onlsun1[239]% (3-4-15Ba). FORCE-50T-sol7/script/awk2.txtファイルの修正 このファイルに関しては変更を加えていない。 従って、デバッグ後の削除、 変更の作業は必要ない。 (3-4-15C). FORCE-50T-sol7/script/cc_build.gcc.shファイルの整備 onlsun1[239]% diff cc_build.gcc.sh ../../tmp1/FORCE-50T-sol2.6/script/cc_build.gcc.sh onlsun1[240]% (3-4-15Ca). FORCE-50T-sol7/script/cc_build.gcc.shファイルの修正 このファイルに関しては変更を加えていない。 従って、デバッグ後の削除、 変更の作業は必要ない。 (3-4-15D). FORCE-50T-sol7/script/cc_build.shファイルの整備 onlsun1[240]% diff cc_build.sh ../../tmp1/FORCE-50T-sol2.6/script/cc_build.sh 4d3 < # modified 14-Feb-2000 E.Inoue(KEK) 11,17d9 < # < #cc -c -D_SYSCALL32 -D_KERNEL -xarch=v9 -D_MACHDEP -DSUNDDI -DKERNEL -D$ARCH \ < cc -c -D_KERNEL -xarch=v9 -D_MACHDEP -DSUNDDI -DKERNEL -D$ARCH \ < -I. -I/usr/include -I/usr/share/src/uts/$ARCH \ < -xcode=abs32 -xregs=no%appl -xO3 -c cc64.c < # -xcode=abs64 -xregs=no%appl -xO3 -c cc64.c < ld -r -o cc64 cc64.o onlsun1[241]% (3-4-15Da). FORCE-50T-sol7/script/cc_build.shファイルの修正 cc_build.shファイルは一部変更を加えている。 onlsun1[248]% vi cc_build.sh : 3 # cc_build.sh 15-OCt-1993 Y.Takeuchi(T.I.T.) 4 # modified 17-Jan-2001 E.Inoue(KEK) <--- 追加 : 11 # 12 #cc -c -D_SYSCALL32 -D_KERNEL -xarch=v9 -D_MACHDEP -DSUNDDI -DKERNEL -D$ ARCH \ <--- 削除 13 cc -c -D_KERNEL -xarch=v9 -D_MACHDEP -DSUNDDI -DKERNEL -D$ARCH \ <--- 追加 14 -I. -I/usr/include -I/usr/share/src/uts/$ARCH \ <--- 追加 15 -xcode=abs32 -xregs=no%appl -xO3 -c cc64.c <--- 追加 16 # -xcode=abs64 -xregs=no%appl -xO3 -c cc64.c <--- 削除 17 ld -r -o cc64 cc64.o <--- 追加 : onlsun1[249]% (3-4-15E). FORCE-50T-sol7/script/cc_link.shファイルの整備 onlsun1[252]% diff cc_link.sh ../../tmp1/FORCE-50T-sol2.6/script/cc_link.sh 4d3 < # modified 19-Jan-2001 E.Inoue(KEK) 6,11d4 < set SYS57 = "5.7" < set SYSNL = `uname -sr` < if ( $SYSNL[2] == $SYS57 )then < set CCDIR=`dmesg|grep 'cc0 is'|tail -1|awk '{print $8}'|awk -f script/awk1.txt` < set CCNAM=`dmesg|grep 'cc0 is'|tail -1|awk '{print $8}'|awk -f script/awk2.txt` < else 15d7 < endif onlsun1[253]% (3-4-15Ea). FORCE-50T-sol7/script/cc_link.shファイルの修正 cc_link.shファイルは一部変更を加えている。 onlsun1[254]% vi cc_link.sh : 4 # modified 19-Jan-2001 E.Inoue(KEK) <--- 追加 : 6 set SYS57 = "5.7" <--- 追加 7 set SYSNL = `uname -sr` <--- 追加 8 if ( $SYSNL[2] == $SYS57 )then <--- 追加 9 set CCDIR=`dmesg|grep 'cc0 is'|tail -1|awk '{print $8}'|awk -f script/aw k1.txt` <--- 追加 10 set CCNAM=`dmesg|grep 'cc0 is'|tail -1|awk '{print $8}'|awk -f script/aw k2.txt` <--- 追加 11 else <--- 追加 : 15 endif <--- 追加 : onlsun1[255]% (3-4-15F). FORCE-50T-sol7/script/cc_load.shファイルの整備 onlsun1[257]% diff cc_load.sh ../../tmp1/FORCE-50T-sol2.6/script/cc_load.sh 4,5d3 < # modified for sun4u. 9-Jun-1999 E.Inoue < # modified for cc64. 19-Jan-2001 E.Inoue 6a5,6 > # * 9-Jun-1999 E.Inoue modify for sun4u. > # 8,12c8,9 < #cp cc /usr/kernel/drv/ < cp cc /kernel/drv/ < cp cc64 /kernel/drv/sparcv9/cc < #cp cc.conf /usr/kernel/drv/ < cp cc.conf /kernel/drv/ --- > cp cc /usr/kernel/drv/ > cp cc.conf /usr/kernel/drv/ onlsun1[258]% (3-4-15Fa). FORCE-50T-sol7/script/cc_load.shファイルの修正 cc_load.shファイルは一部変更を加えている。 onlsun1[260]% vi cc_load.sh : 4 # modified for sun4u. 9-Jun-1999 E.Inoue <--- 変更 5 # modified for cc64. 19-Jan-2001 E.Inoue <--- 追加 : 8 #cp cc /usr/kernel/drv/ <--- 削除 9 cp cc /kernel/drv/ <--- 追加 10 cp cc64 /kernel/drv/sparcv9/cc <--- 追加 11 #cp cc.conf /usr/kernel/drv/ <--- 削除 12 cp cc.conf /kernel/drv/ <--- 追加 : onlsun1[261]% (3-4-15G). FORCE-50T-sol2.6-list/script/cc_unload.shファイルの整備 onlsun1[262]% diff cc_unload.sh ../../tmp1/FORCE-50T-sol2.6/script/cc_unload.sh 4d3 < # modified for cc64. 22-Jan-2001 E.Inoue 7,11c6,7 < #rm -f /usr/kernel/drv/cc < rm -f /kernel/drv/cc < rm -f /kernel/drv/sparcv9/cc < #rm -f /usr/kernel/drv/cc.conf < rm -f /kernel/drv/cc.conf --- > rm -f /usr/kernel/drv/cc > rm -f /usr/kernel/drv/cc.conf onlsun1[263]% (3-4-15Ga). FORCE-50T-sol7/script/cc_unload.shファイルの修正 cc_unload.shファイルは一部変更を加えている。 onlsun1[264]% vi cc_unload.sh : 4 # modified for cc64. 22-Jan-2001 E.Inoue <--- 追加 : 7 #rm -f /usr/kernel/drv/cc <--- 削除 8 rm -f /kernel/drv/cc <--- 追加 9 rm -f /kernel/drv/sparcv9/cc <--- 追加 10 #rm -f /usr/kernel/drv/cc.conf <--- 削除 11 rm -f /kernel/drv/cc.conf <--- 追加 : onlsun1[265]% (3-4-15H). FORCE-50T-sol2.6-list/READMEファイルの整備 onlsun1[270]% diff README ../tmp1/FORCE-50T-sol2.6/README onlsun1[271]% 変更は加えていない。 今回、開発した新しいキットに合わせて書き直すことにする。 (3-4-15Ha). FORCE-50T-sol2.6-list/READMEファイルの修正 以下のように修正した。 onlsun1[47]% vi README Jan 26, 2001 CAMAC Device Driver for Solaris7, for 64 bits kernel Release 3.0 Yasuo Takeuchi (ICRR) Jan 26, 2001 edited by Eiji Inoue (KEK) 1. Overview This is a CAMAC Device Driver distribution kit for FORCE 64bits SPARC CPU board of the VME standard. This "CAMAC Device Driver for Solaris7" allows the Kinetic Systems Corporation's K2917-Z1A(VME-CAMAC interface), K3922-Z1B(CAMAC CC) modules to be used under Solaris7. It contains a CAMAC device driver source program, set of CAMAC library program, and some sample programs for the 64bits SPARC CPU board. Please refer to "Usage Guide of CAMAC Library for UNIX" for these function and directions. You can get this document from web site,"ftp://online.kek.jp/pub/kek/ camac/doc/user_guide.txt". The CAMAC functions for SPARC/Solaris7 is fully compatible with those for SPARC/SunOS4, and almost compatible with the CAMAC drivers on some machines developed at KEK. Any comment about this CAMAC driver is welcome. Please send E-mail to "eiji.inoue@kek.jp" and/or "takeuchi@icrr.u-tokyo.ac.jp". 2. Compile and installing the software (2-1) connect SPARC CPU-50T, K2917 and K3922, and then install the VME device driver according to its manual. (2-2) check Makefile and compile. make (2-3) Reboot your system shutdown : boot -r (2-4) copy and load CAMAC device driver. su make load exit (2-5) execute sample programs. cam1 cam3 (2-6) To remove the CAMAC device driver, type as follows. su make unload exit 3. Configuring the driver Nothing. 4. Pitfalls to avoid Currently this CAMAC Device Driver for Solaris7 is to disallow DMA write with only 1 camac data. Please don't use it. It is no problem that the DMA write with more than 2 camac data. DMA read operation works completely without a limitation like this. 5. Requirement 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) 6. History v3.0 Modified Release v1.30-5V for 64 kernel. v2.0 Modified Release v1.40-50T for List processing. KEK List processing and Kinetic List processing became able to be used. 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. 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. 7. Requests for Information 竹内 康雄 東京大学宇宙線研究所 神岡宇宙素粒子研究施設 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-79-6085, PHS:0298-64-5200-(announce)-4304, FAX:0298-64-2580 E-mail:eiji.inoue@kek.jp URL: http://www-online.kek.jp/~inoue/ onlsun1[48]% これでキット中の全てのファイルについて、修正が終わった。 このキットを使って最終テストを行う。 ---xxxx ここまでやった(継続中) --- (6). 項目タイトル (6-1). サブ項目タイトル (6-1-1). サブサブ項目タイトル