Am 26.10.2017 um 06:39 schrieb Donna Whisnant:
Adds ARM ABI support to DispCallFunc() to allow IDispatch invoke calls
to succeed on ARM platforms. This change specifically targets only
32-bit little-endian (ARMEL) platform CPUs. It's believed to likely be
compatible with big-endian (ARMEB) platforms, but testing for that
platform should be completed before enabling.
Tested on Raspbian Stretch 2017-09-07 RPi image using a Qemu systemd
container to compile and run it on an x86-64 Host.. When running on
Raspberry Pi hardware, a 3G/1G split kernel needs to be used for Wine
to function.
Hi,
thanks, but it seems I missed minor things last time:
- args = heap_alloc(sizeof(VARIANT) * cActuals + sizeof(DWORD) * 4 );
Try to be consistent with the spaces for each function call.
case VT_R4: /* these must be 4-byte aligned, and put in 's' regs or stack, as they are single-floats */
if (scount < 16)
regs.sd.s[scount++] = V_R4(arg);
else
args[argspos++] = V_UI4(arg);
break;
...
...
case VT_BOOL: /* VT_BOOL is 16-bit but BOOL is 32-bit, needs to be extended */
if (rcount < 4)
regs.r[rcount++] = V_BOOL(arg);
else
args[argspos++] = V_BOOL(arg);
break;
default:
if (rcount < 4)
regs.r[rcount++] = V_UI4(arg);
else
args[argspos++] = V_UI4(arg);
break;
}
Maybe one of those is not really conistent wrt curly brackets
- case VT_CY:
V_UI8(pvargResult) = call_method(func, argspos, args, (DWORD*)®s );
break;
- default:
V_UI4(pvargResult) = call_method( func, argspos, args, (DWORD*)®s );
break;
space issue again, maybe somewhere else too?
Otherwise I'm quite tempted to sign it off