1 /****^  ***********************************************************
 2         *                                                         *
 3         * Copyright, (C) Honeywell Bull Inc., 1987                *
 4         *                                                         *
 5         * Copyright, (C) Honeywell Information Systems Inc., 1982 *
 6         *                                                         *
 7         * Copyright (c) 1972 by Massachusetts Institute of        *
 8         * Technology and Honeywell Information Systems, Inc.      *
 9         *                                                         *
10         *********************************************************** */
11 
12 
13 /* PRDS_INIT - Copy Template Info into new PRDS.
14           Modified 2/11/76 by Noel I. Morris
15           Modified 2/22/81 by J. Bongiovanni for fast connect code initialization
16                  and to move some initializations from prds.cds
17                                                                                                               */
18 
19 prds_init: proc (pp, tag, idle_ptr);
20 
21 dcl  pp ptr,
22      idle_ptr ptr,
23      tag fixed bin (3);
24 
25 dcl  p1 ptr,
26      code fixed bin (35),
27      basedptr ptr based (pp),
28      basedbit36 bit (36) aligned based (pp),
29      basedfixed fixed bin(17) based (pp) ;
30 
31 
32 
33 
34 dcl fast_connect_init entry (ptr, fixed bin (3), fixed bin (35));
35 dcl syserr entry options (variable);
36 
37 dcl  prds$ fixed bin ext,
38      prds$cache_luf_reg bit (36) aligned ext,
39      prds$processor_tag ext bit (36) aligned,
40      prds$idle_ptr ptr ext;
41 
42 dcl (addr, null, ptr, rel, size) builtin;
43 
44 ^L
45 
46 % include stack_header;
47 
48 ^L
49 
50 /* Copy the stack header from the top of the prds.
51    Then set up the stack pointer.
52     */
53           sb = addr (prds$);
54           pp -> stack_header_overlay = sb -> stack_header_overlay;
55 
56           pp -> stack_header.signal_ptr = null ();
57           pp -> stack_header.sct_ptr = null ();
58 
59           p1 = ptr (pp, rel (addr (prds$cache_luf_reg)));
60           p1 -> basedbit36 = "000000000003"b3;
61 
62           p1 = ptr (pp, rel (addr (prds$processor_tag)));
63           p1 -> basedfixed = tag;
64 
65           p1 = ptr (pp, rel (addr (prds$idle_ptr)));
66           p1 -> basedptr = idle_ptr;
67 
68           call fast_connect_init (pp, tag, code);
69           if code^=0
70                then call syserr (1, "prds_init: Invalid size for prds$fast_connect_code");
71 
72           return;
73 
74 /* BEGIN MESSAGE DOCUMENTATION
75 
76 Message:
77 prds_init: Invalid size for prds$fast_connect_code
78 
79 S:        $crash
80 
81 T:        $init
82 
83 M:        There is an inconsistency between modules prds and
84 fast_connect_init on the boot tape.  Specifically, the amount of
85 space allocated for fast connect code in the prds does not
86 agree with the size of the code in fast_connect_init.  The
87 most likely cause is that one of these modules is not
88 up to date.
89 
90 A:        $contact_sa
91 A new boot tape must be generated with the proper versions of
92 modules prds and fast_connect_init.
93 
94 
95 END MESSAGE DOCUMENTATION */
96 
97      end prds_init;