#include #define BYTES_PER_WORD 4 #define PAGE_SIZE 4096 /* * fls: find last bit set. */ static int fls(int x) { int r = 32; if (!x) return 0; if (!(x & 0xffff0000u)) { x <<= 16; r -= 16; } if (!(x & 0xff000000u)) { x <<= 8; r -= 8; } if (!(x & 0xf0000000u)) { x <<= 4; r -= 4; } if (!(x & 0xc0000000u)) { x <<= 2; r -= 2; } if (!(x & 0x80000000u)) { x <<= 1; r -= 1; } return r; } int main(void) { int size; for (size=32;size<131073;size++) { if ((size <= PAGE_SIZE-3*BYTES_PER_WORD || fls(size-1) == fls(size-1+3*BYTES_PER_WORD))) { /* printf("%6d: no order change \n", size); */ } else { printf("%6d: order change \n", size); } } return 0; }