[PATCH] powerpc: Merge thread_info.h
Merge ppc32 and ppc64 versions of thread_info.h. They were pretty similar already, the chief changes are: - Instead of inline asm to implement current_thread_info(), which needs to be different for ppc32 and ppc64, we use C with an asm("r1") register variable. gcc turns it into the same asm as we used to have for both platforms. - We replace ppc32's 'local_flags' with the ppc64 'syscall_noerror' field. The noerror flag was in fact the only thing in the local_flags field anyway, so the ppc64 approach is simpler, and means we only need a load-immediate/store instead of load/mask/store when clearing the flag. - In readiness for 64k pages, when THREAD_SIZE will be less than a page, ppc64 used kmalloc() rather than get_free_pages() to allocate the kernel stack. With this patch we do the same for ppc32, since there's no strong reason not to. - For ppc64, we no longer export THREAD_SHIFT and THREAD_SIZE via asm-offsets, thread_info.h can now be safely included in asm, as on ppc32. Built and booted on G4 Powerbook (ARCH=ppc and ARCH=powerpc) and Power5 (ARCH=ppc64 and ARCH=powerpc). Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:

committed by
Paul Mackerras

parent
b0faa28493
commit
6cb7bfebb1
@@ -200,9 +200,8 @@ _GLOBAL(DoSyscall)
|
||||
bl do_show_syscall
|
||||
#endif /* SHOW_SYSCALLS */
|
||||
rlwinm r10,r1,0,0,18 /* current_thread_info() */
|
||||
lwz r11,TI_LOCAL_FLAGS(r10)
|
||||
rlwinm r11,r11,0,~_TIFL_FORCE_NOERROR
|
||||
stw r11,TI_LOCAL_FLAGS(r10)
|
||||
li r11,0
|
||||
stb r11,TI_SC_NOERR(r10)
|
||||
lwz r11,TI_FLAGS(r10)
|
||||
andi. r11,r11,_TIF_SYSCALL_T_OR_A
|
||||
bne- syscall_dotrace
|
||||
@@ -227,8 +226,8 @@ ret_from_syscall:
|
||||
cmplw 0,r3,r11
|
||||
rlwinm r12,r1,0,0,18 /* current_thread_info() */
|
||||
blt+ 30f
|
||||
lwz r11,TI_LOCAL_FLAGS(r12)
|
||||
andi. r11,r11,_TIFL_FORCE_NOERROR
|
||||
lbz r11,TI_SC_NOERR(r12)
|
||||
cmpwi r11,0
|
||||
bne 30f
|
||||
neg r3,r3
|
||||
lwz r10,_CCR(r1) /* Set SO bit in CR */
|
||||
|
Reference in New Issue
Block a user