亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? useldt.h

?? ucLinux is a very good embeded sytem. Most of company use this as their development OS.
?? H
字號:
/* Special definitions for ix86 machine using segment register based   thread descriptor.   Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.   This file is part of the GNU C Library.   Contributed by Ulrich Drepper <drepper@cygnus.com>.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Lesser General Public License as   published by the Free Software Foundation; either version 2.1 of the   License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with the GNU C Library; see the file COPYING.LIB.  If not,   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,   Boston, MA 02111-1307, USA.	*/#ifndef __ASSEMBLER__#include <stddef.h>	/* For offsetof.  */#include <stdlib.h>	/* For abort().	 *//* We don't want to include the kernel header.	So duplicate the   information.	 *//* Structure passed on `modify_ldt' call.  */struct modify_ldt_ldt_s{  unsigned int entry_number;  unsigned long int base_addr;  unsigned int limit;  unsigned int seg_32bit:1;  unsigned int contents:2;  unsigned int read_exec_only:1;  unsigned int limit_in_pages:1;  unsigned int seg_not_present:1;  unsigned int useable:1;  unsigned int empty:25;};/* System call to set LDT entry.  */extern int __modify_ldt (int, struct modify_ldt_ldt_s *, size_t);/* Return the thread descriptor for the current thread.   The contained asm must *not* be marked volatile since otherwise   assignments like	pthread_descr self = thread_self();   do not get optimized away.  */#define THREAD_SELF \({									      \  register pthread_descr __self;					      \  __asm__ ("movl %%gs:%c1,%0" : "=r" (__self)				      \	   : "i" (offsetof (struct _pthread_descr_struct,		      \			    p_header.data.self)));			      \  __self;								      \})/* Initialize the thread-unique value.	Two possible ways to do it.  */#define DO_MODIFY_LDT(descr, nr)					      \({									      \  struct modify_ldt_ldt_s ldt_entry =					      \    { nr, (unsigned long int) (descr), 0xfffff /* 4GB in pages */,	      \      1, 0, 0, 1, 0, 1, 0 };						      \  if (__modify_ldt (1, &ldt_entry, sizeof (ldt_entry)) != 0)		      \    abort ();								      \  asm ("movw %w0, %%gs" : : "q" (nr * 8 + 7));				      \})#ifdef __PIC__# define USETLS_EBX_ARG "r"# define USETLS_LOAD_EBX "xchgl %3, %%ebx\n\t"#else# define USETLS_EBX_ARG "b"# define USETLS_LOAD_EBX#endif/* When using the new set_thread_area call, we don't need to change %gs   because we inherited the value set up in the main thread by TLS setup.   We need to extract that value and set up the same segment in this   thread.  */#if USE_TLS# define DO_SET_THREAD_AREA_REUSE(nr)	1#else/* Without TLS, we do the initialization of the main thread, where NR == 0.  */# define DO_SET_THREAD_AREA_REUSE(nr)	(!__builtin_constant_p (nr) || (nr))#endif#define DO_SET_THREAD_AREA(descr, nr) \({									      \  int __gs;								      \  if (DO_SET_THREAD_AREA_REUSE (nr))					      \    {									      \      asm ("movw %%gs, %w0" : "=q" (__gs));				      \      struct modify_ldt_ldt_s ldt_entry =				      \	{ (__gs & 0xffff) >> 3,						      \	  (unsigned long int) (descr), 0xfffff /* 4GB in pages */,	      \	  1, 0, 0, 1, 0, 1, 0 };					      \									      \      int __result;							      \      __asm (USETLS_LOAD_EBX						      \	     "movl %2, %%eax\n\t"					      \	     "int $0x80\n\t"						      \	     USETLS_LOAD_EBX						      \	     : "&a" (__result)						      \	     : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area));      \      if (__result == 0)						      \	asm ("movw %w0, %%gs" :: "q" (__gs));				      \      else								      \	__gs = -1;							      \    }									      \  else									      \    {									      \      struct modify_ldt_ldt_s ldt_entry =				      \	{ -1,								      \	  (unsigned long int) (descr), 0xfffff /* 4GB in pages */,	      \	  1, 0, 0, 1, 0, 1, 0 };					      \      int __result;							      \      __asm (USETLS_LOAD_EBX						      \	     "movl %2, %%eax\n\t"					      \	     "int $0x80\n\t"						      \	     USETLS_LOAD_EBX						      \	     : "&a" (__result)						      \	     : USETLS_EBX_ARG (&ldt_entry), "i" (__NR_set_thread_area));      \      if (__result == 0)						      \	{								      \	  __gs = (ldt_entry.entry_number << 3) + 3;			      \	  asm ("movw %w0, %%gs" : : "q" (__gs));			      \	}								      \      else								      \	__gs = -1;							      \    }									      \  __gs;									      \})#if defined __ASSUME_SET_THREAD_AREA_SYSCALL# define INIT_THREAD_SELF(descr, nr)	DO_SET_THREAD_AREA (descr, nr)#elif defined __NR_set_thread_area# define INIT_THREAD_SELF(descr, nr)					      \({									      \  if (__builtin_expect (__have_no_set_thread_area, 0)			      \      || (DO_SET_THREAD_AREA (descr, DO_SET_THREAD_AREA_REUSE (nr)) == -1     \	  && (__have_no_set_thread_area = 1)))				      \    DO_MODIFY_LDT (descr, nr);						      \})/* Defined in pspinlock.c.  */extern int __have_no_set_thread_area;#else# define INIT_THREAD_SELF(descr, nr)	DO_MODIFY_LDT (descr, nr)#endif/* Free resources associated with thread descriptor.  */#ifdef __ASSUME_SET_THREAD_AREA_SYSCALL#define FREE_THREAD(descr, nr) do { } while (0)#elif defined __NR_set_thread_area#define FREE_THREAD(descr, nr) \{									      \  int __gs;								      \  __asm__ __volatile__ ("movw %%gs, %w0" : "=q" (__gs));		      \  if (__builtin_expect (__gs & 4, 0))					      \    {									      \      struct modify_ldt_ldt_s ldt_entry =				      \	{ nr, 0, 0, 0, 0, 1, 0, 1, 0, 0 };				      \      __modify_ldt (1, &ldt_entry, sizeof (ldt_entry));			      \    }									      \}#else#define FREE_THREAD(descr, nr) \{									      \  struct modify_ldt_ldt_s ldt_entry =					      \    { nr, 0, 0, 0, 0, 1, 0, 1, 0, 0 };					      \  __modify_ldt (1, &ldt_entry, sizeof (ldt_entry));			      \}#endif/* Read member of the thread descriptor directly.  */#define THREAD_GETMEM(descr, member) \({									      \  __typeof__ (descr->member) __value;					      \  if (sizeof (__value) == 1)						      \    __asm__ __volatile__ ("movb %%gs:%P2,%b0"				      \			  : "=q" (__value)				      \			  : "0" (0),					      \			    "i" (offsetof (struct _pthread_descr_struct,      \					   member)));			      \  else if (sizeof (__value) == 4)					      \    __asm__ __volatile__ ("movl %%gs:%P1,%0"				      \			  : "=r" (__value)				      \			  : "i" (offsetof (struct _pthread_descr_struct,      \					   member)));			      \  else									      \    {									      \      if (sizeof (__value) != 8)					      \	/* There should not be any value with a size other than 1, 4 or 8.  */\	abort ();							      \									      \      __asm__ __volatile__ ("movl %%gs:%P1,%%eax\n\t"			      \			    "movl %%gs:%P2,%%edx"			      \			    : "=A" (__value)				      \			    : "i" (offsetof (struct _pthread_descr_struct,    \					     member)),			      \			      "i" (offsetof (struct _pthread_descr_struct,    \					     member) + 4));		      \    }									      \  __value;								      \})/* Same as THREAD_GETMEM, but the member offset can be non-constant.  */#define THREAD_GETMEM_NC(descr, member) \({									      \  __typeof__ (descr->member) __value;					      \  if (sizeof (__value) == 1)						      \    __asm__ __volatile__ ("movb %%gs:(%2),%b0"				      \			  : "=q" (__value)				      \			  : "0" (0),					      \			    "r" (offsetof (struct _pthread_descr_struct,      \					   member)));			      \  else if (sizeof (__value) == 4)					      \    __asm__ __volatile__ ("movl %%gs:(%1),%0"				      \			  : "=r" (__value)				      \			  : "r" (offsetof (struct _pthread_descr_struct,      \					   member)));			      \  else									      \    {									      \      if (sizeof (__value) != 8)					      \	/* There should not be any value with a size other than 1, 4 or 8.  */\	abort ();							      \									      \      __asm__ __volatile__ ("movl %%gs:(%1),%%eax\n\t"			      \			    "movl %%gs:4(%1),%%edx"			      \			    : "=&A" (__value)				      \			    : "r" (offsetof (struct _pthread_descr_struct,    \					     member)));			      \    }									      \  __value;								      \})/* Same as THREAD_SETMEM, but the member offset can be non-constant.  */#define THREAD_SETMEM(descr, member, value) \({									      \  __typeof__ (descr->member) __value = (value);				      \  if (sizeof (__value) == 1)						      \    __asm__ __volatile__ ("movb %0,%%gs:%P1" :				      \			  : "q" (__value),				      \			    "i" (offsetof (struct _pthread_descr_struct,      \					   member)));			      \  else if (sizeof (__value) == 4)					      \    __asm__ __volatile__ ("movl %0,%%gs:%P1" :				      \			  : "r" (__value),				      \			    "i" (offsetof (struct _pthread_descr_struct,      \					   member)));			      \  else									      \    {									      \      if (sizeof (__value) != 8)					      \	/* There should not be any value with a size other than 1, 4 or 8.  */\	abort ();							      \									      \      __asm__ __volatile__ ("movl %%eax,%%gs:%P1\n\n"			      \			    "movl %%edx,%%gs:%P2" :			      \			    : "A" (__value),				      \			      "i" (offsetof (struct _pthread_descr_struct,    \					     member)),			      \			      "i" (offsetof (struct _pthread_descr_struct,    \					     member) + 4));		      \    }									      \})/* Set member of the thread descriptor directly.  */#define THREAD_SETMEM_NC(descr, member, value) \({									      \  __typeof__ (descr->member) __value = (value);				      \  if (sizeof (__value) == 1)						      \    __asm__ __volatile__ ("movb %0,%%gs:(%1)" :				      \			  : "q" (__value),				      \			    "r" (offsetof (struct _pthread_descr_struct,      \					   member)));			      \  else if (sizeof (__value) == 4)					      \    __asm__ __volatile__ ("movl %0,%%gs:(%1)" :				      \			  : "r" (__value),				      \			    "r" (offsetof (struct _pthread_descr_struct,      \					   member)));			      \  else									      \    {									      \      if (sizeof (__value) != 8)					      \	/* There should not be any value with a size other than 1, 4 or 8.  */\	abort ();							      \									      \      __asm__ __volatile__ ("movl %%eax,%%gs:(%1)\n\t"			      \			    "movl %%edx,%%gs:4(%1)" :			      \			    : "A" (__value),				      \			      "r" (offsetof (struct _pthread_descr_struct,    \					     member)));			      \    }									      \})#endif/* We want the OS to assign stack addresses.  */#define FLOATING_STACKS	1/* Maximum size of the stack if the rlimit is unlimited.  */#define ARCH_STACK_MAX_SIZE	8*1024*1024

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
九一久久久久久| 国产老肥熟一区二区三区| 丝袜亚洲精品中文字幕一区| 欧美a级理论片| 国内精品国产三级国产a久久| 国产一区二区影院| 91美女片黄在线观看91美女| 91精品欧美久久久久久动漫| 日韩欧美国产一区二区在线播放| 国产丝袜欧美中文另类| 中文字幕亚洲不卡| 午夜精品视频一区| 韩国成人在线视频| 99久久精品免费精品国产| 色偷偷久久人人79超碰人人澡| 欧美精品一二三四| 国产精品理论片在线观看| 亚洲午夜久久久久久久久电影院 | 国产精品美女一区二区| 亚洲一区二区在线播放相泽| 久久精品国产网站| 在线观看亚洲专区| 国产欧美日产一区| 婷婷综合在线观看| av欧美精品.com| 欧美主播一区二区三区| 99综合电影在线视频| 日韩一级高清毛片| 亚洲美女屁股眼交| 国产夫妻精品视频| 欧美一卡二卡在线观看| 亚洲美女屁股眼交3| 国产精品99久久不卡二区| 欧美日韩美少妇| 中文字幕一区在线观看视频| 捆绑紧缚一区二区三区视频| 欧美三级三级三级爽爽爽| 国产日韩欧美高清在线| 美女视频一区二区| 欧美午夜精品久久久| 国产精品素人视频| 2023国产精品视频| 亚洲福利一区二区三区| eeuss鲁片一区二区三区| 精品少妇一区二区三区免费观看| 亚洲乱码国产乱码精品精98午夜| 成人福利视频网站| 精品少妇一区二区三区在线视频| 亚洲成a人片在线不卡一二三区| 99视频精品全部免费在线| 国产女人水真多18毛片18精品视频 | 亚洲天堂精品视频| 成人一道本在线| 国产亚洲精品超碰| 国产精品自拍网站| 久久久精品综合| 国产91精品欧美| 中文字幕国产一区| 成人性生交大片免费看在线播放| 久久久久久久久97黄色工厂| 免费成人在线播放| 欧美一级欧美一级在线播放| 青青草精品视频| 欧美一区二区三区精品| 蜜臀精品一区二区三区在线观看 | 精品成人一区二区| 久久精品国产精品青草| 欧美成人精品3d动漫h| 久久国产三级精品| 欧美成人aa大片| 国产精品99久久久久久似苏梦涵| 久久先锋资源网| 国产精品一级片在线观看| 国产日产精品1区| 成人动漫精品一区二区| ...xxx性欧美| 欧美吻胸吃奶大尺度电影| 亚洲不卡在线观看| 欧美成人a∨高清免费观看| 国产久卡久卡久卡久卡视频精品| 中文字幕国产一区| 日本精品一区二区三区四区的功能| 亚洲一区二区三区爽爽爽爽爽| 欧美一区二区三区成人| 成人激情免费视频| 亚洲mv大片欧洲mv大片精品| 2024国产精品| 色偷偷成人一区二区三区91| 热久久一区二区| 国产网红主播福利一区二区| 91福利在线看| 全国精品久久少妇| 欧美激情一区二区三区在线| 欧美视频一区二区三区四区 | 91精品国产综合久久福利| 婷婷夜色潮精品综合在线| 久久久久成人黄色影片| 欧美日韩一区不卡| 国产一区二区网址| 亚洲一区av在线| 久久精品免视看| 欧美女孩性生活视频| 国产精品小仙女| 午夜精品久久久久久久久| 久久午夜色播影院免费高清| 在线观看三级视频欧美| 国产精品中文字幕一区二区三区| 亚洲小说春色综合另类电影| 国产亚洲短视频| 91精品国产欧美一区二区18| 9久草视频在线视频精品| 国产一区二三区| 天天av天天翘天天综合网| 国产精品网站导航| 国产精品理论片| 日韩免费高清av| 99国产精品99久久久久久| 日韩国产欧美在线视频| 亚洲另类在线视频| 国产欧美视频一区二区| 日韩免费一区二区| 91精品国产综合久久久久久久 | 日韩av一区二| 一区二区三区成人| 国产精品久久久久久福利一牛影视 | 欧美色图免费看| aa级大片欧美| 岛国av在线一区| 国产美女娇喘av呻吟久久 | 日韩欧美一级二级三级| 色婷婷综合视频在线观看| 盗摄精品av一区二区三区| 国产一区二区三区| 精品一区二区影视| 奇米影视一区二区三区| 首页国产丝袜综合| 亚洲图片欧美视频| 亚洲一区二区三区美女| 亚洲你懂的在线视频| 国产精品久久毛片a| 国产农村妇女毛片精品久久麻豆| 精品88久久久久88久久久| 精品成人一区二区三区四区| 欧美成人精品高清在线播放| 精品久久久久久久久久久久包黑料| 欧美在线观看视频在线| www.日韩在线| 国产91色综合久久免费分享| aaa亚洲精品| 一本大道久久a久久综合| 国产精品系列在线观看| 成人精品亚洲人成在线| 97久久超碰国产精品电影| 91免费观看在线| 欧美性一区二区| 51精品视频一区二区三区| 精品免费一区二区三区| 久久嫩草精品久久久精品一| 日本一区二区三区高清不卡 | 中文字幕制服丝袜一区二区三区| 国产精品久久久久久久第一福利| 成人教育av在线| 亚洲欧美电影院| 青青青爽久久午夜综合久久午夜| 高清国产一区二区| 欧美日韩mp4| 国产精品美日韩| 另类专区欧美蜜桃臀第一页| 99免费精品视频| 精品日韩99亚洲| 性久久久久久久| 成人av动漫在线| 精品久久久影院| 亚洲第一搞黄网站| 成人97人人超碰人人99| 日韩欧美二区三区| 亚洲国产欧美一区二区三区丁香婷| 国产精品一区二区在线播放 | 亚洲精品国产精华液| 久久疯狂做爰流白浆xx| 欧美视频在线一区| 国产精品麻豆视频| 国内精品久久久久影院色| 欧美日韩久久久一区| 国产精品久久久久一区二区三区 | 亚洲一区在线观看视频| 国产成人精品影院| 久久综合网色—综合色88| 午夜精品免费在线| 在线观看视频一区| 亚洲三级免费电影| 成人免费视频视频| 国产午夜精品久久久久久免费视| 轻轻草成人在线| 欧美日韩二区三区| 亚洲五码中文字幕| 欧美日韩久久一区| 亚洲成年人网站在线观看| 欧美日韩午夜影院| 亚洲一二三区视频在线观看|