arm64: Store struct thread_info in sp_el0
authorJungseok Lee <jungseoklee85@gmail.com>
Fri, 4 Dec 2015 11:02:25 +0000 (11:02 +0000)
committerWill Deacon <will.deacon@arm.com>
Tue, 8 Dec 2015 11:40:48 +0000 (11:40 +0000)
commit6cdf9c7ca687e01840d0215437620a20263012fc
tree096f89d35adbe535b681e885c0214ea9eee7b463
parent5db4fd8c52810bd9740c1240ebf89223b171aa70
arm64: Store struct thread_info in sp_el0

There is need for figuring out how to manage struct thread_info data when
IRQ stack is introduced. struct thread_info information should be copied
to IRQ stack under the current thread_info calculation logic whenever
context switching is invoked. This is too expensive to keep supporting
the approach.

Instead, this patch pays attention to sp_el0 which is an unused scratch
register in EL1 context. sp_el0 utilization not only simplifies the
management, but also prevents text section size from being increased
largely due to static allocated IRQ stack as removing masking operation
using THREAD_SIZE in many places.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Jungseok Lee <jungseoklee85@gmail.com>
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/thread_info.h
arch/arm64/kernel/entry.S
arch/arm64/kernel/head.S
arch/arm64/kernel/sleep.S