On Thu, 2013-03-14 at 17:11 +0400, Alexander Shiyan wrote: > > > On Thu, 2013-03-14 at 16:48 +0400, Alexander Shiyan wrote: > > > > > Barebox crashes while reading a DSS register: > > > > > > > > > > $ md 0x48040000 > > > > > unable to handle paging request at address 0x48040000 > > > > > > > > > > I suppose this is due to a turned off clock. > > > > > > > > > > Any hints? > > > > > > > > Probably this is a bug. I reproduced it. > > > > > > > > Try to specify start & end address, like: > > > > md -l 0x48040000-0x48040010 > > > > > > I get the same effect: it crashes. > > > > OK. It seems rw_buf not initialized. > > > > So change line: > > static char *rw_buf; > > to > > static char *rw_buf[RW_BUF_SIZE]; > Without asterisk, like: > static char rw_buf[RW_BUF_SIZE]; malloc expects a pointer: commands/mem.c:634: error: incompatible types when assigning to type ‘char[4096]’ from type ‘void *’ As you can see below, for a quick test I commented the lines, but barebox still crashes. Why don't you suppose that this is due to the non functional DSS? diff --git a/commands/mem.c b/commands/mem.c index 51aa04d..af5cc46 100644 --- a/commands/mem.c +++ b/commands/mem.c @@ -40,7 +40,7 @@ #endif #define RW_BUF_SIZE 4096 -static char *rw_buf; +static char rw_buf[RW_BUF_SIZE]; static char *DEVMEM = "/dev/mem"; @@ -631,11 +631,11 @@ static struct driver_d mem_drv = { static int mem_init(void) { - rw_buf = malloc(RW_BUF_SIZE); - if(!rw_buf) { - printf("%s: Out of memory\n", __FUNCTION__); - return -1; - } +// rw_buf = malloc(RW_BUF_SIZE); +// if(!rw_buf) { +// printf("%s: Out of memory\n", __FUNCTION__); +// return -1; +// } add_mem_device("mem", 0, ~0, IORESOURCE_MEM_WRITEABLE); platform_driver_register(&mem_drv); _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox