struct scatterlist { struct page *page; unsigned int offset; }; void mmc_blk_issue_rq() { unsigned int blocks; struct scatterlist sg; void *buf = &blocks; memset(&sg, 0, sizeof(sg)); sg.page = ((unsigned long)buf - 0x80000000 >> 12) - 0x0C000000; sg.offset = ((unsigned long)buf & 1UL << 12); if (blocks) local_irq_disable(); }