[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Move assembly code out of the kernel
From: |
Vesa Jääskeläinen |
Subject: |
Re: [PATCH] Move assembly code out of the kernel |
Date: |
Sun, 24 Aug 2008 12:37:36 +0300 |
User-agent: |
Thunderbird 2.0.0.16 (Windows/20080708) |
Bean wrote:
> On Sun, Aug 17, 2008 at 7:31 PM, Vesa Jääskeläinen <address@hidden> wrote:
>> address@hidden wrote:
>>> I have made generic function that does basically the same thing for bios
>>> service 0x10 (video). In that modification you prepare registers
>>> structure that will be configured during real mode switching. I am yet
>>> to commit it for review, but I think it would be more generic way to do
>>> this. When I come back from my holiday I will commit the code for review.
>>>
>>> So please wait a bit before committing this :)
>
> Hi,
>
> I'm thinking perhaps we can make it more generic and support multiple
> INT in one function. One way to do this is not use INT, but retrieve
> the address from IVT and do a far call. On return, pop the flag on
> stack. This would also make it easily to support far call, In that
> case, we just don't pop the flag.
Hmm. I have faint memory that this has been done previously somewhere
:)... need to think this a bit more.
> I also notice that you do the protected/real mode switch in
> grub_bioscall_int10h, why not use the prot_to_real and real_to_prot ?
> If you need to keep the value of %eax, you can store it in a structure
> and pass it using other register like %ecx.
I wanted it to be easily manageable so I can alter everything in order
to get it working at the first :)
But basically the points were:
- I needed to put registers to the stack and thus need to differentiate
esp and ebp.
- When returning I need to store those registers to structure provided
by caller.
- There was no need to "corrupt" stack area with return address, and I
needed stack for different purpose
Thanks,
Vesa Jääskeläinen