void grub_memset (void *p, int c, grub_size_t len) { grub_uint8_t pattern8 = c; if (len >= 3 * sizeof (unsigned long)) { unsigned long patternl = 0; int i; for (i = 0; i < sizeof (unsigned long); i++) patternl |= ((unsigned long) pattern8) << (8 * i); while (len > 0 && (((grub_addr_t) p) & (sizeof (unsigned long) - 1))) { *(grub_uint8_t *) p = pattern8; p = (grub_uint8_t *) p + 1; } while (len >= sizeof (unsigned long)) { *(unsigned long *) p = patternl; p = (unsigned long *) p + 1; } } while (len > 0) { *(grub_uint8_t *) p = pattern8; p = (grub_uint8_t *) p + 1; } }