Hi Marc Jones,<br><br>    This is a new patch file. I modified mainboard_interrupt_handlers and setup_interrupt_handlers in the "util/x86emu/x86.c".<br><br>    Thanks.<br>    Libra.<br><br><br><div class="gmail_quote">
2009/12/22 Libra Li <span dir="ltr"><<a href="mailto:librali1977@gmail.com">librali1977@gmail.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Marc Jones,<br><br>    1. <br><div class="im">        +typedef struct {<br>        +        int mask[256];<br>        +        int (*intXX_handler[256])(struct eregs *regs);<br>        +}interrupt_handlers;<br><br></div>
        <span style="color: rgb(51, 51, 255);">The mainboard_interrupt_handlers need modification if the structure is not needed.</span><br>
<br>    2.<br>        +       if(!(*intXX_handler))<div class="im"><br>       
+       {<br>        +               /* Set up C interrupt handlers */<br>        +               setup_interrupt_handlers();<br>        +       }<br><br></div>        Yes, this is because mainboard_interrupt_handlers gets called first.<br>

<br><br><div class="gmail_quote">2009/12/22 Marc Jones <span dir="ltr"><<a href="mailto:marcj303@gmail.com" target="_blank">marcj303@gmail.com</a>></span><div><div></div><div class="h5"><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div><div></div><div>On Mon, Dec 21, 2009 at 6:15 PM, Libra Li <<a href="mailto:librali1977@gmail.com" target="_blank">librali1977@gmail.com</a>> wrote:<br>
> Hi,<br>
><br>
>     The VGA BIOS is through int15 getting LCD panel ID. Then the VBIOS call<br>
> int15's "Get LCD panel ID".<br>
>     The panel ID is selection by switch.<br>
>     This function is reference "AMD RS690 ASIC Family BIOS Developer's<br>
> Guide".<br>
><br>
>     Thanks.<br>
><br>
>     Signed-off-by: Libra Li <<a href="http://libra.li" target="_blank">libra.li</a>@<a href="http://technexion.com" target="_blank">technexion.com</a>><br>
<br>
</div></div>Hi Libra Li,<br>
<br>
Thanks for making these changes. I like the idea of the mainboard<br>
interrupt function. I have a few comments.<br>
<br>
+typedef struct {<br>
+        int mask[256];<br>
+        int (*intXX_handler[256])(struct eregs *regs);<br>
+}interrupt_handlers;<br>
<br>
This is a really big structure and probably not needed. I don't think<br>
anyone would override every interrupt vector, just one or two like you<br>
are doing. Maybe just use a table that has the interrupt and function<br>
pointer.<br>
<br>
<br>
+       if(!(*intXX_handler))<br>
+       {<br>
+               /* Set up C interrupt handlers */<br>
+               setup_interrupt_handlers();<br>
+       }<br>
+<br>
<br>
Is this because mainboard_interrupt_handlers gets called first and the<br>
interrupts are over written? It would be better if the defaults could<br>
always be loaded and then the main board interrupts get fixed up.<br>
<br>
Thanks,<br>
Marc<br>
<font color="#888888"><br>
<br>
--<br>
<a href="http://marcjonesconsulting.com" target="_blank">http://marcjonesconsulting.com</a><br>
</font></blockquote></div></div></div><br>
</blockquote></div><br>