diff options
Diffstat (limited to 'arch/x86/math-emu/fpu_entry.c')
| -rw-r--r-- | arch/x86/math-emu/fpu_entry.c | 14 | 
1 files changed, 7 insertions, 7 deletions
| diff --git a/arch/x86/math-emu/fpu_entry.c b/arch/x86/math-emu/fpu_entry.c index 0203baefb5c0..9e2ba7e667f6 100644 --- a/arch/x86/math-emu/fpu_entry.c +++ b/arch/x86/math-emu/fpu_entry.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0  /*---------------------------------------------------------------------------+   |  fpu_entry.c                                                              |   |                                                                           | @@ -114,7 +115,7 @@ void math_emulate(struct math_emu_info *info)  	struct desc_struct code_descriptor;  	struct fpu *fpu = ¤t->thread.fpu; -	fpu__activate_curr(fpu); +	fpu__initialize(fpu);  #ifdef RE_ENTRANT_CHECKING  	if (emulating) { @@ -147,7 +148,7 @@ void math_emulate(struct math_emu_info *info)  		}  		code_descriptor = FPU_get_ldt_descriptor(FPU_CS); -		if (SEG_D_SIZE(code_descriptor)) { +		if (code_descriptor.d) {  			/* The above test may be wrong, the book is not clear */  			/* Segmented 32 bit protected mode */  			addr_modes.default_mode = SEG32; @@ -155,11 +156,10 @@ void math_emulate(struct math_emu_info *info)  			/* 16 bit protected mode */  			addr_modes.default_mode = PM16;  		} -		FPU_EIP += code_base = SEG_BASE_ADDR(code_descriptor); -		code_limit = code_base -		    + (SEG_LIMIT(code_descriptor) + -		       1) * SEG_GRANULARITY(code_descriptor) -		    - 1; +		FPU_EIP += code_base = seg_get_base(&code_descriptor); +		code_limit = seg_get_limit(&code_descriptor) + 1; +		code_limit *= seg_get_granularity(&code_descriptor); +		code_limit += code_base - 1;  		if (code_limit < code_base)  			code_limit = 0xffffffff;  	} |