1*1693644dSAndrew Jones #ifndef _ASMARM_THREAD_INFO_H_ 2*1693644dSAndrew Jones #define _ASMARM_THREAD_INFO_H_ 3*1693644dSAndrew Jones /* 4*1693644dSAndrew Jones * Adapted from arch/arm64/include/asm/thread_info.h 5*1693644dSAndrew Jones * 6*1693644dSAndrew Jones * Copyright (C) 2015, Red Hat Inc, Andrew Jones <drjones@redhat.com> 7*1693644dSAndrew Jones * 8*1693644dSAndrew Jones * This work is licensed under the terms of the GNU LGPL, version 2. 9*1693644dSAndrew Jones */ 10*1693644dSAndrew Jones 11*1693644dSAndrew Jones #define THREAD_SIZE 16384 12*1693644dSAndrew Jones #define THREAD_START_SP (THREAD_SIZE - 16) 13*1693644dSAndrew Jones 14*1693644dSAndrew Jones struct thread_info { 15*1693644dSAndrew Jones int cpu; 16*1693644dSAndrew Jones char ext[0]; /* allow unit tests to add extended info */ 17*1693644dSAndrew Jones }; 18*1693644dSAndrew Jones 19*1693644dSAndrew Jones register unsigned long current_stack_pointer asm("sp"); 20*1693644dSAndrew Jones 21*1693644dSAndrew Jones static inline struct thread_info *current_thread_info(void) 22*1693644dSAndrew Jones { 23*1693644dSAndrew Jones return (struct thread_info *) 24*1693644dSAndrew Jones (current_stack_pointer & ~(THREAD_SIZE - 1)); 25*1693644dSAndrew Jones } 26*1693644dSAndrew Jones 27*1693644dSAndrew Jones #endif /* _ASMARM_THREAD_INFO_H_ */ 28