projects
/
fw
/
sdcc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* as/hc08/lkaomf51.c (OutputName),
[fw/sdcc]
/
src
/
mcs51
/
main.c
diff --git
a/src/mcs51/main.c
b/src/mcs51/main.c
index 402993d8a2e9f377e9672a2dae9718f1a497900f..71277b9a25d5c8fcfacdeb9c24caaecd6b692f9e 100644
(file)
--- a/
src/mcs51/main.c
+++ b/
src/mcs51/main.c
@@
-122,14
+122,27
@@
_mcs51_finaliseOptions (void)
port->genXINIT=0;
}
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;
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;
port->mem.default_local_map = data;
port->mem.default_globl_map = data;
+ break;
}
if (options.parms_in_bank1) {
}
if (options.parms_in_bank1) {
@@
-264,6
+277,9
@@
hasExtBitOp (int op, int size)
if (op == RRC
|| op == RLC
|| op == GETHBIT
if (op == RRC
|| op == RLC
|| op == GETHBIT
+ || op == GETABIT
+ || op == GETBYTE
+ || op == GETWORD
|| (op == SWAP && size <= 2)
)
return TRUE;
|| (op == SWAP && size <= 2)
)
return TRUE;
@@
-574,7
+590,7
@@
asmLineNodeFromLineNode (lineNode *ln)
asmLineNode *aln = newAsmLineNode();
char *op, op1[256], op2[256];
int opsize;
asmLineNode *aln = newAsmLineNode();
char *op, op1[256], op2[256];
int opsize;
- const
unsigned
char *p;
+ const char *p;
char inst[8];
mcs51opcodedata *opdat;
char inst[8];
mcs51opcodedata *opdat;
@@
-690,7
+706,7
@@
PORT mcs51_port =
{
glue,
TRUE, /* Emit glue around main */
{
glue,
TRUE, /* Emit glue around main */
- MODEL_SMALL | MODEL_LARGE,
+ MODEL_SMALL | MODEL_
MEDIUM | MODEL_
LARGE,
MODEL_SMALL
},
{
MODEL_SMALL
},
{
@@
-719,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
},
/* 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
{
"XSTK (PAG,XDATA)", // xstack_name
"STACK (DATA)", // istack_name