On Mon, Oct 27, 2008 at 05:02:34PM -0700, David Daney wrote:
> +#ifdef CONFIG_SMP
> +#define cpu_has_llsc 1
> +#else
> +/* Disable LL/SC on non SMP systems. It is faster to disable interrupts for
> + atomic access than a LL/SC */
> +#define cpu_has_llsc 0
> +#endif
It also means the resulting kernel won't have support for futex which
essentially means you're cut off from modern libcs.
It is possible to get this to work - but nobody bothered so far; ll/sc-less
R2000 class processors are very rare these days. My recommendation is
to keep cpu_has_llsc as 1 until you've fixed up the futex implementation,
if you deciede so.
> +static inline int read_current_timer(unsigned long *result)
> +{
> + asm volatile ("rdhwr %0,$31\n"
> +#ifndef CONFIG_64BIT
> + "sll %0, 0\n"
> +#endif
> + : "=r" (*result));
> + return 0;
> +}
This function is unused. And anyway, this header file wasn't meant as
the place for random code but only a way to describe the procesors a
system may feature as tightly as possible.
> +#ifndef __OCTEON_IRQ_H__
> +#define __OCTEON_IRQ_H__
> +
> +#define NR_IRQS OCTEON_IRQ_LAST
> +#define MIPS_CPU_IRQ_BASE 0
> +
> +/* 0 - 7 represent the 8 MIPS standard interrupt sources */
[...]
> +/* 144 - 151 represent the i8259 master */
> +#define OCTEON_IRQ_I8259M0 144
> +#define OCTEON_IRQ_I8259M1 145
> +#define OCTEON_IRQ_I8259M2 146
> +#define OCTEON_IRQ_I8259M3 147
> +#define OCTEON_IRQ_I8259M4 148
> +#define OCTEON_IRQ_I8259M5 149
> +#define OCTEON_IRQ_I8259M6 150
> +#define OCTEON_IRQ_I8259M7 151
> +/* 152 - 159 represent the i8259 slave */
> +#define OCTEON_IRQ_I8259S0 152
> +#define OCTEON_IRQ_I8259S1 153
> +#define OCTEON_IRQ_I8259S2 154
> +#define OCTEON_IRQ_I8259S3 155
> +#define OCTEON_IRQ_I8259S4 156
> +#define OCTEON_IRQ_I8259S5 157
> +#define OCTEON_IRQ_I8259S6 158
> +#define OCTEON_IRQ_I8259S7 159
You have some code for an i8259. Since ISA interrupts are well known
numbers which are even hardcoded in drivers, manuals, printed on PCBs
etc. I recommend to renumber interrupts such that i8259 interrupts are
interrupts 0..15 and everything else follows after. Oh the pleassures
of ISA cruft.
> +/**
> + * Write a 32bit value to the Octeon NPI register space
> + *
> + * @param address Address to write to
> + * @param val Value to write
> + */
Linux coding style - comments are:
/*
* blah frobnicate zumbitso
*/
sed is your friend to fix this.
Ralf
|