ARC: pt_regs update #2: Remove unused gutter at start of pt_regs
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
This commit is contained in:
		
							parent
							
								
									283237a04f
								
							
						
					
					
						commit
						2fa919045b
					
				| @ -432,9 +432,6 @@ | ||||
| 	st.a    r9, [sp, -4] | ||||
| 	lr	r9, [erbta] | ||||
| 	st.a    r9, [sp, -4] | ||||
| 
 | ||||
| 	/* move up by 1 word to "create" pt_regs->"stack_place_holder" */ | ||||
| 	sub sp, sp, 4 | ||||
| .endm | ||||
| 
 | ||||
| /*--------------------------------------------------------------
 | ||||
| @ -474,9 +471,6 @@ | ||||
|  * by hardware and that is not good. | ||||
|  *-------------------------------------------------------------*/ | ||||
| .macro RESTORE_ALL_SYS | ||||
| 
 | ||||
| 	add sp, sp, 4       /* hop over unused "pt_regs->stack_place_holder" */ | ||||
| 
 | ||||
| 	ld.ab   r9, [sp, 4] | ||||
| 	sr	r9, [erbta] | ||||
| 	ld.ab   r9, [sp, 4] | ||||
| @ -530,9 +524,6 @@ | ||||
| 	st.a    r9, [sp, -4] | ||||
| 	lr	r9, [bta_l1] | ||||
| 	st.a    r9, [sp, -4] | ||||
| 
 | ||||
| 	/* move up by 1 word to "create" pt_regs->"stack_place_holder" */ | ||||
| 	sub sp, sp, 4 | ||||
| .endm | ||||
| 
 | ||||
| .macro SAVE_ALL_INT2 | ||||
| @ -561,9 +552,6 @@ | ||||
| 	st.a    r9, [sp, -4] | ||||
| 	lr	r9, [bta_l2] | ||||
| 	st.a    r9, [sp, -4] | ||||
| 
 | ||||
| 	/* move up by 1 word to "create" pt_regs->"stack_place_holder" */ | ||||
| 	sub sp, sp, 4 | ||||
| .endm | ||||
| 
 | ||||
| /*--------------------------------------------------------------
 | ||||
| @ -577,8 +565,6 @@ | ||||
|  *-------------------------------------------------------------*/ | ||||
| 
 | ||||
| .macro RESTORE_ALL_INT1 | ||||
| 	add sp, sp, 4       /* hop over unused "pt_regs->stack_place_holder" */ | ||||
| 
 | ||||
| 	ld.ab   r9, [sp, 4] /* Actual reg file */ | ||||
| 	sr	r9, [bta_l1] | ||||
| 	ld.ab   r9, [sp, 4] | ||||
| @ -601,8 +587,6 @@ | ||||
| .endm | ||||
| 
 | ||||
| .macro RESTORE_ALL_INT2 | ||||
| 	add sp, sp, 4       /* hop over unused "pt_regs->stack_place_holder" */ | ||||
| 
 | ||||
| 	ld.ab   r9, [sp, 4] | ||||
| 	sr	r9, [bta_l2] | ||||
| 	ld.ab   r9, [sp, 4] | ||||
|  | ||||
| @ -17,12 +17,6 @@ | ||||
| /* THE pt_regs: Defines how regs are saved during entry into kernel */ | ||||
| 
 | ||||
| struct pt_regs { | ||||
| 	/*
 | ||||
| 	 * 1 word gutter after reg-file has been saved | ||||
| 	 * Technically not needed, Since SP always points to a "full" location | ||||
| 	 * (vs. "empty"). But pt_regs is shared with tools.... | ||||
| 	 */ | ||||
| 	long res; | ||||
| 
 | ||||
| 	/* Real registers */ | ||||
| 	long bta;	/* bta_l1, bta_l2, erbta */ | ||||
|  | ||||
| @ -20,16 +20,19 @@ | ||||
|  * | ||||
|  * This is to decouple pt_regs from user-space ABI, to be able to change it | ||||
|  * w/o affecting the ABI. | ||||
|  * Although the layout (initial padding) is similar to pt_regs to have some | ||||
|  * optimizations when copying pt_regs to/from user_regs_struct. | ||||
|  * | ||||
|  * The intermediate pad,pad2 are relics of initial layout based on pt_regs | ||||
|  * for optimizations when copying pt_regs to/from user_regs_struct. | ||||
|  * We no longer need them, but can't be changed as they are part of ABI now. | ||||
|  * | ||||
|  * Also, sigcontext only care about the scratch regs as that is what we really | ||||
|  * save/restore for signal handling. | ||||
|  * save/restore for signal handling. However gdb also uses the same struct | ||||
|  * hence callee regs need to be in there too. | ||||
| */ | ||||
| struct user_regs_struct { | ||||
| 
 | ||||
| 	long pad; | ||||
| 	struct { | ||||
| 		long pad; | ||||
| 		long bta, lp_start, lp_end, lp_count; | ||||
| 		long status32, ret, blink, fp, gp; | ||||
| 		long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0; | ||||
|  | ||||
| @ -40,6 +40,13 @@ static int genregs_get(struct task_struct *target, | ||||
| 			offsetof(struct user_regs_struct, LOC), \ | ||||
| 			offsetof(struct user_regs_struct, LOC) + 4); | ||||
| 
 | ||||
| #define REG_O_ZERO(LOC)		\ | ||||
| 	if (!ret)		\ | ||||
| 		ret = user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf, \ | ||||
| 			offsetof(struct user_regs_struct, LOC), \ | ||||
| 			offsetof(struct user_regs_struct, LOC) + 4); | ||||
| 
 | ||||
| 	REG_O_ZERO(pad); | ||||
| 	REG_O_CHUNK(scratch, callee, ptregs); | ||||
| 	REG_O_CHUNK(callee, efa, cregs); | ||||
| 	REG_O_CHUNK(efa, stop_pc, &target->thread.fault_address); | ||||
| @ -88,6 +95,7 @@ static int genregs_set(struct task_struct *target, | ||||
| 			offsetof(struct user_regs_struct, LOC), \ | ||||
| 			offsetof(struct user_regs_struct, LOC) + 4); | ||||
| 
 | ||||
| 	REG_IGNORE_ONE(pad); | ||||
| 	/* TBD: disallow updates to STATUS32, orig_r8 etc*/ | ||||
| 	REG_IN_CHUNK(scratch, callee, ptregs);	/* pt_regs[bta..orig_r8] */ | ||||
| 	REG_IN_CHUNK(callee, efa, cregs);	/* callee_regs[r25..r13] */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user