#define GPTRTAG_DATA 0x00
#define GPTRTAG_CODE 0x80
+/* The PIC port(s) need not differentiate between POINTER and FPOINTER. */
+#define PIC_IS_DATA_PTR(x) (IS_DATA_PTR(x) || IS_FARPTR(x))
+#define PIC_IS_FARPTR(x) (PIC_IS_DATA_PTR(x))
+
extern void genUMult8X8_16 (operand *, operand *,operand *,pCodeOpReg *);
extern void genSMult8X8_16 (operand *, operand *,operand *,pCodeOpReg *);
void genMult8X8_8 (operand *, operand *,operand *);
switch (p_type)
{
case POINTER:
+ case FPOINTER:
if (!alreadyAddressed) setup_fsr (src);
emitpcode(POC_MOVFW, popCopyReg (&pc_fsr));
break;
switch (p_type)
{
case POINTER:
+ case FPOINTER:
if (!alreadyAddressed) setup_fsr (dst);
emitpcode(POC_MOVWF, popCopyReg (&pc_fsr));
break;
break;
case POINTER:
+ case FPOINTER:
case GPOINTER:
case CPOINTER:
emitPtrByteGet (left, ptype, FALSE);
break;
case POINTER:
+ case FPOINTER:
case GPOINTER:
case CPOINTER:
emitPtrByteGet (left, ptype, FALSE);
lower 128 bytes of space */
if (AOP_TYPE(left) == AOP_PCODE && //AOP_TYPE(left) == AOP_IMMD &&
!IS_BITVAR(retype) &&
- DCL_TYPE(ltype) == POINTER) {
+ PIC_IS_DATA_PTR(ltype)) {
genDataPointerGet (left,result,ic);
return ;
}
switch (p_type) {
case POINTER:
+ case FPOINTER:
//case IPOINTER:
genNearPointerGet (left,result,ic);
break;
break;
case POINTER:
+ case FPOINTER:
setup_fsr (result);
emitpcode(lit?POC_BSF:POC_BCF,newpCodeOpBit(PCOP(&pc_indf)->name,bstr,0));
break;
break;
case POINTER:
+ case FPOINTER:
case GPOINTER:
emitPtrByteGet(result, p_type, FALSE);
if ((litval|mask) != 0x00ff)
break;
case POINTER:
+ case FPOINTER:
case GPOINTER:
emitPtrByteGet (result, p_type, FALSE);
emitpcode(POC_BTFSS, newpCodeOpBit (aopGet(AOP(right), 0, FALSE, FALSE), bstr, 0));
break;
case POINTER:
+ case FPOINTER:
case GPOINTER:
emitPtrByteGet (result, p_type, FALSE);
emitpcode(POC_ANDLW, popGetLit (mask));
in data space & not a bit variable */
//if (AOP_TYPE(result) == AOP_IMMD &&
if (AOP_TYPE(result) == AOP_PCODE &&
- DCL_TYPE(ptype) == POINTER &&
+ PIC_IS_DATA_PTR(ptype) &&
!IS_BITVAR (retype) &&
!IS_BITVAR (letype)) {
genDataPointerSet (right,result,ic);
switch (p_type) {
case POINTER:
+ case FPOINTER:
//case IPOINTER:
genNearPointerSet (right,result,ic);
break;