@@ -17,7 +17,12 @@ void *__memset(void *s, int c, size_t count) __alias(memset);
void *memcpy(void *dst, const void *src, size_t len)
{
- efi_bs_call(copy_mem, dst, src, len);
+ if (efi_table_attr(efi_system_table, boottime) != NULL)
+ efi_bs_call(copy_mem, dst, src, len);
+ else
+ for (size_t i = 0; i < len; i++)
+ ((u8 *)dst)[i] = ((u8 *)src)[i];
+
return dst;
}
@@ -25,7 +30,12 @@ extern void *memmove(void *dst, const void *src, size_t len) __alias(memcpy);
void *memset(void *dst, int c, size_t len)
{
- efi_bs_call(set_mem, dst, len, c & U8_MAX);
+ if (efi_table_attr(efi_system_table, boottime) != NULL)
+ efi_bs_call(set_mem, dst, len, c & U8_MAX);
+ else
+ for (u8 *d = dst; len--; d++)
+ *d = c;
+
return dst;
}