[parisc-linux] PDC woes

Matthew Wilcox Matthew.Wilcox@genedata.com
Sun, 11 Jul 1999 01:18:52 +0200


Philipp asked me to write a function to calculate the frequency of the
interval timer.  However, the PDC doesn't want to cooperate.  I see
`hello' printed on the screen, but not `world'.  So somehow this PDC
call is going wrong.  Anyone have any clues?  pim_info is not very
revealing.  If it helps anyone, the blinkenlights on my 715/33 are at:

10110010

Is there a document somewhere describing what the blinkenlights mean?

Here's the function:

/*
 * Find the interval timer frequency.
 */
static long calculate_interval_timer_frequency(void)
{
        long exponent, mantissa, result;
        long buf[4] __attribute__ ((aligned (8)));
printk("hello\n");
        (*pdc) (PDC_TOD, PDC_TOD_ITIMER, buf, 0);
printk("world\n");
        exponent = (buf[0] >> 20) & 0x7ff;
        mantissa = (buf[0] & 0xfffff) | 0x100000;
        result = (mantissa >> (1038 - exponent)) * 625 * 625;
printk("exponent = %ld mantissa = %ld result = %ld\n", exponent, mantissa, resul
t);
        return result;
}


-- 
Matthew Wilcox <willy@bofh.ai>
"Windows and MacOS are products, contrived by engineers in the service of
specific companies. Unix, by contrast, is not so much a product as it is a
painstakingly compiled oral history of the hacker subculture." - N Stephenson