
  PROCEDURE [INLINE] mmp$asid
    (    xasti: mmt$ast_index;
     VAR x_asid: ost$asid);

?? PUSH (LISTEXT := ON) ??

    VAR
      asti: mmt$ast_index,
      asti_16: mmt$ast_index,
      asti_256: mmt$ast_index,
      asti_4096: mmt$ast_index,
      asid: integer;

    asti := xasti;
    asti_16 := asti DIV 16;
    asti_16 := asti_16 MOD 16;

    asti_256 := asti DIV 256;
    asti_256 := asti_256 MOD 16;

    asti_4096 := asti DIV 4096;
    asti_4096 := asti_4096 MOD 16;

    asid := (mmv$asid_asti_bits [asti MOD 16] * 4096) +
          (mmv$asid_asti_bits [asti_16] * 256) +
          (mmv$asid_asti_bits [asti_256] * 16) +
          mmv$asid_asti_bits [asti_4096];

    asid := asid DIV mmv$a_divisor + (asid MOD mmv$a_divisor) * mmv$a_mult;
    x_asid := asid;

  PROCEND mmp$asid;

*copyc mmt$ast_index
*copyc ost$hardware_subranges
*copyc mmv$a_divisor
*copyc mmv$a_mult
*copyc mmv$asid_asti_bits
?? POP ??
