1
2
3
4
5
6
7
8
9
10
11 ioi_wire:
12 procedure;
13
14
15
16
17
18
19
20
21
22
23
24
25
26 dcl p_dtep ptr parameter;
27
28 dcl sys_info$service_system
29 bit (1) aligned external static;
30
31 dcl ioi_page_table$fill entry (fixed bin, ptr, fixed bin (35));
32
33 dcl pc_abs$wire_abs entry (ptr, fixed bin (9), fixed bin (9), fixed bin (35));
34 dcl pc_abs$wire_abs_contig entry (ptr, fixed bin (9), fixed bin (9), fixed bin (35));
35 dcl pc_abs$unwire_abs entry (ptr, fixed bin (9), fixed bin (9));
36 dcl code fixed bin (35);
37 dcl np fixed bin (9);
38
39 dcl (divide) builtin;
40 ^L
41
42
43
44 wire:
45 entry (p_dtep);
46
47 dtep = p_dtep;
48 if dte.workspace_wired then
49 return;
50
51 np = divide (dte.bound + 1023, 1024, 9, 0);
52 if sys_info$service_system then
53 call pc_abs$wire_abs (dte.workspace_astep, 0, np, code);
54 else call pc_abs$wire_abs_contig (dte.workspace_astep, 0, np, code);
55 if code ^= 0 then do;
56 error:
57 return;
58 end;
59
60 call ioi_page_table$fill (dte.ptx, dte.workspace_astep, code);
61 if code ^= 0 then
62 goto error;
63
64 dte.workspace_wired = "1"b;
65 return;
66 ^L
67
68
69
70
71 unwire:
72 entry (p_dtep);
73
74 dtep = p_dtep;
75 if ^dte.workspace_wired then
76 return;
77
78 np = divide (dte.bound + 1023, 1024, 9, 0);
79 call pc_abs$unwire_abs (dte.workspace_astep, 0, np);
80 dte.workspace_wired = "0"b;
81 return;
82 ^L
83 %include ioi_data;
84
85 end ioi_wire;