diff options
| author | Peter Wemm <peter@FreeBSD.org> | 2001-09-04 23:04:48 +0000 |
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 2001-09-04 23:04:48 +0000 |
| commit | 72d4bf59e9d6bd861f5a5016686969b56e47cc76 (patch) | |
| tree | f20d1920cd581b06592f8f79a0599ac0cbef0599 | |
| parent | cbab05248c1007561f436a9b9c960da05b0dc950 (diff) | |
Notes
| -rw-r--r-- | gnu/usr.bin/as/as.h | 4 | ||||
| -rw-r--r-- | gnu/usr.bin/as/read.c | 28 | ||||
| -rw-r--r-- | gnu/usr.bin/as/read.h | 2 |
3 files changed, 32 insertions, 2 deletions
diff --git a/gnu/usr.bin/as/as.h b/gnu/usr.bin/as/as.h index 6b81ac92ff91..4a6893bc119d 100644 --- a/gnu/usr.bin/as/as.h +++ b/gnu/usr.bin/as/as.h @@ -187,11 +187,11 @@ typedef enum _segT { typedef int subsegT; -COMMON subsegT now_subseg; +COMMON subsegT now_subseg, prev_subseg; /* What subseg we are accreting now? */ -COMMON segT now_seg; +COMMON segT now_seg, prev_seg; /* Segment our instructions emit to. */ /* Only OK values are SEG_TEXT or SEG_DATA. */ diff --git a/gnu/usr.bin/as/read.c b/gnu/usr.bin/as/read.c index f25f3634c9b4..1b64ee6f1552 100644 --- a/gnu/usr.bin/as/read.c +++ b/gnu/usr.bin/as/read.c @@ -248,6 +248,7 @@ static const pseudo_typeS { "octa", big_cons, 16 }, { "org", s_org, 0 }, { "p2align", s_align_ptwo, 0 }, + { "previous", s_previous, 0 }, #ifdef NO_LISTING { "psize", s_ignore, 0 }, /* set paper size */ #else @@ -741,6 +742,9 @@ void { register int temp; + prev_seg = now_seg; + prev_subseg = now_subseg; + temp = get_absolute_expression(); subseg_new (SEG_DATA, (subsegT)temp); @@ -750,6 +754,27 @@ void demand_empty_rest_of_line(); } +void + s_previous() +{ + segT oprev_seg = now_seg; + subsegT oprev_subseg = now_subseg; + + oprev_seg = now_seg; + oprev_subseg = now_subseg; + + subseg_new (prev_seg, prev_subseg); + + prev_seg = oprev_seg; + prev_subseg = oprev_subseg; + +#ifdef OBJ_VMS + const_flag = 0; +#endif /* not OBJ_VMS */ + demand_empty_rest_of_line(); +} + + /* Handle the .appfile pseudo-op. This is automatically generated by do_scrub_next_char when a preprocessor # line comment is seen with a file name. This default definition may be overridden by the @@ -1313,6 +1338,9 @@ void { register int temp; + prev_seg = now_seg; + prev_subseg = now_subseg; + temp = get_absolute_expression(); subseg_new (SEG_TEXT, (subsegT)temp); demand_empty_rest_of_line(); diff --git a/gnu/usr.bin/as/read.h b/gnu/usr.bin/as/read.h index e396922b10b6..29d3dfc824a5 100644 --- a/gnu/usr.bin/as/read.h +++ b/gnu/usr.bin/as/read.h @@ -96,6 +96,7 @@ void s_ignore(int arg); void s_include(int arg); void s_lcomm(int needs_align); void s_lsym(void); +void s_previous(void); void s_org(void); void s_set(void); void s_size(void); @@ -138,6 +139,7 @@ void s_ignore(); void s_include(); void s_lcomm(); void s_lsym(); +void s_previous(); void s_org(); void s_set(); void s_size(); |
