diff --git a/ports-foc/include/genode/block.h b/ports-foc/include/genode/block.h index 60b1cf05b..49effd29d 100644 --- a/ports-foc/include/genode/block.h +++ b/ports-foc/include/genode/block.h @@ -40,7 +40,7 @@ L4_CV void* genode_block_request(unsigned idx, unsigned long sz, void *req, unsigned long *offset); L4_CV void genode_block_submit(unsigned idx, unsigned long queue_offset, - unsigned long size, unsigned long disc_offset, + unsigned long size, unsigned long long disc_offset, int write); L4_CV void genode_block_collect_responses(unsigned idx); diff --git a/ports-foc/src/drivers/genode_block.c b/ports-foc/src/drivers/genode_block.c index 1d74a0d87..707475680 100644 --- a/ports-foc/src/drivers/genode_block.c +++ b/ports-foc/src/drivers/genode_block.c @@ -62,7 +62,7 @@ static void genode_blk_request(struct request_queue *q) struct request *req; unsigned long queue_offset; void *buf; - unsigned long offset; + unsigned long long offset; unsigned long nbytes; short write; struct genode_blk_device* dev; @@ -155,7 +155,7 @@ static int genode_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo) struct genode_blk_device *dev = bdev->bd_disk->private_data; unsigned long size = dev->blk_cnt * dev->blk_sz * (dev->blk_sz / KERNEL_SECTOR_SIZE); - geo->cylinders = size << 5; + geo->cylinders = size >> 7; geo->heads = 4; geo->sectors = 32; return 0; diff --git a/ports-foc/src/lib/l4lx/genode_block.cc b/ports-foc/src/lib/l4lx/genode_block.cc index 6dea14192..edb2a9b86 100644 --- a/ports-foc/src/lib/l4lx/genode_block.cc +++ b/ports-foc/src/lib/l4lx/genode_block.cc @@ -295,7 +295,7 @@ extern "C" { void genode_block_submit(unsigned idx, unsigned long queue_offset, - unsigned long size, unsigned long disc_offset, int write) + unsigned long size, unsigned long long disc_offset, int write) { if (idx >= genode_block_count()) { PWRN("Invalid index!");