more fixes. Matrox cards work OK now.

This commit is contained in:
Ronald G. Minnich 2002-03-31 06:25:56 +00:00
commit d779b72dec
2 changed files with 31 additions and 6 deletions

View file

@ -35,6 +35,10 @@ void handler(void) {
" pushal\n"
" movl $0x10, %eax\n"
" jmp 1f\n"
"idthandle42:\n"
" pushal\n"
" movl $0x42, %eax\n"
" jmp 1f\n"
"idthandle1a: \n"
" pushal\n"
" movl $0x1a, %eax\n"
@ -179,6 +183,7 @@ void
setup_realmode_idt(void) {
extern unsigned char idthandle, end_idthandle;
extern unsigned char idthandle10, idthandle1a;
extern unsigned char idthandle42;
int i;
struct realidt *idts = (struct realidt *) 0;
@ -195,6 +200,9 @@ setup_realmode_idt(void) {
idts[0x1a].offset += &idthandle1a - &idthandle;
printk_debug("idts[0x1a].offset is now 0x%x\n",
idts[0x1a].offset);
idts[0x42].offset += &idthandle42 - &idthandle;
printk_debug("idts[0x42].offset is now 0x%x\n",
idts[0x42].offset);
memcpy((void *) 1024, &idthandle, &end_idthandle - &idthandle);

View file

@ -13,8 +13,10 @@ enum {
FINDDEV = 0xb102,
READCONFBYTE = 0xb108,
READCONFWORD = 0xb109,
READCONFDWORD = 0xb10a,
WRITECONFBYTE = 0xb10b,
WRITECONFWORD = 0xb10c
WRITECONFWORD = 0xb10c,
WRITECONFDWORD = 0xb10d
};
// errors go in AH. Just set these up so that word assigns
@ -84,11 +86,14 @@ pcibios(
}
}
break;
case READCONFDWORD:
case READCONFWORD:
case READCONFBYTE:
case WRITECONFDWORD:
case WRITECONFWORD:
case WRITECONFBYTE:
{
unsigned long dword;
unsigned short word;
unsigned char byte;
unsigned char reg;
@ -103,19 +108,31 @@ pcibios(
*peax = PCIBIOS_BADREG;
retval = -1;
}
if (func == READCONFBYTE) {
switch(func) {
case READCONFBYTE:
retval = pci_read_config_byte(dev, reg, &byte);
*pecx = byte;
} else if (func == READCONFWORD) {
break;
case READCONFWORD:
retval = pci_read_config_word(dev, reg, &word);
*pecx = word;
} else if (func == WRITECONFBYTE) {
break;
case READCONFDWORD:
retval = pci_read_config_dword(dev, reg, &dword);
*pecx = dword;
break;
case WRITECONFBYTE:
byte = *pecx;
retval = pci_write_config_byte(dev, reg, byte);
} else if (func == WRITECONFWORD) {
break;
case WRITECONFWORD:
word = *pecx;
retval = pci_write_config_word(dev, reg, word);
break;
case WRITECONFDWORD:
word = *pecx;
retval = pci_write_config_dword(dev, reg, dword);
break;
}
if (retval)