Lions' 本読み (29)

ええと昨晩も引用したこのあたり。

3116     ts = ((u.u_arg[1]+63)>>6) & 01777;
3117     ds = ((u.u_arg[2]+u.u_arg[3]+63)>>6) & 01777;
3118     if(estabur(ts, ds, SSIZE, sep))

estabur という手続きって何だったっけ、というあたりから。
例の参考書によると

  • ユーザ用のプロトタイプ APR 設定
  • ユーザプロセスのセグメント設定

とのこと。
estabur の中で u.u_uisa とか u.u_uisd とかな属性が使われてるんですが後天性記憶不全のお陰で忘却の彼方。v6 unix in okinawa の m40.s で定義されてるナニの解説のお陰で助かりました。

  • UISA0 User Segment Address Register #0
  • UISD0 User Segment Descriptor Register #0

属性の定義は以下なカンジ。

0436   int u_uisa[16];   /* プロトタイプセグメンテーションアドレス */
0437   int u_uisd[16];   /* プロトタイプセグメンテーションディスクリプタ */

あら、セグメンテーションアドレスレジスタ、とディスクリプタレジスタ、って何だろ。あ、PAR と PDR ってことで良いのかな。基本的にはプロトタイプの設定というか初期化ってことなんでしたっけ。
うーん、estabur とか sureg とかって、ちゃんと読まなきゃ、なんだろうとは思うのですがアルコホル駆動ではかなり微妙。
とりあえず俯瞰的に流してもっかい読む方向ってことで頑張ろう。