1 /* Division by powers of two.
5 #if defined __mcs51 || defined __ds390 || defined __xa51
11 typedef unsigned int UINT;
13 typedef struct _HeapEntryState
19 static HeapEntryState *_getHeapEntryState(void *p, HeapEntryState *pStates, UINT nStateEntries)
21 int uLeft = -1, uRight = nStateEntries, uMiddle;
23 while (uRight - uLeft > 1)
27 uMiddle = (uLeft + uRight)/2;
28 /* A divide by zero is added just before iDiff is assigned */
29 iDiff = pStates[uMiddle].pBase - p;
41 return pStates + uMiddle;
51 HeapEntryState aStates[] = {
52 { (void XDATA *)1, 0 }
54 void *p = (void XDATA *)0x1234;
56 ASSERT(_getHeapEntryState(p, aStates, 1) == NULL);
59 ASSERT(_getHeapEntryState(p, aStates, 1) == aStates + 0);