diff --git a/core/fs/iso9660/iso9660.c b/core/fs/iso9660/iso9660.c index 46f5f17..70c6910 100644 --- a/core/fs/iso9660/iso9660.c +++ b/core/fs/iso9660/iso9660.c @@ -275,14 +275,25 @@ static int iso_readdir(struct file *file, struct dirent *dirent) /* Load the config file, return 1 if failed, or 0 */ static int iso_load_config(void) { - static const char *search_directories[] = { - "/boot/isolinux", - "/isolinux", - "/boot/syslinux", - "/syslinux", - "/", - NULL - }; + /* + * Put search_directories[] to different section so it + * won't be compressed (and we can patch it later). + */ + __asm__( + ".section .data16\n" + ".s1: .ascii \"/boot\"\n" + ".s2: .string \"/isolinux\"\n" + ".fill 64, 1, 0\n" + ".s3: .ascii \"/boot\"\n" + ".s4: .string \"/syslinux\"\n" + ".s5: .string \"/\"\n" + ".align 4\n" + "search_directories:\n" + ".long .s1, .s2, .s3, .s4, .s5, 0\n" + ".text\n" + ); + extern const char *search_directories[]; + static const char *filenames[] = { "isolinux.cfg", "syslinux.cfg",