Go to main content
Oracle® Solaris 11.3 デバイスドライバの記述

印刷ビューの終了

更新: 2016 年 11 月
 
 

ハードウェアの概要

この付録では、Oracle Solaris OS をサポートできるハードウェアに関する一般的な問題について説明します。この説明には、オペレーティングシステムがサポートするプロセッサ、バスアーキテクチャー、およびメモリーモデルが含まれます。デバイスのさまざまな問題と、Oracle プラットフォームで使用される PROM についても説明します。


注 - この付録に記載されている資料は、情報の提供のみを目的としています。この情報は、ドライバのデバッグ時に役立つことがあります。ただし、実装に関するこれらの詳細の多くは、Oracle Solaris DDI/DKI インタフェースによってデバイスドライバから隠されています。

この付録では、次の内容について説明します。

SPARC プロセッサの問題

このセクションでは、データ割り当て、バイト順序、レジスタウィンドウ、浮動小数点命令の可用性など、SPARC プロセッサ固有のいくつかのトピックについて説明します。x86 プロセッサ固有のトピックについては、x86 プロセッサの問題を参照してください。


注 - 浮動小数点演算はカーネルでサポートされていないため、ドライバでこの演算を実行しないでください。

SPARC のデータ割り当て

すべての数量は、標準の C データ型を使用して、自然な境界に割り当てる必要があります。

  • short 整数は、16 ビットの境界に割り当てます。

  • int 整数は、32 ビットの境界に割り当てます。

  • long 整数は、SPARC システムでは 64 ビットの境界に割り当てます。データモデルについては、64 ビットデバイスドライバの準備を参照してください。

  • long long 整数は、64 ビットの境界に割り当てます。

通常、割り当ての問題はコンパイラで処理されます。ただし、ドライバの作成者は、デバイスへのアクセスに適切なデータ型を使用する必要があるため、割り当てに注意を払う傾向があります。一般にデバイスレジスタにはポインタ参照によってアクセスするため、ドライバはデバイスへのアクセス時にポインタが適正に割り当てるようにする必要があります。

SPARC 構造体のメンバー割り当て

SPARC プロセッサによって生じるデータ割り当ての制限のため、C 構造体にも割り当ての要件があります。構造体の割り当て要件は、もっとも厳密に割り当てられた構造体コンポーネントによって生じます。たとえば、文字だけを含む構造体には割り当ての制限はありませんが、long long メンバーを含む構造体は、このメンバーが 64 ビットの境界で割り当てられることを保証するように構築する必要があります。

SPARC のバイト順序

SPARC プロセッサでは、ビッグエンディアンのバイト順序を使用します。整数の最上位バイト (MSB) は、その整数の一番低いアドレスに格納されます。最下位バイトは、このプロセッサのワードの一番高いアドレスに格納されます。たとえば、バイト 63 は 64 ビットプロセッサの最下位バイトです。

image:図は、ビッグエンディアンアーキテクチャーでのバイトの順序を示しています。バイト 0 が最上位バイトです。

SPARC のレジスタウィンドウ

SPARC プロセッサでは、レジスタウィンドウを使用します。各レジスタウィンドウは、8 個の インレジスタ、8 個の ローカルレジスタ、8 個の アウトレジスタ、および 8 個の グローバルレジスタで構成されています。アウトレジスタは、次のウィンドウのインレジスタになります。レジスタウィンドウの数は、プロセッサの実装によって 2 - 32 の範囲で変わります。

ドライバは通常 C で記述されるため、レジスタウィンドウが使用されていることは、通常、コンパイラによって隠されています。ただし、ドライバをデバッグするときには、レジスタウィンドウを使用する必要が生じる場合があります。

SPARC の乗算命令と除算命令

バージョン 7 の SPARC プロセッサには、乗算命令または除算命令はありません。乗算命令および除算命令は、ソフトウェアでエミュレートされます。ドライバはバージョン 7、バージョン 8、またはバージョン 9 のプロセッサで実行されることがあるため、負荷がかかる整数の乗算や除算は避けてください。代わりに、ビット単位の左シフトや右シフトを使用して、2 のべき乗で乗算や除算を行ってください。

SPARC Architecture Manual, Version 9』には、SPARC CPU の詳細が記載されています。『SPARC Compliance Definition, Version 2.4』には、SPARC V9 のアプリケーションバイナリインタフェース (ABI) の詳細が記載されています。このマニュアルでは、32 ビット SPARC V8 ABI と 64 ビット SPARC V9 ABI. について説明しています。このドキュメントは SPARC International (http://sparc.org/technical-documents/) から取得できます。