X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fmcs51%2Fmain.c;h=71277b9a25d5c8fcfacdeb9c24caaecd6b692f9e;hb=90bdb43b342189fcb94a398855d43f3f47f96738;hp=e8295e81ae5eb45b57738686e68b336b4eb1e69a;hpb=411a4bf70f7e46852d1ff250a7512c504ea71810;p=fw%2Fsdcc diff --git a/src/mcs51/main.c b/src/mcs51/main.c index e8295e81..71277b9a 100644 --- a/src/mcs51/main.c +++ b/src/mcs51/main.c @@ -122,14 +122,27 @@ _mcs51_finaliseOptions (void) port->genXINIT=0; } - if (options.model == MODEL_LARGE) { + switch (options.model) + { + case MODEL_SMALL: + port->mem.default_local_map = data; + port->mem.default_globl_map = data; + port->s.gptr_size = 3; + break; + case MODEL_MEDIUM: + port->mem.default_local_map = pdata; + port->mem.default_globl_map = pdata; + port->s.gptr_size = 3; + break; + case MODEL_LARGE: port->mem.default_local_map = xdata; port->mem.default_globl_map = xdata; - } - else - { + port->s.gptr_size = 3; + break; + default: port->mem.default_local_map = data; port->mem.default_globl_map = data; + break; } if (options.parms_in_bank1) { @@ -577,7 +590,7 @@ asmLineNodeFromLineNode (lineNode *ln) asmLineNode *aln = newAsmLineNode(); char *op, op1[256], op2[256]; int opsize; - const unsigned char *p; + const char *p; char inst[8]; mcs51opcodedata *opdat; @@ -693,7 +706,7 @@ PORT mcs51_port = { glue, TRUE, /* Emit glue around main */ - MODEL_SMALL | MODEL_LARGE, + MODEL_SMALL | MODEL_MEDIUM | MODEL_LARGE, MODEL_SMALL }, { @@ -722,6 +735,8 @@ PORT mcs51_port = /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */ 1, 2, 2, 4, 1, 2, 3, 1, 4, 4 }, + /* tags for generic pointers */ + { 0x00, 0x40, 0x60, 0x80 }, /* far, near, xstack, code */ { "XSTK (PAG,XDATA)", // xstack_name "STACK (DATA)", // istack_name