L4Re/OLD/libc_newlib

libc/machine/hppa/DEFS.h

35:bed0544f5676
2020-02-02 Paul Boddie Restored the isatty definition since it should only be provided in the one file, being supported by a re-entrant L4Re-related definition.
     1 /*     2  * Copyright (c) 1990 The Regents of the University of California.     3  * All rights reserved.     4  *     5  * Redistribution and use in source and binary forms are permitted     6  * provided that the above copyright notice and this paragraph are     7  * duplicated in all such forms and that any documentation,     8  * advertising materials, and other materials related to such     9  * distribution and use acknowledge that the software was developed    10  * by the University of California, Berkeley.  The name of the    11  * University may not be used to endorse or promote products derived    12  * from this software without specific prior written permission.    13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR    14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED    15  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.    16  */    17     18 #include "pcc_prefix.s"    19     20 #define	BLANK    21 #define	BANNER(str)	BLANK	.VERSION str    22 #define	ENTRY(Name)	BLANK	M_ENTRY	(Name,PROF_/**/Name)    23 #define	ENTRYC(Name)	BLANK	M_ENTRYC(Name,PROF_/**/Name)    24 #define	EXIT(Name)	BLANK	M_EXIT	(Name,PROF_/**/Name)    25 #define	EXITC(Name)	BLANK	M_EXITC	(Name,PROF_/**/Name)    26     27 #if 0    28 #define TEXT_SEGMENT \    29         .SPACE  $TEXT$          !\    30         .SUBSPA $CODE$    31 #define RO_SEGMENT \    32         .SPACE  $TEXT$          !\    33         .SUBSPA $lit$    34 #define DATA_SEGMENT \    35         .SPACE  $PRIVATE$          !\    36         .SUBSPA $data$    37 #define BSS_SEGMENT \    38         .SPACE  $PRIVATE$          !\    39         .SUBSPA $bss$    40 #else    41 #define TEXT_SEGMENT .text    42 #define RO_SEGMENT .rodata    43 #define DATA_SEGMENT .data    44 #define BSS_SEGMENT .bss    45 #endif    46     47     48     49     50 #ifdef PROF    51     52 ;    53 ; All four argument registers are saved into caller save registers    54 ; and restored after the call to _mcount.  This is possible because    55 ; the mcount routine does not modify them, so we can.  Mcount takes    56 ; 3 arguments; the first argument is the incoming 'rp', the second    57 ; is the starting address of the profiled routine, and the third is    58 ; the address of the PROF label (which is where mcount stores the    59 ; profile data).    60 ;    61 #define M_ENTRY(name,prof)	\    62 	TEXT_SEGMENT		!\    63         .label name		!\    64         .PROC			!\    65 	.CALLINFO CALLER,SAVE_RP !\    66 	.ENTRY			!\    67 	stw	rp,-20(sp)	!\    68 	ldo	48(sp),sp	!\    69 	or	arg0,r0,r19	!\    70 	or	arg1,r0,r20	!\    71 	or	arg2,r0,r21	!\    72 	or	arg3,r0,r22	!\    73 	or	rp,r0,arg0	!\    74 	ldil	L%name,r1	!\    75 	ldo	R%name(r1),arg1	!\    76 	addil	L%prof-$global$,dp	!\    77 	bl	_mcount,rp	!\    78 	ldo	R%prof-$global$(r1),arg2	!\    79 	ldw	-68(sp),rp	!\    80 	ldo	-48(sp),sp	!\    81 	or	r19,r0,arg0	!\    82 	or	r20,r0,arg1	!\    83 	or	r21,r0,arg2	!\    84 	or	r22,r0,arg3	!\    85     86     87 #define M_ENTRYC(name,prof)	\    88 	TEXT_SEGMENT		!\    89         .label name		!\    90         .PROC			!\    91 	.CALLINFO CALLER,SAVE_RP !\    92 	.ENTRY			!\    93 	stw	rp,-20(sp)	!\    94 	ldo	128(sp),sp	!\    95 	or	arg0,r0,r19	!\    96 	or	arg1,r0,r20	!\    97 	or	arg2,r0,r21	!\    98 	or	arg3,r0,r22	!\    99 	or	rp,r0,arg0	!\   100 	ldil	L%name,r1	!\   101 	ldo	R%name(r1),arg1	!\   102 	addil	L%prof-$global$,dp	!\   103 	bl	_mcount,rp	!\   104 	ldo	R%prof-$global$(r1),arg2	!\   105 	ldw	-148(sp),rp	!\   106 	or	r19,r0,arg0	!\   107 	or	r20,r0,arg1	!\   108 	or	r21,r0,arg2	!\   109 	or	r22,r0,arg3	!\   110    111 ;   112 ; The HPUX profiler uses a word for each entrypoint to store the profiling   113 ; information.  The setup code passes the address to the _mcount routine.   114 ; The EXIT macro defines a label (PROF_foo), and a word of storage.   115 ;   116 #define M_EXIT(name,prof)	\   117         bv,n	r0(rp)		!\   118 	.EXIT			!\   119         .PROCEND		!\   120         .EXPORT	name,ENTRY	!\   121 	DATA_SEGMENT		!\   122 	.label prof		!\   123 	.WORD	0		!\   124 	.IMPORT	$global$,DATA	!\   125 	.IMPORT	_mcount,CODE   126    127 #define M_EXITC(name,prof)	\   128         bv	r0(rp)		!\   129         ldo	-128(sp),sp	!\   130 	.EXIT			!\   131         .PROCEND		!\   132         .EXPORT	name,ENTRY	!\   133 	DATA_SEGMENT		!\   134 	.label prof		!\   135 	.WORD	0		!\   136 	.IMPORT	$global$,DATA	!\   137 	.IMPORT	_mcount,CODE   138    139 #else	/* NOT profiling */   140    141 #define M_ENTRY(name,prof)	\   142 	TEXT_SEGMENT		!\   143         .label name	!\   144         .PROC		!\   145         .CALLINFO	!\   146 	.ENTRY   147    148 #define M_ENTRYC(name,prof)	\   149 	TEXT_SEGMENT		!\   150         .label name	!\   151         .PROC		!\   152         .CALLINFO CALLER,SAVE_RP	!\   153 	.ENTRY		!\   154         stw     rp,-20(sp)	!\   155         ldo     128(sp),sp   156    157 #define M_EXIT(name,prof)	\   158         bv,n	r0(rp)	!\   159 	.EXIT		!\   160         .PROCEND	!\   161         .EXPORT	name,ENTRY   162    163 #define M_EXITC(name,prof)	\   164         ldw	-148(sp),rp	!\   165         bv	r0(rp)	!\   166         ldo	-128(sp),sp	!\   167 	.EXIT		!\   168         .PROCEND	!\   169         .EXPORT	name,ENTRY   170    171 #define	ENTRY(Name)	BLANK	M_ENTRY	(Name,PROF_/**/Name)   172 #define	ENTRYC(Name)	BLANK	M_ENTRYC(Name,PROF_/**/Name)   173 #define	EXIT(Name)	BLANK	M_EXIT	(Name,PROF_/**/Name)   174 #define	EXITC(Name)	BLANK	M_EXITC	(Name,PROF_/**/Name)   175    176    177 #endif   178