
  PROCEDURE [INLINE] gfp$mtr_get_fde_p (sfid: gft$system_file_identifier;
        ijle_p: ^jmt$initiated_job_list_entry;
    VAR fde_p: gft$file_desc_entry_p);


?? PUSH (LISTEXT := ON) ??
    VAR
      hash: integer,
      seg: 0 .. 4095,
      offset: integer,
      residence: gft$table_residence;

    residence := sfid.residence;
    hash := sfid.file_hash;
    offset := gfc$fde_table_base + gfc$fde_size * sfid.file_entry_index;
    seg := 1;
    IF residence <> gfc$tr_system THEN
      IF residence = gfc$tr_job THEN
        seg := ijle_p^.ajl_ordinal + mtc$job_fixed_segment;
      ELSE
        hash := 4096;      {Force mismatch on HASH to cause error}
        offset := 4096;    {There is always a valid page at this address}
      IFEND;
    IFEND;
    fde_p := #address (1, seg, offset);
    IF sfid.file_hash <> fde_p^.file_hash THEN
      i#program_error;
    IFEND;

  PROCEND gfp$mtr_get_fde_p;

*copyc gfc$constants
*copyc gft$file_desc_entry_p
*copyc gft$file_descriptor_index
*copyc gft$system_file_identifier
*copyc i#program_error
*copyc jmt$initiated_job_list_entry
*copyc mtc$job_fixed_segment
?? POP ??
