[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Little help with Seabios PV-Drivers for XEN
Hello All, I have a little setback with the development of PV Drivers for Xen in SeaBIOS. The initialization code that runs in 32 Bit is working properly. But, when the system tries to read on the disk I use the ring macros to get a request. The macro usage looks like this: struct blkif_ring * shared = memalign_low(4096,4096); //return 0x000fd630 this above 16bit address space SHARED_RING_INIT(shared); So far I have a pointer located at 0x0009a000 Under 32bit the struct is correct and all is working according to plan. But on 16bit operation read on disk I have struct blkfront_info * shared_ring = container_of(op->drive_g.info->shared)); // I get d630 I should get it from the correct segment, but how? RING_GET_REQUEST(shared_ring); //this returns 0xffff and should be something 0xa010 segment SS or something like that SeaBios has some macros that convert a pointer in 32Bit to 16Bit by changing the segment register, yet I do not know in what segment the ring is located, and the macros are not applied inside the procedure of the macro, for example: MAKE_FLATPTR(GET_SEG(SS),RING_GET_REQUEST(shared_ring)); But this will change a 16Bit pointer of segment SS to a 32 bit segment. There is also the reverse but, again I do not know the segment in which I should look for. Lastly the process inside the macro does not get this benefin, and I do not know if the macro will work with a pointer of size 16bits. Any help will be GREATLY appreciated, I am almost done. Thanks, Daniel -- +-=====---------------------------+ | +---------------------------------+ | This space intentionally blank for notetaking. | | | Daniel Castro, | | | | Consultant/Programmer.| | | | U Andes | +-------------------------------------+ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |