Changeset 7c34822e in mainline for kernel/generic/src/lib/rd.c
- Timestamp:
- 2006-11-30T15:38:45Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7bf7ef7
- Parents:
- 8c19cf28
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/lib/rd.c
r8c19cf28 r7c34822e 40 40 #include <lib/rd.h> 41 41 #include <arch/byteorder.h> 42 #include <mm/frame.h> 43 #include <sysinfo/sysinfo.h> 42 44 43 int init_rd(rd_header * header )45 int init_rd(rd_header * header, size_t size) 44 46 { 45 47 /* Identify RAM disk */ … … 51 53 return RE_UNSUPPORTED; 52 54 53 uint64_t hsize; 55 uint32_t hsize; 56 uint64_t dsize; 54 57 switch (header->data_type) { 55 58 case RD_DATA_LSB: 56 hsize = uint64_t_le2host(header->header_size); 59 hsize = uint32_t_le2host(header->header_size); 60 dsize = uint64_t_le2host(header->data_size); 57 61 break; 58 // case RD_DATA_MSB: 59 // hsize = uint64_t_be2host(header->header_size); 60 // break; 62 case RD_DATA_MSB: 63 hsize = uint32_t_be2host(header->header_size); 64 dsize = uint64_t_le2host(header->data_size); 65 break; 61 66 default: 62 67 return RE_UNSUPPORTED; 63 68 } 64 69 70 if ((hsize % FRAME_SIZE) || (dsize % FRAME_SIZE)) 71 return RE_UNSUPPORTED; 72 73 if (hsize > size) 74 return RE_INVALID; 75 76 if ((uint64_t) hsize + dsize > size) 77 dsize = size - hsize; 78 79 sysinfo_set_item_val("rd", NULL, true); 80 sysinfo_set_item_val("rd.size", NULL, dsize); 81 sysinfo_set_item_val("rd.address.physical", NULL, (unative_t) KA2PA((void *) header + hsize)); 65 82 66 83 return RE_OK;
Note:
See TracChangeset
for help on using the changeset viewer.