Print this page
OS-5192 need faster clock_gettime
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Joshua M. Clulow <jmc@joyent.com>
Reviewed by: Ryan Zezeski <ryan@zinascii.com>
OS-2834 ship lx brand
   1 /*
   2  * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
   3  */
   4 /*
   5  * Copyright 2011 Joyent, Inc. All rights reserved.
   6  */
   7 
   8 #ifndef _SYS_SEGMENTS_H
   9 #define _SYS_SEGMENTS_H
  10 
  11 #ifdef  __cplusplus
  12 extern "C" {
  13 #endif
  14 
  15 /*
  16  * Copyright (c) 1989, 1990 William F. Jolitz
  17  * Copyright (c) 1990 The Regents of the University of California.
  18  * All rights reserved.
  19  *
  20  * This code is derived from software contributed to Berkeley by
  21  * William Jolitz.
  22  *
  23  * Redistribution and use in source and binary forms, with or without
  24  * modification, are permitted provided that the following conditions
  25  * are met:


 505 
 506 /*
 507  * Entries in the Global Descriptor Table (GDT)
 508  *
 509  * We make sure to space the system descriptors (LDT's, TSS')
 510  * such that they are double gdt slot aligned. This is because
 511  * in long mode system segment decriptors expand to 128 bits.
 512  *
 513  * GDT_LWPFS and GDT_LWPGS must be the same for both 32 and 64-bit
 514  * kernels. See setup_context in libc. 64-bit processes must set
 515  * %fs or %gs to null selector to use 64-bit fsbase or gsbase
 516  * respectively.
 517  */
 518 #define GDT_NULL        0       /* null */
 519 #define GDT_B32DATA     1       /* dboot 32 bit data descriptor */
 520 #define GDT_B32CODE     2       /* dboot 32 bit code descriptor */
 521 #define GDT_B16CODE     3       /* bios call 16 bit code descriptor */
 522 #define GDT_B16DATA     4       /* bios call 16 bit data descriptor */
 523 #define GDT_B64CODE     5       /* dboot 64 bit code descriptor */
 524 #define GDT_BGSTMP      7       /* kmdb descriptor only used early in boot */

 525 
 526 #if defined(__amd64)
 527 
 528 #define GDT_KCODE       6       /* kernel code seg %cs */
 529 #define GDT_KDATA       7       /* kernel data seg %ds */
 530 #define GDT_U32CODE     8       /* 32-bit process on 64-bit kernel %cs */
 531 #define GDT_UDATA       9       /* user data seg %ds (32 and 64 bit) */
 532 #define GDT_UCODE       10      /* native user code  seg %cs */
 533 #define GDT_LDT         12      /* LDT for current process */
 534 #define GDT_KTSS        14      /* kernel tss */
 535 #define GDT_FS          GDT_NULL /* kernel %fs segment selector */
 536 #define GDT_GS          GDT_NULL /* kernel %gs segment selector */
 537 #define GDT_LWPFS       55      /* lwp private %fs segment selector (32-bit) */
 538 #define GDT_LWPGS       56      /* lwp private %gs segment selector (32-bit) */
 539 #define GDT_BRANDMIN    57      /* first entry in GDT for brand usage */
 540 #define GDT_BRANDMAX    61      /* last entry in GDT for brand usage */
 541 #define NGDT            62      /* number of entries in GDT */
 542 
 543 /*
 544  * This selector is only used in the temporary GDT used to bring additional
 545  * CPUs from 16-bit real mode into long mode in real_mode_start().
 546  */
 547 #define TEMPGDT_KCODE64 1       /* 64-bit code selector */
 548 
 549 #elif defined(__i386)
 550 
 551 #define GDT_LDT         40      /* LDT for current process */
 552 #define GDT_KTSS        42      /* kernel tss */
 553 #define GDT_KCODE       43      /* kernel code seg %cs */
 554 #define GDT_KDATA       44      /* kernel data seg %ds */


 666 #endif  /* __amd64 */
 667 
 668 extern tss_t *ktss0;
 669 
 670 #if defined(__i386)
 671 extern tss_t *dftss0;
 672 #endif  /* __i386 */
 673 
 674 extern void div0trap(), dbgtrap(), nmiint(), brktrap(), ovflotrap();
 675 extern void boundstrap(), invoptrap(), ndptrap();
 676 #if !defined(__xpv)
 677 extern void syserrtrap();
 678 #endif
 679 extern void invaltrap(), invtsstrap(), segnptrap(), stktrap();
 680 extern void gptrap(), pftrap(), ndperr();
 681 extern void overrun(), resvtrap();
 682 extern void _start(), cmnint();
 683 extern void achktrap(), mcetrap();
 684 extern void xmtrap();
 685 extern void fasttrap();


 686 extern void dtrace_ret();
 687 
 688 #if !defined(__amd64)
 689 extern void pentium_pftrap();
 690 #endif
 691 
 692 #endif /* _ASM */
 693 
 694 #ifdef  __cplusplus
 695 }
 696 #endif
 697 
 698 #endif /* _SYS_SEGMENTS_H */
   1 /*
   2  * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
   3  */
   4 /*
   5  * Copyright 2016 Joyent, Inc.
   6  */
   7 
   8 #ifndef _SYS_SEGMENTS_H
   9 #define _SYS_SEGMENTS_H
  10 
  11 #ifdef  __cplusplus
  12 extern "C" {
  13 #endif
  14 
  15 /*
  16  * Copyright (c) 1989, 1990 William F. Jolitz
  17  * Copyright (c) 1990 The Regents of the University of California.
  18  * All rights reserved.
  19  *
  20  * This code is derived from software contributed to Berkeley by
  21  * William Jolitz.
  22  *
  23  * Redistribution and use in source and binary forms, with or without
  24  * modification, are permitted provided that the following conditions
  25  * are met:


 505 
 506 /*
 507  * Entries in the Global Descriptor Table (GDT)
 508  *
 509  * We make sure to space the system descriptors (LDT's, TSS')
 510  * such that they are double gdt slot aligned. This is because
 511  * in long mode system segment decriptors expand to 128 bits.
 512  *
 513  * GDT_LWPFS and GDT_LWPGS must be the same for both 32 and 64-bit
 514  * kernels. See setup_context in libc. 64-bit processes must set
 515  * %fs or %gs to null selector to use 64-bit fsbase or gsbase
 516  * respectively.
 517  */
 518 #define GDT_NULL        0       /* null */
 519 #define GDT_B32DATA     1       /* dboot 32 bit data descriptor */
 520 #define GDT_B32CODE     2       /* dboot 32 bit code descriptor */
 521 #define GDT_B16CODE     3       /* bios call 16 bit code descriptor */
 522 #define GDT_B16DATA     4       /* bios call 16 bit data descriptor */
 523 #define GDT_B64CODE     5       /* dboot 64 bit code descriptor */
 524 #define GDT_BGSTMP      7       /* kmdb descriptor only used early in boot */
 525 #define GDT_CPUID       16      /* store numeric id of current CPU */
 526 
 527 #if defined(__amd64)
 528 
 529 #define GDT_KCODE       6       /* kernel code seg %cs */
 530 #define GDT_KDATA       7       /* kernel data seg %ds */
 531 #define GDT_U32CODE     8       /* 32-bit process on 64-bit kernel %cs */
 532 #define GDT_UDATA       9       /* user data seg %ds (32 and 64 bit) */
 533 #define GDT_UCODE       10      /* native user code  seg %cs */
 534 #define GDT_LDT         12      /* (12-13) LDT for current process */
 535 #define GDT_KTSS        14      /* (14-15) kernel tss */
 536 #define GDT_FS          GDT_NULL /* kernel %fs segment selector */
 537 #define GDT_GS          GDT_NULL /* kernel %gs segment selector */
 538 #define GDT_LWPFS       55      /* lwp private %fs segment selector (32-bit) */
 539 #define GDT_LWPGS       56      /* lwp private %gs segment selector (32-bit) */
 540 #define GDT_BRANDMIN    57      /* first entry in GDT for brand usage */
 541 #define GDT_BRANDMAX    61      /* last entry in GDT for brand usage */
 542 #define NGDT            62      /* number of entries in GDT */
 543 
 544 /*
 545  * This selector is only used in the temporary GDT used to bring additional
 546  * CPUs from 16-bit real mode into long mode in real_mode_start().
 547  */
 548 #define TEMPGDT_KCODE64 1       /* 64-bit code selector */
 549 
 550 #elif defined(__i386)
 551 
 552 #define GDT_LDT         40      /* LDT for current process */
 553 #define GDT_KTSS        42      /* kernel tss */
 554 #define GDT_KCODE       43      /* kernel code seg %cs */
 555 #define GDT_KDATA       44      /* kernel data seg %ds */


 667 #endif  /* __amd64 */
 668 
 669 extern tss_t *ktss0;
 670 
 671 #if defined(__i386)
 672 extern tss_t *dftss0;
 673 #endif  /* __i386 */
 674 
 675 extern void div0trap(), dbgtrap(), nmiint(), brktrap(), ovflotrap();
 676 extern void boundstrap(), invoptrap(), ndptrap();
 677 #if !defined(__xpv)
 678 extern void syserrtrap();
 679 #endif
 680 extern void invaltrap(), invtsstrap(), segnptrap(), stktrap();
 681 extern void gptrap(), pftrap(), ndperr();
 682 extern void overrun(), resvtrap();
 683 extern void _start(), cmnint();
 684 extern void achktrap(), mcetrap();
 685 extern void xmtrap();
 686 extern void fasttrap();
 687 extern void sys_int80();
 688 extern void brand_sys_int80();
 689 extern void dtrace_ret();
 690 
 691 #if !defined(__amd64)
 692 extern void pentium_pftrap();
 693 #endif
 694 
 695 #endif /* _ASM */
 696 
 697 #ifdef  __cplusplus
 698 }
 699 #endif
 700 
 701 #endif /* _SYS_SEGMENTS_H */