lkml.org 
[lkml]   [2002]   [Jan]   [30]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateWed, 30 Jan 2002 00:22:04 -0800
FromRichard Henderson <>
SubjectRe: [PATCH] per-cpu areas for 2.5.3-pre6
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