On Wed, Jan 30, 2002 at 01:00:26PM +1100, Rusty Russell wrote:
> +#define per_cpu(var, cpu) \
> +(*((__typeof__(&var))((void *)&var + per_cpu_offset(cpu))))
Have we already forgotten the ppc reloc flamefest? Better
written as
#define per_cpu(var, cpu) \
({ __typeof__(&(var)) __ptr; \
__asm__ ("" : "=g"(__ptr) \
: "0"((void *)&(var) + per_cpu_offset(cpu))); \
*__ptr; })
> +/* Created by linker magic */
> +extern char __per_cpu_start, __per_cpu_end;
[...]
> + per_cpu_size = ((&__per_cpu_end - &__per_cpu_start) + PAGE_SIZE-1)
Will fail on targets (e.g. alpha and mips) that have a notion of a
"small data area" that can be addressed with special relocs.
Better written as
extern char __per_cpu_start[], __per_cpu_end[];
per_cpu_size = (__per_cpu_end - __per_cpu_start) ...
r~
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Thu Jan 31 2002 - 21:01:14 EST