ack/util/ceg/ce_back/obj_back/reloc2.c
1989-01-26 13:32:57 +00:00

43 lines
735 B
C

#include <out.h>
#include "mach.h"
#include "back.h"
#include "header.h"
/* There are two forms of relocation program counter relative or
* absolute.
*/
#ifdef WORDS_REVERSED
#ifdef BYTES_REVERSED
#define RRR (RELO2|RELBR|RELWR)
#else
#define RRR (RELO2|RELWR)
#endif
#else
#ifdef BYTES_REVERSED
#define RRR (RELO2|RELBR)
#else
#define RRR (RELO2)
#endif
#endif
reloc2( sym, off, pcrel)
char *sym;
arith off;
int pcrel;
{
register struct outrelo *r;
if ( relo - reloc_info >= size_reloc)
mem_relo();
r = relo;
r->or_type = ( pcrel) ? RELPC|RRR : RRR;
r->or_sect = S_MIN + conv_seg( cur_seg);
r->or_nami = find_sym(sym, REFERENCE);
r->or_addr = cur_value();
gen2( (pcrel) ? off - ( r->or_addr + 2) : off);
relo++;
}