more gcc fixes.

This commit is contained in:
Ronald G. Minnich 2002-12-09 23:38:11 +00:00
commit d96a3f75b8
5 changed files with 29 additions and 5 deletions

View file

@ -26,11 +26,15 @@ struct irq_routing_table {
u32 miniport_data; /* Crap */
u8 rfu[11];
u8 checksum; /* Modulo 256 checksum must give zero */
#if GCC_VERSION < 3000
#ifndef IRQ_SLOT_COUNT
#if (__GNUC__ < 3)
struct irq_info slots[1];
#else
struct irq_info slots[];
#endif
#endif // __GNUC__ < 3
#else
struct irq_info slots[IRQ_SLOT_COUNT];
#endif // ! IRQ_SLOT_COUNT
} __attribute__((packed));
extern const struct irq_routing_table intel_irq_routing_table;

View file

@ -1,6 +1,7 @@
object i386_subr.o
object params.o
object hardwaremain.o
object c_start.S
object pirq_routing.o HAVE_PIRQ_TABLE
object vgabios.o CONFIG_VGABIOS
object idt.o CONFIG_REALMODE_IDT

View file

@ -1,5 +1,5 @@
/* PCI: Interrupt Routing Table found at 0x4011ce40 size = 416 */
#define IRQ_SLOT_COUNT 24
#include <arch/pirq_routing.h>
const struct irq_routing_table intel_irq_routing_table = {

View file

@ -16,7 +16,7 @@
#define PIRQ_SIGNATURE (('$' << 0) + ('P' << 8) + ('I' << 16) + ('R' << 24))
#define PIRQ_VERS 0x0100
extern struct irq_routing_table intel_irq_routing_table;
//extern struct irq_routing_table intel_irq_routing_table;
struct irq_info se_arr[50];
struct irq_routing_table *rt;

View file

@ -83,6 +83,8 @@ static const char rcsid[] =
#define MAXPNSTR 132
#define LINUXBIOS_MP_TABLE 0
enum busTypes {
CBUS = 1,
CBUSII = 2,
@ -342,7 +344,7 @@ char *postamble[] = {
" /* Compute the checksums */",
" mc->mpe_checksum = smp_compute_checksum(smp_next_mpc_entry(mc), mc->mpe_length);",
" mc->mpc_checksum = smp_compute_checksum(mc, mc->mpc_length);",
" printk_debug(\"Wrote the mp table end at: %p - %p\n\",",
" printk_debug(\"Wrote the mp table end at: %p - %p\\n\",",
" mc, smp_next_mpe_entry(mc));",
" return smp_next_mpe_entry(mc);",
"}",
@ -531,6 +533,23 @@ apic_probe( vm_offset_t* paddr, int* where )
printf( "NOT found\n" );
}
target = 0;
segment = 0;
if ( verbose )
printf( " searching for LinuxBIOS MP table @ 0x%08x (%dK)\n",
target, segment );
seekEntry( target );
readEntry( buffer, ONE_KBYTE );
for ( x = 0; x < ONE_KBYTE / sizeof ( unsigned int ); NEXT(x) ) {
if ( buffer[ x ] == MP_SIG ) {
*where = 2;
*paddr = (x * sizeof( unsigned int )) + target;
return;
}
}
/* read CMOS for real top of mem */
seekEntry( (vm_offset_t)TOPOFMEM_POINTER );
readEntry( &segment, 2 );