aboutsummaryrefslogtreecommitdiff
path: root/i386/include
diff options
context:
space:
mode:
authorFlavio Cruz <flaviocruz@gmail.com>2023-01-27 01:41:02 -0500
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-01-27 08:55:38 +0100
commite6fec85fbd4ef5b54353c4b4eda2b4f2b5484a26 (patch)
tree7fd5fe86c75c8f538e3cf1fcff416b06be21ab91 /i386/include
parent248d0c7a784f33c7a682cee038ebcaf33af7cb36 (diff)
downloadgnumach-e6fec85fbd4ef5b54353c4b4eda2b4f2b5484a26.tar.gz
gnumach-e6fec85fbd4ef5b54353c4b4eda2b4f2b5484a26.tar.bz2
gnumach-e6fec85fbd4ef5b54353c4b4eda2b4f2b5484a26.zip
Change i386 RPC subsystem to include descriptor instead of real_descriptor
This should avoid issues with glibc and hurd as introduced in https://git.savannah.gnu.org/cgit/hurd/gnumach.git/commit/?id=b379d5afdf65cce11426ab0349a3778b3fd632f5 since we are changing the types of the parameters when implementing the RPCs to match the previous declaration using `struct descriptor`. Message-Id: <Y9Nx/qCRtVruxGwb@jupiter.tail36e24.ts.net>
Diffstat (limited to 'i386/include')
-rw-r--r--i386/include/mach/i386/mach_i386.defs11
-rw-r--r--i386/include/mach/i386/mach_i386_types.h40
2 files changed, 8 insertions, 43 deletions
diff --git a/i386/include/mach/i386/mach_i386.defs b/i386/include/mach/i386/mach_i386.defs
index 4694522b..965d5c3b 100644
--- a/i386/include/mach/i386/mach_i386.defs
+++ b/i386/include/mach/i386/mach_i386.defs
@@ -43,9 +43,6 @@ MACH_I386_IMPORTS
type descriptor_t = struct[2] of uint32_t;
type descriptor_list_t = array[*] of descriptor_t;
-type real_descriptor_t = descriptor_t;
-type real_descriptor_list_t = array[*] of real_descriptor_t;
-
import <mach/machine/mach_i386_types.h>;
#if KERNEL_SERVER
@@ -69,13 +66,13 @@ skip; /* i386_io_port_list */
routine i386_set_ldt(
target_thread : thread_t;
first_selector : int;
- desc_list : real_descriptor_list_t, serverCopy);
+ desc_list : descriptor_list_t, serverCopy);
routine i386_get_ldt(
target_thread : thread_t;
first_selector : int;
selector_count : int;
- out desc_list : real_descriptor_list_t);
+ out desc_list : descriptor_list_t);
/* Request a new port IO_PERM that represents the capability to access
the I/O ports [FROM; TO] directly. MASTER_PORT is the master device port.
@@ -107,10 +104,10 @@ routine i386_io_perm_modify(
routine i386_set_gdt(
target_thread : thread_t;
inout selector : int;
- desc : real_descriptor_t);
+ desc : descriptor_t);
/* Fetch a segment descriptor set with a prior i386_set_gdt call. */
routine i386_get_gdt(
target_thread : thread_t;
selector : int;
- out desc : real_descriptor_t);
+ out desc : descriptor_t);
diff --git a/i386/include/mach/i386/mach_i386_types.h b/i386/include/mach/i386/mach_i386_types.h
index bfa91ca0..f5177fb5 100644
--- a/i386/include/mach/i386/mach_i386_types.h
+++ b/i386/include/mach/i386/mach_i386_types.h
@@ -34,46 +34,14 @@
/*
* i386 segment descriptor.
*/
-struct segment_descriptor {
+struct descriptor {
unsigned int low_word;
unsigned int high_word;
};
-typedef struct segment_descriptor descriptor_t;
-typedef struct segment_descriptor *descriptor_list_t;
-typedef const struct descriptor *const_segment_descriptor_list_t;
-
-/*
- * Real segment descriptor.
- */
-struct real_descriptor {
- unsigned int limit_low:16, /* limit 0..15 */
- base_low:16, /* base 0..15 */
- base_med:8, /* base 16..23 */
- access:8, /* access byte */
- limit_high:4, /* limit 16..19 */
- granularity:4, /* granularity */
- base_high:8; /* base 24..31 */
-};
-typedef struct real_descriptor real_descriptor_t;
-typedef real_descriptor_t *real_descriptor_list_t;
-typedef const real_descriptor_list_t const_real_descriptor_list_t;
-
-#ifdef __x86_64__
-struct real_descriptor64 {
- unsigned int limit_low:16, /* limit 0..15 */
- base_low:16, /* base 0..15 */
- base_med:8, /* base 16..23 */
- access:8, /* access byte */
- limit_high:4, /* limit 16..19 */
- granularity:4, /* granularity */
- base_high:8, /* base 24..31 */
- base_ext:32, /* base 32..63 */
- reserved1:8,
- zero:5,
- reserved2:19;
-};
-#endif
+typedef struct descriptor descriptor_t;
+typedef struct descriptor *descriptor_list_t;
+typedef const struct descriptor *const_descriptor_list_t;
#endif /* !__ASSEMBLER__ */