42,19 → 42,27 |
#include <mm/frame.h> |
#include <sysinfo/sysinfo.h> |
#include <ddi/ddi.h> |
#include <print.h> |
|
static parea_t rd_parea; /**< Physical memory area for rd. */ |
|
int init_rd(rd_header * header, size_t size) |
{ |
printf("Header magic %c%c%c%c\n",header->magic[0],header->magic[1],header->magic[2],header->magic[3]); |
|
/* Identify RAM disk */ |
if ((header->magic[0] != RD_MAG0) || (header->magic[1] != RD_MAG1) || |
(header->magic[2] != RD_MAG2) || (header->magic[3] != RD_MAG3)) |
return RE_INVALID; |
|
printf("Header version %d\n",header->version); |
printf("Expected version %d\n",RD_VERSION); |
|
/* Identify version */ |
if (header->version != RD_VERSION) |
return RE_UNSUPPORTED; |
|
printf("Header type %d\n",header->data_type); |
|
uint32_t hsize; |
uint64_t dsize; |
69,11 → 77,16 |
break; |
default: |
return RE_UNSUPPORTED; |
} |
} |
|
printf("Header size %d\n",header->header_size); |
printf("Data size %d\n",header->data_size); |
printf("Size %d\n",size); |
|
if ((hsize % FRAME_SIZE) || (dsize % FRAME_SIZE)) |
//jelen: does this make any sense? (we don't even care about the header size, do we?) |
/*if ((hsize % FRAME_SIZE) || (dsize % FRAME_SIZE)) |
return RE_UNSUPPORTED; |
|
*/ |
if (hsize > size) |
return RE_INVALID; |
|