PalCode

2004-03-19 17:20:05 +0900 (1756d); rev 3

PALcode (Privileged Architecture Library code)。 Alpha アーキテクチャでハードウェア依存の操作を抽象化するライブラリ。 ファームウェアと一緒に導入される。

現在のところ (ということはたぶんこれで全部になる)、 PALcode は OSF/1 (Tru64Unix)、OpenVmsAlphaNt の三系統である。 SRM には OSF/1 PALcode と VMS PALcode がついてくる。 ARC (AlphaBIOS) には AlphaNT PALcode がついてくる。

SrmConsole, ArcConsole

どこにあるか

PALcode はファームウェアの中 (隣?) にある。

マシン実行中にはメモリ上にあり、AlphaHwrpb からポインタが取れる。

呼びかた

callpal アセンブリを使って呼ぶ。

PALcode の変更

PALcode の swppal で変更する。 PALcode を PALcode で変更することになるが、 この命令だけは全ての PALcode でバイナリコードが同じなので問題なく使える。 また当然ながら特権命令なのでカーネル (PS<mode> = 0) しか使えない。

OSF/1 PALcode の例

AlphaArchitectureReferenceManual 参照

callsys (Call System)
システムコールを呼ぶ。 FIXME: 引数はどうやって渡す?
bpt (Breakpoint Trap)
デバッガのブレークポイントの実装に使う……のだろうか
halt
特権命令。 HWRPB の設定により、コンソールモードに落ちるかリブートする。
rti (Return from Trap, Fault or Interrupt)
特権命令。 トラップから復帰する。
swpctx (Swap Process Context)
特権命令。 プロセスコンテキストを変更する。

system revision 1.162