case 8:
bp.size = 3;
qw = 1;
- gdprintk(XENLOG_INFO, "quadword ioreq type:%d data:%ld\n", p->type, p->data);
+ gdprintk(XENLOG_INFO, "quadword ioreq type:%d data:%"PRIx64"\n",
+ p->type, p->data);
break;
default:
- gdprintk(XENLOG_WARNING, "unexpected ioreq size:%ld\n", p->size);
+ gdprintk(XENLOG_WARNING, "unexpected ioreq size:%"PRId64"\n", p->size);
return 0;
}
};
typedef struct shared_iopage shared_iopage_t;
-#pragma pack(push,2)
-
struct buf_ioreq {
uint8_t type; /* I/O type */
uint8_t dir:1; /* 1=read, 0=write */
uint8_t size:2; /* 0=>1, 1=>2, 3=>8. If 8 then use two contig buf_ioreqs */
- uint32_t addr:20; /* physical address or high-order data */
uint16_t data; /* (low order) data */
+ uint32_t addr; /* physical address or high-order data */
};
typedef struct buf_ioreq buf_ioreq_t;
-#define IOREQ_BUFFER_SLOT_NUM 672
+#define IOREQ_BUFFER_SLOT_NUM 511 /* 8 bytes each, plus 2 4-byte indexes */
struct buffered_iopage {
- volatile unsigned int read_pointer;
- volatile unsigned int write_pointer;
+ unsigned int read_pointer;
+ unsigned int write_pointer;
buf_ioreq_t buf_ioreq[IOREQ_BUFFER_SLOT_NUM];
}; /* NB. Size of this structure must be no greater than one page. */
typedef struct buffered_iopage buffered_iopage_t;
-#pragma pack(pop)
-
#if defined(__ia64__)
struct pio_buffer {
uint32_t page_offset;