![]() | ||||||||||
Messages in this thread |
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/
| |||||||||
| Last update: 2005-03-22 12:15 [W:0.529 / U:8.350 seconds] ©2003-2008 Jasper Spaans | ||||||||||