Lines Matching +full:short +full:- +full:descriptor
1 // SPDX-License-Identifier: GPL-2.0
2 /*---------------------------------------------------------------------------+
9 | Australia. E-mail billm@suburbia.net |
12 +---------------------------------------------------------------------------*/
14 /*---------------------------------------------------------------------------+
19 +---------------------------------------------------------------------------*/
43 #define REG_(x) (*(long *)(reg_offset[(x)] + (u_char *)FPU_info->regs))
55 #define VM86_REG_(x) (*(unsigned short *) \
56 (reg_offset_vm86[((unsigned)x)] + (u_char *)FPU_info->regs))
68 #define PM_REG_(x) (*(unsigned short *) \
69 (reg_offset_pm[((unsigned)x)] + (u_char *)FPU_info->regs))
93 /* A non-zero ss is illegal */ in sib()
125 segment--; in vm86_segment()
132 addr->selector = VM86_REG_(segment); in vm86_segment()
140 struct desc_struct descriptor; in pm_address() local
143 segment--; in pm_address()
154 case PREFIX_GS_ - 1: in pm_address()
156 savesegment(gs, addr->selector); in pm_address()
159 addr->selector = PM_REG_(segment); in pm_address()
162 descriptor = FPU_get_ldt_descriptor(addr->selector); in pm_address()
163 base_address = seg_get_base(&descriptor); in pm_address()
165 limit = seg_get_limit(&descriptor) + 1; in pm_address()
166 limit *= seg_get_granularity(&descriptor); in pm_address()
167 limit += base_address - 1; in pm_address()
171 if (seg_expands_down(&descriptor)) { in pm_address()
172 if (descriptor.g) { in pm_address()
181 ((seg_top - address) >= 255 ? 255 : seg_top - address); in pm_address()
185 ((limit - address) >= 254 ? 255 : limit - address + 1); in pm_address()
187 if (seg_execute_only(&descriptor) || in pm_address()
188 (!seg_writable(&descriptor) && (FPU_modrm & FPU_WRITE_BIT))) { in pm_address()
219 in `non-segmented' 32 bit protected mode. */ in FPU_get_address()
225 addr->selector = FPU_DS; /* Default, for 32 bit non-segmented mode. */ in FPU_get_address()
244 addr->offset = address; in FPU_get_address()
249 addr->offset = address; in FPU_get_address()
275 addr->offset = address; in FPU_get_address()
303 in `non-segmented' 32 bit protected mode. */ in FPU_get_address_16()
309 addr->selector = FPU_DS; /* Default, for 32 bit non-segmented mode. */ in FPU_get_address_16()
320 (unsigned short __user *)(*fpu_eip)); in FPU_get_address_16()
338 FPU_get_user(address, (unsigned short __user *)(*fpu_eip)); in FPU_get_address_16()
349 address += FPU_info->regs->bx + FPU_info->regs->si; in FPU_get_address_16()
352 address += FPU_info->regs->bx + FPU_info->regs->di; in FPU_get_address_16()
355 address += FPU_info->regs->bp + FPU_info->regs->si; in FPU_get_address_16()
360 address += FPU_info->regs->bp + FPU_info->regs->di; in FPU_get_address_16()
365 address += FPU_info->regs->si; in FPU_get_address_16()
368 address += FPU_info->regs->di; in FPU_get_address_16()
371 address += FPU_info->regs->bp; in FPU_get_address_16()
376 address += FPU_info->regs->bx; in FPU_get_address_16()
383 addr->offset = address; in FPU_get_address_16()