diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/uts/i86pc/ml/mach_offsets.in | 6 | ||||
-rw-r--r-- | usr/src/uts/i86pc/os/mp_pc.c | 5 | ||||
-rw-r--r-- | usr/src/uts/i86pc/os/trap.c | 8 | ||||
-rw-r--r-- | usr/src/uts/i86pc/sys/machcpuvar.h | 5 | ||||
-rw-r--r-- | usr/src/uts/i86pc/sys/rm_platter.h | 5 | ||||
-rw-r--r-- | usr/src/uts/intel/amd64/ml/mach_offsets.in | 6 | ||||
-rw-r--r-- | usr/src/uts/intel/ia32/os/desctbls.c | 12 | ||||
-rw-r--r-- | usr/src/uts/intel/sys/segments.h | 7 | ||||
-rw-r--r-- | usr/src/uts/intel/sys/tss.h | 56 |
9 files changed, 83 insertions, 27 deletions
diff --git a/usr/src/uts/i86pc/ml/mach_offsets.in b/usr/src/uts/i86pc/ml/mach_offsets.in index 770912bf9e..b7ea0131aa 100644 --- a/usr/src/uts/i86pc/ml/mach_offsets.in +++ b/usr/src/uts/i86pc/ml/mach_offsets.in @@ -21,8 +21,8 @@ \ \ CDDL HEADER END \ - -#pragma ident "%Z%%M% %I% %E% SMI" +\ Copyright 2011 Joyent, Inc. All rights reserved. +\ \ \ offsets.in: input file to produce assym.h using the ctfstabs program @@ -92,7 +92,7 @@ regs REGSIZE \#define REGOFF_PC REGOFF_EIP -tss +tss_t tss_esp0 TSS_ESP0 tss_ss0 TSS_SS0 tss_ldt TSS_LDT diff --git a/usr/src/uts/i86pc/os/mp_pc.c b/usr/src/uts/i86pc/os/mp_pc.c index 0429b463f6..4ba4612abd 100644 --- a/usr/src/uts/i86pc/os/mp_pc.c +++ b/usr/src/uts/i86pc/os/mp_pc.c @@ -25,6 +25,9 @@ * Copyright (c) 2010, Intel Corporation. * All rights reserved. */ +/* + * Copyright 2011 Joyent, Inc. All rights reserved. + */ /* * Welcome to the world of the "real mode platter". @@ -169,7 +172,7 @@ rmp_gdt_init(rm_platter_t *rm) static void * mach_cpucontext_alloc_tables(struct cpu *cp) { - struct tss *ntss; + tss_t *ntss; struct cpu_tables *ct; /* diff --git a/usr/src/uts/i86pc/os/trap.c b/usr/src/uts/i86pc/os/trap.c index 71995cc992..1e6c4a5c32 100644 --- a/usr/src/uts/i86pc/os/trap.c +++ b/usr/src/uts/i86pc/os/trap.c @@ -31,6 +31,10 @@ /* All Rights Reserved */ /* */ +/* + * Copyright 2011 Joyent, Inc. All rights reserved. + */ + #include <sys/types.h> #include <sys/sysmacros.h> #include <sys/param.h> @@ -1983,7 +1987,7 @@ static void dump_tss(void) { const char tss_fmt[] = "tss.%s:\t0x%p\n"; /* Format string */ - struct tss *tss = CPU->cpu_tss; + tss_t *tss = CPU->cpu_tss; printf(tss_fmt, "tss_rsp0", (void *)tss->tss_rsp0); printf(tss_fmt, "tss_rsp1", (void *)tss->tss_rsp1); @@ -2004,7 +2008,7 @@ static void dump_tss(void) { const char tss_fmt[] = "tss.%s:\t0x%p\n"; /* Format string */ - struct tss *tss = CPU->cpu_tss; + tss_t *tss = CPU->cpu_tss; printf(tss_fmt, "tss_link", (void *)(uintptr_t)tss->tss_link); printf(tss_fmt, "tss_esp0", (void *)(uintptr_t)tss->tss_esp0); diff --git a/usr/src/uts/i86pc/sys/machcpuvar.h b/usr/src/uts/i86pc/sys/machcpuvar.h index 67b9a07439..af29f47285 100644 --- a/usr/src/uts/i86pc/sys/machcpuvar.h +++ b/usr/src/uts/i86pc/sys/machcpuvar.h @@ -22,6 +22,9 @@ * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright 2011 Joyent, Inc. All rights reserved. + */ #ifndef _SYS_MACHCPUVAR_H #define _SYS_MACHCPUVAR_H @@ -103,7 +106,7 @@ struct machcpu { user_desc_t *mcpu_gdt; /* GDT */ gate_desc_t *mcpu_idt; /* current IDT */ - struct tss *mcpu_tss; /* TSS */ + tss_t *mcpu_tss; /* TSS */ kmutex_t mcpu_ppaddr_mutex; caddr_t mcpu_caddr1; /* per cpu CADDR1 */ diff --git a/usr/src/uts/i86pc/sys/rm_platter.h b/usr/src/uts/i86pc/sys/rm_platter.h index 9ca3a4908d..ea63abf77d 100644 --- a/usr/src/uts/i86pc/sys/rm_platter.h +++ b/usr/src/uts/i86pc/sys/rm_platter.h @@ -25,6 +25,9 @@ * Copyright (c) 2010, Intel Corporation. * All rights reserved. */ +/* + * Copyright 2011 Joyent, Inc. All rights reserved. + */ #ifndef _SYS_RM_PLATTER_H #define _SYS_RM_PLATTER_H @@ -111,7 +114,7 @@ typedef struct rm_platter { */ struct cpu_tables { char ct_stack[DEFAULTSTKSZ]; - struct tss ct_tss; + tss_t ct_tss; }; /* diff --git a/usr/src/uts/intel/amd64/ml/mach_offsets.in b/usr/src/uts/intel/amd64/ml/mach_offsets.in index 6fbe1e8a24..24a85a5871 100644 --- a/usr/src/uts/intel/amd64/ml/mach_offsets.in +++ b/usr/src/uts/intel/amd64/ml/mach_offsets.in @@ -21,8 +21,8 @@ \ \ CDDL HEADER END \ - -#pragma ident "%Z%%M% %I% %E% SMI" +\ Copyright 2011 Joyent, Inc. All rights reserved. +\ \ \ offsets.in: input file to produce assym.h using the ctfstabs program @@ -108,7 +108,7 @@ regs REGSIZE boot_syscalls bsvc_putchar BOOTSVCS_PUTCHAR -tss +tss_t tss_rsp0 tss_rsp1 tss_rsp2 diff --git a/usr/src/uts/intel/ia32/os/desctbls.c b/usr/src/uts/intel/ia32/os/desctbls.c index a21e4a0386..a05137eee6 100644 --- a/usr/src/uts/intel/ia32/os/desctbls.c +++ b/usr/src/uts/intel/ia32/os/desctbls.c @@ -24,6 +24,10 @@ */ /* + * Copyright 2011 Joyent, Inc. All rights reserved. + */ + +/* * Copyright (c) 1992 Terrence R. Lambert. * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. @@ -103,10 +107,10 @@ gate_desc_t *idt0; /* interrupt descriptor table */ desctbr_t idt0_default_r; /* describes idt0 in IDTR format */ #endif -struct tss *ktss0; /* kernel task state structure */ +tss_t *ktss0; /* kernel task state structure */ #if defined(__i386) -struct tss *dftss0; /* #DF double-fault exception */ +tss_t *dftss0; /* #DF double-fault exception */ #endif /* __i386 */ user_desc_t zero_udesc; /* base zero user desc native procs */ @@ -1232,7 +1236,7 @@ init_desctbls(void) #if !defined(__lint) ASSERT(sizeof (*ktss0) <= PAGESIZE); #endif - ktss0 = (struct tss *)BOP_ALLOC(bootops, (caddr_t)KTSS_VA, + ktss0 = (tss_t *)BOP_ALLOC(bootops, (caddr_t)KTSS_VA, PAGESIZE, PAGESIZE); bzero(ktss0, PAGESIZE); @@ -1240,7 +1244,7 @@ init_desctbls(void) #if !defined(__lint) ASSERT(sizeof (*dftss0) <= PAGESIZE); #endif - dftss0 = (struct tss *)BOP_ALLOC(bootops, (caddr_t)DFTSS_VA, + dftss0 = (tss_t *)BOP_ALLOC(bootops, (caddr_t)DFTSS_VA, PAGESIZE, PAGESIZE); bzero(dftss0, PAGESIZE); #endif diff --git a/usr/src/uts/intel/sys/segments.h b/usr/src/uts/intel/sys/segments.h index 408cc29867..e0bc76a023 100644 --- a/usr/src/uts/intel/sys/segments.h +++ b/usr/src/uts/intel/sys/segments.h @@ -1,6 +1,9 @@ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. */ +/* + * Copyright 2011 Joyent, Inc. All rights reserved. + */ #ifndef _SYS_SEGMENTS_H #define _SYS_SEGMENTS_H @@ -662,10 +665,10 @@ extern user_desc_t ucs32_on; extern user_desc_t ucs32_off; #endif /* __amd64 */ -extern struct tss *ktss0; +extern tss_t *ktss0; #if defined(__i386) -extern struct tss *dftss0; +extern tss_t *dftss0; #endif /* __i386 */ extern void div0trap(), dbgtrap(), nmiint(), brktrap(), ovflotrap(); diff --git a/usr/src/uts/intel/sys/tss.h b/usr/src/uts/intel/sys/tss.h index e3eef4995f..ead5e9ee14 100644 --- a/usr/src/uts/intel/sys/tss.h +++ b/usr/src/uts/intel/sys/tss.h @@ -6,8 +6,6 @@ #ifndef _SYS_TSS_H #define _SYS_TSS_H -#pragma ident "%Z%%M% %I% %E% SMI" - #ifdef __cplusplus extern "C" { #endif @@ -54,6 +52,9 @@ extern "C" { * from: @(#)tss.h 5.4 (Berkeley) 1/18/91 * $FreeBSD: src/sys/i386/include/tss.h,v 1.13 2002/09/23 05:04:05 peter Exp $ */ +/* + * Copyright 2011 Joyent, Inc. All rights reserved. + */ /* * Maximum I/O address that will be in TSS bitmap @@ -63,14 +64,18 @@ extern "C" { #ifndef _ASM /* - * Task state segment (tss). Holds the processor state assoicated with - * a task. + * Task state segment (tss). Holds the processor state assoicated with a task. + * + * Historically, this header only exposed a struct tss that was relevant to the + * specific Intel architecture that we were deploying on. However, the tss + * structures are defined by the Intel Architecture and other consumers would + * like to use them. Rather than requiring them to duplicate all of this + * information, we instead expose each version under different names but in a + * backwards compatible manner. */ -#if defined(__amd64) - #pragma pack(4) -struct tss { +struct tss64 { uint32_t tss_rsvd0; /* reserved, ignored */ uint64_t tss_rsp0; /* stack pointer CPL = 0 */ uint64_t tss_rsp1; /* stack pointer CPL = 1 */ @@ -89,9 +94,7 @@ struct tss { }; #pragma pack() -#elif defined(__i386) - -struct tss { +struct tss32 { uint16_t tss_link; /* 16-bit prior TSS selector */ uint16_t tss_rsvd0; /* reserved, ignored */ uint32_t tss_esp0; @@ -132,6 +135,39 @@ struct tss { uint16_t tss_bitmapbase; /* io permission bitmap base address */ }; +struct tss16 { + uint16_t tss_link; + uint16_t tss_sp0; + uint16_t tss_ss0; + uint16_t tss_sp1; + uint16_t tss_ss1; + uint16_t tss_sp2; + uint16_t tss_ss2; + uint16_t tss_ip; + uint16_t tss_flag; + uint16_t tss_ax; + uint16_t tss_cx; + uint16_t tss_dx; + uint16_t tss_bx; + uint16_t tss_sp; + uint16_t tss_bp; + uint16_t tss_si; + uint16_t tss_di; + uint16_t tss_es; + uint16_t tss_cs; + uint16_t tss_ss; + uint16_t tss_ds; + uint16_t tss_ldt; +}; + +#if defined(__amd64) + +typedef struct tss64 tss_t; + +#elif defined(__i386) + +typedef struct tss32 tss_t; + #endif /* __i386 */ #endif /* !_ASM */ |