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

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

?? pentiumalib.s

?? vxwork源代碼
?? S
?? 第 1 頁 / 共 3 頁
字號:
/* pentiumALib.s - Pentium and PentiumPro specific routines *//* Copyright 1984-2001 Wind River Systems, Inc. *//*modification history--------------------01e,21aug01,hdn  added P5/P6 PMC routines01d,24mar99,jdi  doc: added basic formatting commands, absent despite		 thorough and long-standing coverage in WRS Coding Conventions.01b,17apr98,hdn  fixed typo.01b,17apr98,hdn  added documentation.01a,09jul97,hdn  written.*//*DESCRIPTIONThis module contains Pentium and PentiumPro specific routines written in assembly language..SS "MCA (Machine Check Architecture)"The Pentium processor introduced a new exception called the machine-check exception (interrupt-18).  This exception is used to signal hardware-relatederrors, such as a parity error on a read cycle.  The PentiumPro processorextends the types of errors that can be detected and that generate a machine-check exception.  It also provides a new machine-check architecture thatrecords information about a machine-check error and provides the basis for anextended error logging capability.MCA is enabled and its status registers are cleared zero in sysHwInit().Its registers are accessed by pentiumMsrSet() and pentiumMsrGet()..SS "PMC (Performance Monitoring Counters)"The P5 and P6 family of processor has two performance-monitoring counters foruse in monitoring internal hardware operations.  These counters are durationor event counters that can be programmed to count any of approximately 100different types of events, such as the number of instructions decoded, numberof interrupts received, or number of cache loads. However, the set of eventscan be counted with PMC is different in the P5 and P6 family of processors;and the locations and bit difinitions of the related counter and controlregisters are also different. So there are two set of PMC routines, one forP6 family and one for p5 family respectively.There are nine routines to interface the PMC of P6 family processors.  Thesenine routines are:.CS  STATUS pentiumP6PmcStart         (	 int pmcEvtSel0;	/@ performance event select register 0 @/	 int pmcEvtSel1;	/@ performance event select register 1 @/         )  void   pentiumP6PmcStop (void)  void   pentiumP6PmcStop1 (void)  void   pentiumP6PmcGet	 (	 long long int * pPmc0;	/@ performance monitoring counter 0 @/	 long long int * pPmc1;	/@ performance monitoring counter 1 @/	 )  void   pentiumP6PmcGet0	 (	 long long int * pPmc0;	/@ performance monitoring counter 0 @/	 )  void   pentiumP6PmcGet1	 (	 long long int * pPmc1;	/@ performance monitoring counter 1 @/	 )  void   pentiumP6PmcReset (void)  void   pentiumP6PmcReset0 (void)  void   pentiumP6PmcReset1 (void).CEpentiumP6PmcStart() starts both PMC0 and PMC1. pentiumP6PmcStop() stops them, and pentiumP6PmcStop1() stops only PMC1.  pentiumP6PmcGet() gets contents of PMC0 and PMC1.  pentiumP6PmcGet0() getscontents of PMC0, and pentiumP6PmcGet1() gets contents of PMC1.pentiumP6PmcReset() resets both PMC0 and PMC1.  pentiumP6PmcReset0() resetsPMC0, and pentiumP6PmcReset1() resets PMC1.PMC is enabled in sysHwInit().  Selected events in the default configurationare PMC0 = number of hardware interrupts received and PMC1 = number of misaligned data memory references.There are ten routines to interface the PMC of P5 family processors.  Theseten routines are:.CS  STATUS pentiumP5PmcStart0         (	 int pmc0Cesr;	/@ PMC0 control and event select @/         )  STATUS pentiumP5PmcStart1         (	 int pmc1Cesr;	/@ PMC1 control and event select @/         )  void   pentiumP5PmcStop0 (void)  void   pentiumP5PmcStop1 (void)  void   pentiumP5PmcGet	 (	 long long int * pPmc0;	/@ performance monitoring counter 0 @/	 long long int * pPmc1;	/@ performance monitoring counter 1 @/	 )  void   pentiumP5PmcGet0	 (	 long long int * pPmc0;	/@ performance monitoring counter 0 @/	 )  void   pentiumP5PmcGet1	 (	 long long int * pPmc1;	/@ performance monitoring counter 1 @/	 )  void   pentiumP5PmcReset (void)  void   pentiumP5PmcReset0 (void)  void   pentiumP5PmcReset1 (void).CEpentiumP5PmcStart0() starts PMC0, and pentiumP5PmcStart1() starts PMC1. pentiumP5PmcStop0() stops PMC0, and pentiumP5PmcStop1() stops PMC1.  pentiumP5PmcGet() gets contents of PMC0 and PMC1.  pentiumP5PmcGet0() getscontents of PMC0, and pentiumP5PmcGet1() gets contents of PMC1.pentiumP5PmcReset() resets both PMC0 and PMC1.  pentiumP5PmcReset0() resetsPMC0, and pentiumP5PmcReset1() resets PMC1.PMC is enabled in sysHwInit().  Selected events in the default configurationare PMC0 = number of hardware interrupts received and PMC1 = number of misaligned data memory references..SS "MSR (Model Specific Register)"The concept of model-specific registers (MSRs) to control hardware functionsin the processor or to monitor processor activity was introduced in the PentiumPro processor.  The new registers control the debug extensions, the performance counters, the machine-check exception capability, the machinecheck architecture, and the MTRRs.  The MSRs can be read and written to usingthe RDMSR and WRMSR instructions, respectively.There are two routines to interface the MSR.  These two routines are:.CS  void pentiumMsrGet       (       int address,		/@ MSR address @/       long long int * pData	/@ MSR data @/       )  void pentiumMsrSet       (       int address,		/@ MSR address @/       long long int * pData	/@ MSR data @/       ).CEpentiumMsrGet() get contents of the specified MSR, and pentiumMsrSet() sets value to the specified MSR..SS "TSC (Time Stamp Counter)"The PentiumPro processor provides a 64-bit time-stamp counter that is incremented every processor clock cycle.  The counter is incremented evenwhen the processor is halted by the HLT instruction or the external STPCLK#pin.  The time-stamp counter is set to 0 following a hardware reset of theprocessor.  The RDTSC instruction reads the time stamp counter and is guaranteed to return a monotonically increasing unique value whenever executed, except for 64-bit counter wraparound.  Intel guarantees, architecturally, that the time-stamp counter frequency and configuration willbe such that it will not wraparound within 10 years after being reset to 0.The period for counter wrap is several thousands of years in the PentiumProand Pentium processors.There are three routines to interface the TSC.  These three routines are:.CS  void pentiumTscReset (void)  void pentiumTscGet32 (void)  void pentiumTscGet64       (       long long int * pTsc	/@ TSC @/       ).CEpentiumTscReset() resets the TSC.  pentiumTscGet32() gets the lower half of the64Bit TSC, and pentiumTscGet64() gets the entire 64Bit TSC.Four other routines are provided in this library.  They are:.CS  void   pentiumTlbFlush (void)  void   pentiumSerialize (void)  STATUS pentiumBts	 (         char * pFlag                   /@ flag address @/	 )  STATUS pentiumBtc (pFlag)	 (         char * pFlag                   /@ flag address @/	 ).CEpentiumTlbFlush() flushes TLBs (Translation Lookaside Buffers). pentiumSerialize() does serialization by executing CPUID instruction.pentiumBts() executes an atomic compare-and-exchange instruction to set a bit.pentiumBtc() executes an atomic compare-and-exchange instruction to clear a bit.INTERNALMany routines in this module doesn't use the "c" frame pointer %ebp@ !This is only for the benefit of the stacktrace facility to allow it to properly trace tasks executing within these routines.SEE ALSO: .I "Pentium, PentiumPro Family Developer's Manual"*/#define _ASMLANGUAGE#include "vxWorks.h"#include "asm.h"#include "regs.h"#include "arch/i86/pentiumLib.h"        .data	.globl  FUNC(copyright_wind_river)	.long   FUNC(copyright_wind_river)	/* internals */	.globl	GTEXT(pentiumCr4Get)	.globl	GTEXT(pentiumCr4Set)	.globl	GTEXT(pentiumP6PmcStart)	.globl	GTEXT(pentiumP6PmcStop)	.globl	GTEXT(pentiumP6PmcStop1)	.globl	GTEXT(pentiumP6PmcGet)	.globl	GTEXT(pentiumP6PmcGet0)	.globl	GTEXT(pentiumP6PmcGet1)	.globl	GTEXT(pentiumP6PmcReset)	.globl	GTEXT(pentiumP6PmcReset0)	.globl	GTEXT(pentiumP6PmcReset1)        .globl  GTEXT(pentiumP5PmcStart0)        .globl  GTEXT(pentiumP5PmcStart1)        .globl  GTEXT(pentiumP5PmcStop0)        .globl  GTEXT(pentiumP5PmcStop1)        .globl  GTEXT(pentiumP5PmcReset)        .globl  GTEXT(pentiumP5PmcReset0)        .globl  GTEXT(pentiumP5PmcReset1)        .globl  GTEXT(pentiumP5PmcGet)        .globl  GTEXT(pentiumP5PmcGet0)        .globl  GTEXT(pentiumP5PmcGet1)	.globl	GTEXT(pentiumTscGet64)	.globl	GTEXT(pentiumTscGet32)	.globl	GTEXT(pentiumTscReset)	.globl	GTEXT(pentiumMsrGet)	.globl	GTEXT(pentiumMsrSet)	.globl	GTEXT(pentiumTlbFlush)	.globl	GTEXT(pentiumSerialize)	.globl	GTEXT(pentiumBts)	.globl	GTEXT(pentiumBtc)	.data	.balign 16,0x90_pmcBusy:	.byte	0x00			/* PMC busy flag, 1 = busy */_pmc0Busy:        .byte   0x00                    /* PMC0 busy flag, 1 = busy */_pmc1Busy:        .byte   0x00                    /* PMC1 busy flag, 1 = busy */	.text	.balign 16,0x90/********************************************************************************* pentiumCr4Get - get contents of CR4 register** SYNOPSIS* \ss* int pentiumCr4Get (void)* \se** This routine gets the contents of the CR4 register.** RETURNS: Contents of CR4 register.*/FUNC_LABEL(pentiumCr4Get)	movl	%cr4,%eax	ret/********************************************************************************* pentiumCr4Set - sets specified value to the CR4 register** SYNOPSIS* \ss* void pentiumCr4Set (cr4)*    int cr4;		/@ value to write CR4 register @/* \se* This routine sets a specified value to the CR4 register.*** RETURNS: N/A*/	.balign 16,0x90FUNC_LABEL(pentiumCr4Set)	movl	SP_ARG1(%esp),%eax	movl	%eax,%cr4	ret/********************************************************************************* pentiumP6PmcStart - start both PMC0 and PMC1** SYNOPSIS* \ss* STATUS pentiumP6PmcStart (pmcEvtSel0, pmcEvtSel1)*     int pmcEvtSel0;		/@ Performance Event Select Register 0 @/*     int pmcEvtSel1;		/@ Performance Event Select Register 1 @/* \se* * This routine starts both PMC0 (Performance Monitoring Counter 0) and PMC1* by writing specified events to Performance Event Select Registers. * The first parameter is a content of Performance Event Select Register 0,* and the second parameter is for the Performance Event Select Register 1.** RETURNS: OK or ERROR if PMC is already started.*/        .balign 16,0x90FUNC_LABEL(pentiumP6PmcStart)	xorl	%eax,%eax	movl	$ TRUE, %edx	lock				/* lock the BUS */	cmpxchgb %dl,_pmcBusy		/* if (_pmcBusy == 0) */	jnz	pentiumP6PmcStart0	/*   {ZF = 1; _pmcBusy = TRUE;} */	movl	SP_ARG1(%esp),%eax	/* low-order 32 bits */	xorl	%edx,%edx		/* high-order 32 bits */	movl	$ MSR_EVNTSEL0,%ecx	/* specify MSR_EVNTSEL0 */	wrmsr				/* write %edx:%eax to MSR_EVNTSEL0 */	movl	SP_ARG2(%esp),%eax	/* low-order 32 bits */	xorl	%edx,%edx		/* high-order 32 bits */	movl	$ MSR_EVNTSEL1,%ecx	/* specify MSR_EVNTSEL1 */	wrmsr				/* write %edx:%eax to MSR_EVNTSEL1 */	xorl	%eax,%eax		/* return OK */	retpentiumP6PmcStart0:	movl	$ ERROR,%eax	ret/********************************************************************************* pentiumP6PmcStop - stop both PMC0 and PMC1** SYNOPSIS* \ss* void pentiumP6PmcStop (void)* \se* * This routine stops both PMC0 (Performance Monitoring Counter 0) and PMC1* by clearing two Performance Event Select Registers.** RETURNS: N/A*/        .balign 16,0x90FUNC_LABEL(pentiumP6PmcStop)	xorl	%eax,%eax		/* zero low-order 32 bits */	xorl	%edx,%edx		/* zero high-order 32 bits */	movl	$ MSR_EVNTSEL0,%ecx	/* specify MSR_EVNTSEL0 */	wrmsr				/* write %edx:%eax to MSR_EVNTSEL0 */	movl	$ MSR_EVNTSEL1,%ecx	/* specify MSR_EVNTSEL1 */	wrmsr				/* write %edx:%eax to MSR_EVNTSEL1 */	movl	$ TRUE, %eax	xorl	%edx,%edx	lock				/* lock the BUS */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二| 欧美精品一级二级| 精品国产乱码久久久久久浪潮| 亚洲欧洲中文日韩久久av乱码| 精品一区二区成人精品| 91国产成人在线| 国产精品不卡在线| 国产精品一区二区三区乱码| 欧美一卡2卡3卡4卡| 亚洲人成影院在线观看| 国产高清在线精品| 欧美电影免费观看高清完整版在线 | 91麻豆精品秘密| 日本一区二区在线不卡| 国产真实乱偷精品视频免| 制服丝袜av成人在线看| 亚洲一二三四久久| 99久久er热在这里只有精品15| 久久久影院官网| 久久精品二区亚洲w码| 欧美一卡二卡三卡四卡| 日本不卡一二三| 欧美高清视频不卡网| 国产成人午夜精品影院观看视频| 欧美另类久久久品| 婷婷中文字幕一区三区| 欧美日本在线播放| 亚洲国产精品久久人人爱蜜臀| 91丨porny丨中文| 亚洲色图欧美激情| 成人av在线影院| 中文字幕免费不卡| 国产成人免费在线视频| 国产日本欧洲亚洲| 成人午夜在线免费| 日本一区二区三区在线不卡| 国产成人av电影在线| 国产精品视频你懂的| 成人午夜看片网址| 国产精品午夜电影| www.欧美精品一二区| 亚洲特级片在线| 日本精品一区二区三区四区的功能| 亚洲色图制服诱惑| 色88888久久久久久影院按摩| 亚洲精品高清视频在线观看| 在线欧美一区二区| 亚洲一区二区三区三| 欧美精品日韩综合在线| 麻豆极品一区二区三区| 久久精子c满五个校花| 国产成a人无v码亚洲福利| 亚洲少妇中出一区| 欧美日韩精品高清| 美日韩黄色大片| 久久久久久一二三区| 成人美女在线观看| 一区二区三区在线视频播放| 欧美日韩久久不卡| 久久se这里有精品| 国产清纯美女被跳蛋高潮一区二区久久w| 成人网男人的天堂| 亚洲精品日产精品乱码不卡| 欧美日高清视频| 国内精品免费在线观看| 国产精品美女久久久久久久 | 首页欧美精品中文字幕| 精品久久久久一区二区国产| 成人激情电影免费在线观看| 亚洲已满18点击进入久久| 日韩精品综合一本久道在线视频| 国产一区二区三区免费看| 国产精品久久久久婷婷| 欧美少妇性性性| 美女一区二区视频| 国产精品二三区| 欧美精品乱码久久久久久| 国产成人综合视频| 亚洲一区二区av电影| 欧美大片在线观看一区二区| www.色精品| 亚洲国产欧美日韩另类综合 | 爽好多水快深点欧美视频| 久久中文娱乐网| 91蜜桃网址入口| 免费高清不卡av| 国产日韩欧美麻豆| 欧美日韩综合一区| 国产盗摄视频一区二区三区| 亚洲综合男人的天堂| 精品久久久久久久久久久久包黑料| 97久久超碰国产精品电影| 美女一区二区视频| 亚洲精品国产成人久久av盗摄| 日韩欧美成人激情| 色成人在线视频| 国产乱一区二区| 午夜日韩在线观看| 国产区在线观看成人精品| 91精品国产色综合久久不卡蜜臀 | 国产综合久久久久久久久久久久| 亚洲精品欧美激情| 久久久久国产一区二区三区四区| 欧美专区日韩专区| 成人高清视频在线观看| 蜜桃久久久久久| 亚洲一区二区三区小说| 国产日韩一级二级三级| 欧美美女直播网站| 色婷婷亚洲一区二区三区| 久久精品国产99国产精品| 亚洲国产一区二区三区青草影视| 国产精品天美传媒沈樵| 日韩欧美一级精品久久| 欧美视频自拍偷拍| 色综合激情久久| 成人免费视频视频在线观看免费| 麻豆国产欧美一区二区三区| 亚洲国产精品一区二区www| 国产精品乱码妇女bbbb| 久久尤物电影视频在线观看| 欧美精品1区2区3区| 99久久精品久久久久久清纯| 国产精品一区二区三区四区| 麻豆精品一区二区三区| 亚洲第一搞黄网站| 亚洲宅男天堂在线观看无病毒| 国产精品视频在线看| 国产偷v国产偷v亚洲高清| 日韩免费观看高清完整版| 91麻豆精品国产91| 欧美日韩一卡二卡三卡 | 白白色 亚洲乱淫| 国产成人激情av| 韩国理伦片一区二区三区在线播放 | 日韩三级视频在线观看| 欧美人与性动xxxx| 精品视频在线免费观看| 在线观看日韩国产| 色综合久久综合| a4yy欧美一区二区三区| 不卡视频免费播放| 成人网男人的天堂| 成人毛片老司机大片| 懂色一区二区三区免费观看| 日韩欧美国产综合| 欧美日韩精品一区二区天天拍小说| 在线观看国产91| 欧美亚洲国产一区二区三区| 欧美性高清videossexo| 91久久精品一区二区| 一本大道久久精品懂色aⅴ| 色先锋aa成人| 欧美在线一二三| 欧美三级电影在线看| 欧美日本在线视频| 91精品国产综合久久精品麻豆| 91精品欧美福利在线观看| 欧美精品久久久久久久久老牛影院| 欧美丰满少妇xxxxx高潮对白| 欧美肥妇bbw| 日韩精品一区二区三区老鸭窝 | 日本韩国欧美国产| 色婷婷av久久久久久久| 欧美在线观看一区| 欧美日韩三级在线| 日韩欧美综合一区| 精品国产百合女同互慰| 欧美激情在线一区二区| 亚洲欧美日韩在线| 午夜精品久久久久久久久久| 免费不卡在线视频| 国产一区二区精品久久99| 国产99精品在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 色综合天天性综合| 欧美日韩在线综合| 欧美精品一区二区三区一线天视频| 久久精品人人做人人爽97| 亚洲视频在线一区观看| 性做久久久久久免费观看欧美| 久久国产综合精品| 本田岬高潮一区二区三区| 欧美午夜寂寞影院| 欧美电影免费观看高清完整版在 | 亚洲成人av在线电影| 激情图区综合网| 成人h精品动漫一区二区三区| 色欧美片视频在线观看在线视频| 欧美日韩国产美| 精品国产免费久久| 成人免费视频在线观看| 日韩成人dvd| 成人精品一区二区三区四区| 在线观看免费亚洲| 欧美精品一区二| 夜夜爽夜夜爽精品视频| 极品美女销魂一区二区三区 | 久久国内精品自在自线400部| 成人av电影免费在线播放|