|
@@ -19,23 +19,28 @@
|
|
|
|
|
|
static efi_system_table_t *sys_table;
|
|
|
|
|
|
+static void efi_char16_printk(efi_char16_t *str)
|
|
|
+{
|
|
|
+ struct efi_simple_text_output_protocol *out;
|
|
|
+
|
|
|
+ out = (struct efi_simple_text_output_protocol *)sys_table->con_out;
|
|
|
+ efi_call_phys2(out->output_string, out, str);
|
|
|
+}
|
|
|
+
|
|
|
static void efi_printk(char *str)
|
|
|
{
|
|
|
char *s8;
|
|
|
|
|
|
for (s8 = str; *s8; s8++) {
|
|
|
- struct efi_simple_text_output_protocol *out;
|
|
|
efi_char16_t ch[2] = { 0 };
|
|
|
|
|
|
ch[0] = *s8;
|
|
|
- out = (struct efi_simple_text_output_protocol *)sys_table->con_out;
|
|
|
-
|
|
|
if (*s8 == '\n') {
|
|
|
efi_char16_t nl[2] = { '\r', 0 };
|
|
|
- efi_call_phys2(out->output_string, out, nl);
|
|
|
+ efi_char16_printk(nl);
|
|
|
}
|
|
|
|
|
|
- efi_call_phys2(out->output_string, out, ch);
|
|
|
+ efi_char16_printk(ch);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -709,7 +714,12 @@ static efi_status_t handle_ramdisks(efi_loaded_image_t *image,
|
|
|
if ((u8 *)p >= (u8 *)filename_16 + sizeof(filename_16))
|
|
|
break;
|
|
|
|
|
|
- *p++ = *str++;
|
|
|
+ if (*str == '/') {
|
|
|
+ *p++ = '\\';
|
|
|
+ *str++;
|
|
|
+ } else {
|
|
|
+ *p++ = *str++;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
*p = '\0';
|
|
@@ -737,7 +747,9 @@ static efi_status_t handle_ramdisks(efi_loaded_image_t *image,
|
|
|
status = efi_call_phys5(fh->open, fh, &h, filename_16,
|
|
|
EFI_FILE_MODE_READ, (u64)0);
|
|
|
if (status != EFI_SUCCESS) {
|
|
|
- efi_printk("Failed to open initrd file\n");
|
|
|
+ efi_printk("Failed to open initrd file: ");
|
|
|
+ efi_char16_printk(filename_16);
|
|
|
+ efi_printk("\n");
|
|
|
goto close_handles;
|
|
|
}
|
|
|
|