diff options
Diffstat (limited to 'src/cmd/cc')
| -rw-r--r-- | src/cmd/cc/cc.h | 1 | ||||
| -rw-r--r-- | src/cmd/cc/com.c | 5 | ||||
| -rw-r--r-- | src/cmd/cc/sub.c | 1 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/cmd/cc/cc.h b/src/cmd/cc/cc.h index 3b13126df..42341a70c 100644 --- a/src/cmd/cc/cc.h +++ b/src/cmd/cc/cc.h @@ -262,6 +262,7 @@ enum ODWHILE, OENUM, OEQ, + OEXREG, OFOR, OFUNC, OGE, diff --git a/src/cmd/cc/com.c b/src/cmd/cc/com.c index 5ee38e882..af2509c5f 100644 --- a/src/cmd/cc/com.c +++ b/src/cmd/cc/com.c @@ -638,6 +638,11 @@ tcomo(Node *n, int f) n->addable = 1; if(n->class == CEXREG) { n->op = OREGISTER; + // on 386, "extern register" generates + // memory references relative to the + // fs segment. + if(thechar == '8') // [sic] + n->op = OEXREG; n->reg = n->sym->offset; n->xoffset = 0; break; diff --git a/src/cmd/cc/sub.c b/src/cmd/cc/sub.c index cad5eda72..335d30bfb 100644 --- a/src/cmd/cc/sub.c +++ b/src/cmd/cc/sub.c @@ -1460,6 +1460,7 @@ Init onamesinit[] = ODWHILE, 0, "DWHILE", OENUM, 0, "ENUM", OEQ, 0, "EQ", + OEXREG, 0, "EXREG", OFOR, 0, "FOR", OFUNC, 0, "FUNC", OGE, 0, "GE", |
