• Heiko Carstens's avatar
    locking, m68k: Calculate thread_info offset with asm offset · 0ee000e5
    Heiko Carstens authored
    m68k has the thread_info structure embedded in its task struct.
    Therefore its not possible to implement current_thread_info()
    by looking at the stack pointer and do some simple calculations
    like most other architectures do it.
    
    To return the thread_info pointer for a task two defines are
    used. This works until the spinlock function bodies get moved
    into an own header file and CONFIG_SPINLOCK_DEBUG is turned on.
    That results into this compile error:
    
      In file included from include/linux/spinlock.h:378,
                       from include/linux/seqlock.h:29,
                       from include/linux/time.h:8,
                       from include/linux/timex.h:56,
                       from include/linux/sched.h:54,
                       from arch/m68k/kernel/asm-offsets.c:12:
      include/linux/spinlock_api_smp.h: In function '__spin_unlock_irq':
      include/linux/spinlock_api_smp.h:371: error: 'current' undeclared (first use in this function)
      include/linux/spinlock_api_smp.h:371: error: (Each undeclared identifier is reported only once
      include/linux/spinlock_api_smp.h:371: error: for each function it appears in.)
    
    Including asm/current.h to asm-offsets.c wouldn't help since
    the definition of struct task is needed. So we end up with ugly
    header file include dependencies.
    
    To solve this calculate the offset of the thread_info structure
    into the task struct in asm-offsets.h and use the offset in
    task_thread_info(). This works just like it does for IA64 as
    well.
    Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Nick Piggin <nickpiggin@yahoo.com.au>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Horst Hartmann <horsth@linux.vnet.ibm.com>
    Cc: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: David Miller <davem@davemloft.net>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Roman Zippel <zippel@linux-m68k.org>
    Cc: <linux-arch@vger.kernel.org>
    LKML-Reference: <20090831124417.329662275@de.ibm.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    0ee000e5
thread_info_mm.h 1.88 KB