no, i use set these options :
VGA_CONSOLE = 0
PC_KEYBOARD = 0
this is ok, the same problem of peter fox. I used the modified timer.c for
filo (don't use rdtsc in filo because it's a 486) and now it works.
if someone need it, i join it.
> is your filo trying to use VGA? make sure that it is only trying to use
> the serial port.
>
> ron
#include <arch/timer.h>
#include <arch/io.h>
static void load_timer2(unsigned int ticks)
{
/* Set up the timer gate, turn off the speaker */
outb((inb(PPC_PORTB) & ~PPCB_SPKR) | PPCB_T2GATE, PPC_PORTB);
outb(TIMER2_SEL|WORD_ACCESS|MODE0|BINARY_COUNT, TIMER_MODE_PORT);
outb(ticks & 0xFF, TIMER2_PORT);
outb(ticks >> 8, TIMER2_PORT);
}
void setup_timers(void)
{
}
void udelay(unsigned int usecs)
{
load_timer2((usecs*TICKS_PER_MS)/1000);
while ((inb(PPC_PORTB) & PPCB_T2OUT) == 0)
;
}
void ndelay(unsigned int nsecs)
{
udelay((nsecs+999)/1000);
}
void mdelay(unsigned int msecs)
{
udelay(msecs*1000);
}
unsigned long currticks(void)
{
static unsigned long totticks = 0UL; /* High resolution */
unsigned long ticks = 0;
unsigned char portb = inb(PPC_PORTB);
/* Read the timer, and hope it hasn't wrapped around (call
this again within 54ms), then restart it */
outb(TIMER2_SEL|LATCH_COUNT, TIMER_MODE_PORT);
ticks = inb(TIMER2_PORT);
ticks |= inb(TIMER2_PORT) << 8;
outb(TIMER2_SEL|WORD_ACCESS|MODE0|BINARY_COUNT, TIMER_MODE_PORT);
outb(0, TIMER2_PORT);
outb(0, TIMER2_PORT);
/* Check if the timer was running, if not, result is rubbish and need to start it */
if(portb & PPCB_T2GATE)
{
totticks += (0x10000 - ticks);
}
else
{
/* Set up the timer gate, turn off the speaker */
outb((portb & ~PPCB_SPKR) | PPCB_T2GATE, PPC_PORTB);
}
return totticks/TICKS_PER_MS;
}