X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=cmd%2Fcramfs.c;h=49ee36c74aec81cbdb512d0e46526ba7cce380e0;hb=59e12a4a8c219c4a334a2c2023edd1aa20f82a9e;hp=c1034916c600bda104df6073e75a52ae4ec55679;hpb=88033d737d9f46e7eebda6a8f9770957eb9aae9c;p=platform%2Fkernel%2Fu-boot.git diff --git a/cmd/cramfs.c b/cmd/cramfs.c index c103491..49ee36c 100644 --- a/cmd/cramfs.c +++ b/cmd/cramfs.c @@ -13,11 +13,13 @@ #include #include #include +#include #include #include #include #include #include +#include /* enable/disable debugging messages */ #define DEBUG_CRAMFS @@ -31,13 +33,13 @@ #include -#ifdef CONFIG_SYS_NO_FLASH +#ifndef CONFIG_MTD_NOR_FLASH # define OFFSET_ADJUSTMENT 0 #else # define OFFSET_ADJUSTMENT (flash_info[id.num].start[0]) #endif -#ifndef CONFIG_CMD_JFFS2 +#ifndef CONFIG_FS_JFFS2 #include char *mkmodestr(unsigned long mode, char *str) { @@ -68,7 +70,7 @@ char *mkmodestr(unsigned long mode, char *str) str[10] = '\0'; return str; } -#endif /* CONFIG_CMD_JFFS2 */ +#endif /* CONFIG_FS_JFFS2 */ extern int cramfs_check (struct part_info *info); extern int cramfs_load (char *loadoffset, struct part_info *info, char *filename); @@ -95,6 +97,7 @@ int do_cramfs_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) char *filename; int size; ulong offset = load_addr; + char *offset_virt; struct part_info part; struct mtd_device dev; @@ -111,7 +114,7 @@ int do_cramfs_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) dev.id = &id; part.dev = &dev; /* fake the address offset */ - part.offset = addr - OFFSET_ADJUSTMENT; + part.offset = (u64)(uintptr_t) map_sysmem(addr - OFFSET_ADJUSTMENT, 0); /* pre-set Boot file name */ if ((filename = getenv("bootfile")) == NULL) { @@ -127,9 +130,10 @@ int do_cramfs_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) filename = argv[2]; } + offset_virt = map_sysmem(offset, 0); size = 0; if (cramfs_check(&part)) - size = cramfs_load ((char *) offset, &part, filename); + size = cramfs_load (offset_virt, &part, filename); if (size > 0) { printf("### CRAMFS load complete: %d bytes loaded to 0x%lx\n", @@ -139,6 +143,9 @@ int do_cramfs_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) printf("### CRAMFS LOAD ERROR<%x> for %s!\n", size, filename); } + unmap_sysmem(offset_virt); + unmap_sysmem((void *)(uintptr_t)part.offset); + return !(size > 0); } @@ -172,7 +179,7 @@ int do_cramfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) dev.id = &id; part.dev = &dev; /* fake the address offset */ - part.offset = addr - OFFSET_ADJUSTMENT; + part.offset = (u64)(uintptr_t) map_sysmem(addr - OFFSET_ADJUSTMENT, 0); if (argc == 2) filename = argv[1]; @@ -180,6 +187,7 @@ int do_cramfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) ret = 0; if (cramfs_check(&part)) ret = cramfs_ls (&part, filename); + unmap_sysmem((void *)(uintptr_t)part.offset); return ret ? 0 : 1; }