From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Castro Subject: Little help with Seabios PV-Drivers for XEN Date: Fri, 9 Mar 2012 08:35:40 +0900 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org Hello All, I have a little setback with the development of PV Drivers for Xen in SeaBI= OS. 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 =3D 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 =3D 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 -- = +-=3D=3D=3D=3D=3D---------------------------+ | +---------------------------------+ | This space intentionally blank for notetaking. | |=A0=A0 | Daniel Castro,=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | | |=A0=A0 | Consultant/Programmer.| | |=A0=A0 | U Andes=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=A0 | +-------------------------------------+