On Thu, Oct 20, 2011 at 9:57 PM, Kevin O'Connor <[email protected]> wrote: > On Thu, Oct 20, 2011 at 11:44:50AM +0200, Gerd Hoffmann wrote: >> >> The disk access code is called from 16bit mode, and thus it needs to >> >> be compiled in 16bit mode. The link errors you are seeing are there >> >> to force a build error (instead of failing mysterously at run time). >> >> >> >> What does your driver do that requires 32bit mode? >> >> Access special pages for communication with the hypervisor (grant >> tables, request ring). > > If Xen just wants to run its handler in 32bit mode (and doesn't care > about vm86 mode), it should be possible to do something like: > > int process_xen_op(struct disk_op_s *op) { > extern void _cfunc32flat_process_xen32_op(struct disk_op_s *); > return call32(_cfunc32flat_process_xen32_op, op, DISK_RET_EPARAM); > } > > int VISIBLE32FLAT > process_xen32_op(struct disk_op_s *op) { > if (! CONFIG_XEN_DISK_HANDLER) > return 0; > ... > } > > Be aware that stack space is still limited here though (~512 bytes). > I am really want to use the 16Bit for the proccess_op, then only place I have no idea if it will work (not that I see why not) is doing a hypercall when I have to signal the RING that there is a request in flight.
> -Kevin > -- +-=====---------------------------+ | +---------------------------------+ | This space intentionally blank for notetaking. | | | Daniel Castro, | | | | Consultant/Programmer.| | | | U Andes | +-------------------------------------+ _______________________________________________ SeaBIOS mailing list [email protected] http://www.seabios.org/mailman/listinfo/seabios
