[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