Discussion in 'Windows Vista' started by ciao, Jan 8, 2009.
How to insert the slic table in a clean release of grub4dos?
Not sure if this helps but I've looked into this myself and it's very complicated.
I am working on some pseudo code which I will code into grub4dos and test.
Firstly the BIOS copies all it's relevent tables into the BIOS memory between 0xE0000 and 0X10000 or to the EBDA. Then it loads the bootloader which in this case would be grub4dos. You must take these tables and completely rebuild them adding you slic. Below is a brief outline of what I think must be done.
Essentially it seems that you must locate the RSDP using EBDA 0x40E or BIOS memory between 0xE0000 and 0X10000 looking for "RSD PTR " and then save a copy in memory of all the tables that are linked to this. Then you add your copy of the acpi slic table to this list. Recalculate the length of all the tables in your list. Then subtract this length from the BIOS high memory of 0x100000. This gives you your new starting address for the RSDP.
Then you must copy back all the tables starting from this address up to the BIOS high mem. Special consideration must be given to DSDT and FADT tables as they are linked by pointers. Then recalculate checksums for all headers. You may or may not want to update the EBDA at 0x40e as well.
This is my first attempt as trying to understand the tasks involved.
Comments are welcome as is any help which I will also freely give.
Just to let everybody know hat I got this working today for revision 1 of a RSDP. I wil tidy up my code and get it working for the XSDT too.