diff -r 81c9213b3d39 tools/firmware/hvmloader/acpi/build.c --- a/tools/firmware/hvmloader/acpi/build.c Tue Nov 28 18:41:42 2006 +++ b/tools/firmware/hvmloader/acpi/build.c Tue Nov 28 23:09:29 2006 @@ -32,6 +32,24 @@ extern unsigned char AmlCode[]; extern int DsdtLen; +static int +_memcmp(const void *s1, const void *s2, unsigned n) +{ + unsigned i; + uint8_t *p1 = (uint8_t *) s1; + uint8_t *p2 = (uint8_t *) s2; + + for ( i = 0; i < n; i++ ) + { + if ( p1[i] < p2[i] ) + return -1; + else if ( p1[i] > p2[i] ) + return 1; + } + + return 0; +} + static void set_checksum( void *table, uint32_t checksum_offset, uint32_t length) { @@ -126,7 +144,7 @@ } /* TPM TCPA and SSDT. */ - if ( memcmp((char *)0xFED40F00, tis_did_vid_rid, + if (_memcmp((char *)0xFED40F00, tis_did_vid_rid, sizeof(tis_did_vid_rid)) == 0 ) /* Probe for TIS interface. */ { memcpy(&buf[offset], AmlCode_TPM, sizeof(AmlCode_TPM));