Alpha: Rearrange thread info flags fixing two regressions
The removal of the TIF_NOTIFY_RESUME flag, commita583f1b542"remove unused TIF_NOTIFY_RESUME flag," resulted in incorrect setting of the unaligned access control flags by the prctl syscall. The re-addition of the TIF_NOTIFY_RESUME flag, commitd0420c83f3"KEYS: Extend TIF_NOTIFY_RESUME to (almost) all architectures [try #6]" further caused problems, namely incorrect operands to assembler code as evidenced by: AS arch/alpha/kernel/entry.o arch/alpha/kernel/entry.S: Assembler messages: arch/alpha/kernel/entry.S:326: Warning: operand out of range (0x0000000000000406 is not between 0x0000000000000000 and 0x00000000000000ff) Both regressions fixed by (1) rearranging TIF_NOTIFY_RESUME flag to be in lower 8 bits of the thread info flags, and (2) making sure that ALPHA_UAC_SHIFT matches the rearrangement of the thread info flags. Signed-off-by: Michael Cree <mcree@orcon.net.nz> Cc: Richard Henderson <rth@twiddle.net> Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: David Howells <dhowells@redhat.com>, Signed-off-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
		
					parent
					
						
							
								cc9a2c8301
							
						
					
				
			
			
				commit
				
					
						745dd2405e
					
				
			
		
					 1 changed files with 15 additions and 12 deletions
				
			
		|  | @ -61,21 +61,24 @@ register struct thread_info *__current_thread_info __asm__("$8"); | |||
| /*
 | ||||
|  * Thread information flags: | ||||
|  * - these are process state flags and used from assembly | ||||
|  * - pending work-to-be-done flags come first to fit in and immediate operand. | ||||
|  * - pending work-to-be-done flags come first and must be assigned to be | ||||
|  *   within bits 0 to 7 to fit in and immediate operand. | ||||
|  * - ALPHA_UAC_SHIFT below must be kept consistent with the unaligned | ||||
|  *   control flags. | ||||
|  * | ||||
|  * TIF_SYSCALL_TRACE is known to be 0 via blbs. | ||||
|  */ | ||||
| #define TIF_SYSCALL_TRACE	0	/* syscall trace active */ | ||||
| #define TIF_SIGPENDING		1	/* signal pending */ | ||||
| #define TIF_NEED_RESCHED	2	/* rescheduling necessary */ | ||||
| #define TIF_POLLING_NRFLAG	3	/* poll_idle is polling NEED_RESCHED */ | ||||
| #define TIF_DIE_IF_KERNEL	4	/* dik recursion lock */ | ||||
| #define TIF_UAC_NOPRINT		5	/* see sysinfo.h */ | ||||
| #define TIF_UAC_NOFIX		6 | ||||
| #define TIF_UAC_SIGBUS		7 | ||||
| #define TIF_MEMDIE		8 | ||||
| #define TIF_RESTORE_SIGMASK	9	/* restore signal mask in do_signal */ | ||||
| #define TIF_NOTIFY_RESUME	10	/* callback before returning to user */ | ||||
| #define TIF_NOTIFY_RESUME	1	/* callback before returning to user */ | ||||
| #define TIF_SIGPENDING		2	/* signal pending */ | ||||
| #define TIF_NEED_RESCHED	3	/* rescheduling necessary */ | ||||
| #define TIF_POLLING_NRFLAG	8	/* poll_idle is polling NEED_RESCHED */ | ||||
| #define TIF_DIE_IF_KERNEL	9	/* dik recursion lock */ | ||||
| #define TIF_UAC_NOPRINT		10	/* see sysinfo.h */ | ||||
| #define TIF_UAC_NOFIX		11 | ||||
| #define TIF_UAC_SIGBUS		12 | ||||
| #define TIF_MEMDIE		13 | ||||
| #define TIF_RESTORE_SIGMASK	14	/* restore signal mask in do_signal */ | ||||
| #define TIF_FREEZE		16	/* is freezing for suspend */ | ||||
| 
 | ||||
| #define _TIF_SYSCALL_TRACE	(1<<TIF_SYSCALL_TRACE) | ||||
|  | @ -94,7 +97,7 @@ register struct thread_info *__current_thread_info __asm__("$8"); | |||
| #define _TIF_ALLWORK_MASK	(_TIF_WORK_MASK		\ | ||||
| 				 | _TIF_SYSCALL_TRACE) | ||||
| 
 | ||||
| #define ALPHA_UAC_SHIFT		6 | ||||
| #define ALPHA_UAC_SHIFT		10 | ||||
| #define ALPHA_UAC_MASK		(1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \ | ||||
| 				 1 << TIF_UAC_SIGBUS) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Michael Cree
				Michael Cree