46 lines
895 B
C
46 lines
895 B
C
|
#include <system.h>
|
||
|
#include "mach.h"
|
||
|
#include "back.h"
|
||
|
|
||
|
/* The following functions are called from reloc1(), reloc2(), reloc4(),
|
||
|
* dump_label().
|
||
|
*/
|
||
|
|
||
|
align_word()
|
||
|
|
||
|
/* Do word allignment.
|
||
|
*/
|
||
|
{
|
||
|
switch ( cur_seg) {
|
||
|
case SEGTXT : return;
|
||
|
case SEGCON : if ( (data - data_area) % 2 != 0)
|
||
|
con1( '\0');
|
||
|
return;
|
||
|
case SEGROM : if ( (data - data_area) % 2 != 0)
|
||
|
rom1( '\0');
|
||
|
return;
|
||
|
case SEGBSS : if ( nbss % 2 != 0)
|
||
|
nbss++;
|
||
|
return;
|
||
|
default : fprint( STDERR, "align_word() : unknown seg\n");
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
long cur_value()
|
||
|
|
||
|
/* Return the index of the first free entry.
|
||
|
*/
|
||
|
{
|
||
|
switch( cur_seg) {
|
||
|
case SEGTXT: return text - text_area;
|
||
|
case SEGCON: return data - data_area;
|
||
|
case SEGROM: return data - data_area;
|
||
|
case SEGBSS: return nbss;
|
||
|
default : fprint( STDERR, "cur_value() : unknown seg\n");
|
||
|
return -1L;
|
||
|
}
|
||
|
}
|
||
|
|