Google
 

Trailing-Edge - PDP-10 Archives - tops20tools_v6_9-jan-86_dumper - tools/recog3/rtlpsect.req
There are 2 other files named rtlpsect.req in the archive. Click here to see a list.
!+
!					File: RTLPSECT.REQ  Edit: JAW1010
! This file, RTLPSECT.REQ, defines the macros for declaring RTL psects.
!-
!
!****************************************************************************
!*									    *
!*  COPYRIGHT (c) 1978, 1980, 1982 BY					    *
!*  DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS.		    *
!*  ALL RIGHTS RESERVED.						    *
!* 									    *
!*  THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED   *
!*  ONLY IN  ACCORDANCE WITH  THE  TERMS  OF  SUCH  LICENSE  AND WITH THE   *
!*  INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR  ANY  OTHER   *
!*  COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY   *
!*  OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE IS  HEREBY   *
!*  TRANSFERRED.							    *
!* 									    *
!*  THE INFORMATION IN THIS SOFTWARE IS  SUBJECT TO CHANGE WITHOUT NOTICE   *
!*  AND  SHOULD  NOT  BE  CONSTRUED AS  A COMMITMENT BY DIGITAL EQUIPMENT   *
!*  CORPORATION.							    *
!* 									    *
!*  DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE  OR  RELIABILITY OF ITS   *
!*  SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.		    *
!* 									    *
!*									    *
!****************************************************************************
!
!
!
! Revision History:
!
! 01-2	- Data PIC, NOSHR.  TNH 19-Dec-77
! 01-03	- Make OWN be NOSHARE. TNH 6-Jan-77.
! 01-5	- Make OWN be PIC.  TNH 27-June-78.
! 01-6	- Change name to RTLPSECT.REQ.  JBS 14-NOV-78
! 1-007	- Add copyright notice.  JBS 16-NOV-78
! 1-008	- Change PSECT names to start with "_", to conform to new RTL
!	   standard.  JBS 21-DEC-78
! 1-009	- Remove the PRINT statement, for the new BLISS compiler.
!	   JBS 02-OCT-1979
! 1-010 - Add optional second argument to DECLARE_PSECTS, to allow
!	  control of OWN PSECT alignment boundary.  See FOR$$EXIT_HANDL
!	  for further information.  JAW 23-FEB-1981
!--

! Declare PSECTS for all Library modules.

!+
! Macro to declare PSECTs for a facility, given the facility prefix.
! The declarations are very dependent on the linker algorithm
! for sorting PSECTs.  Currently that algorithm divides
! PSECTs into four groups depending on WRITE vs NOWRITE and
! EXECUTE vs NOEXECUTE.  Therefore in order to get
! compact programs, PLIT is made EXECUTABLE to get is close to CODE.
!
!	Example of use:
!
! PSECT DECLARATIONS:
!
!	DECLARE_PSECTS (FOR);	! Declare PSECTs for FOR$ facility
!
! Note: since the methodology manual does not yet specify where PSECT
! declarations go in a module, they are put between EQUATED SYMBOLS
! and OWN STORAGE (which is after INCLUDE files).
!-

MACRO
    DECLARE_PSECTS (FAC, BOUND) =
	PSECT
	    CODE = %NAME ('_', FAC, $CODE) (READ, NOWRITE, EXECUTE, SHARE, PIC, ADDRESSING_MODE (WORD_RELATIVE)),
	    PLIT = %NAME ('_', FAC, $CODE) (READ, NOWRITE, EXECUTE, SHARE, PIC, ADDRESSING_MODE (WORD_RELATIVE)),
	    OWN  = %NAME ('_', FAC, $DATA) (READ, WRITE, NOEXECUTE, NOSHARE, PIC, ADDRESSING_MODE (LONG_RELATIVE)
			%IF %LENGTH GEQU 2 %THEN , ALIGN(BOUND) %FI),
	    GLOBAL = %NAME ('_', FAC, $DATA) (READ, WRITE, NOEXECUTE, NOSHARE, PIC, ADDRESSING_MODE (LONG_RELATIVE)) %;

!+
! Define macro for declaring PIC (position independent) dispatch tables
! as OWN storage (would be better if BIND table = PLIT (...), however,
! BLISS doesn't allow table to be referenced inside PLIT definition,
! so use OWN storage instead).  The OWN storage is temporarily defined
! to be same PSECT as code, then DECLARE_PSECTS should be called again
! to restore OWN to _fac$DATA PSECT.
!-

MACRO
    DISPATCH_PSECTS (FAC) =
	PSECT
	    CODE = %NAME ('_', FAC, $CODE) (READ, NOWRITE, EXECUTE, SHARE, PIC, ADDRESSING_MODE (WORD_RELATIVE)),
	    PLIT = %NAME ('_', FAC, $CODE) (READ, NOWRITE, EXECUTE, SHARE, PIC, ADDRESSING_MODE (WORD_RELATIVE)),
	    OWN  = %NAME ('_', FAC, $CODE) (READ, NOWRITE, EXECUTE, SHARE, PIC, ADDRESSING_MODE (WORD_RELATIVE)),
	    GLOBAL = %NAME ('_', FAC, $CODE) (READ, NOWRITE, EXECUTE, SHARE, PIC, ADDRESSING_MODE (WORD_RELATIVE)) %;

!	End of file RTLPSECT.REQ