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

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

?? tpm_drivers.c

?? xen 3.2.2 源碼
?? C
字號:
/* *  Implementation of the TCG BIOS extension according to the specification *  described in *  https://www.trustedcomputinggroup.org/specs/PCClient/TCG_PCClientImplementationforBIOS_1-20_1-00.pdf * *  This 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 of the License, or (at your option) any later version. * *  This 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 this library; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA * * Copyright (C) IBM Corporation, 2006 * * Author: Stefan Berger <stefanb@us.ibm.com> */#include "rombios_compat.h"#include "util.h"#include "tpm_drivers.h"#include "tcgbios.h"#define STS_VALID                    (1 << 7) /* 0x80 */#define STS_COMMAND_READY            (1 << 6) /* 0x40 */#define STS_TPM_GO                   (1 << 5) /* 0x20 */#define STS_DATA_AVAILABLE           (1 << 4) /* 0x10 */#define STS_EXPECT                   (1 << 3) /* 0x08 */#define STS_RESPONSE_RETRY           (1 << 1) /* 0x02 */#define ACCESS_TPM_REG_VALID_STS     (1 << 7) /* 0x80 */#define ACCESS_ACTIVE_LOCALITY       (1 << 5) /* 0x20 */#define ACCESS_BEEN_SEIZED           (1 << 4) /* 0x10 */#define ACCESS_SEIZE                 (1 << 3) /* 0x08 */#define ACCESS_PENDING_REQUEST       (1 << 2) /* 0x04 */#define ACCESS_REQUEST_USE           (1 << 1) /* 0x02 */#define ACCESS_TPM_ESTABLISHMENT     (1 << 0) /* 0x01 */static uint32_t tis_wait_sts(uint8_t *addr, uint32_t time,                             uint8_t mask, uint8_t expect){	uint32_t rc = 0;	while (time > 0) {		uint8_t sts = mmio_readb(&addr[TPM_STS]);		if ((sts & mask) == expect) {			rc = 1;			break;		}		mssleep(1);		time--;	}	return rc;}static uint32_t tis_activate(uint32_t baseaddr){	uint32_t rc = 1;	uint8_t *tis_addr = (uint8_t*)baseaddr;	uint8_t acc;	/* request access to locality */	tis_addr[TPM_ACCESS] = ACCESS_REQUEST_USE;	acc = mmio_readb(&tis_addr[TPM_ACCESS]);	if ((acc & ACCESS_ACTIVE_LOCALITY) != 0) {		tis_addr[TPM_STS] = STS_COMMAND_READY;		rc = tis_wait_sts(tis_addr, 100,		                  STS_COMMAND_READY, STS_COMMAND_READY);	}	return rc;}uint32_t tis_ready(uint32_t baseaddr){	uint32_t rc = 0;	uint8_t *tis_addr = (uint8_t*)baseaddr;	tis_addr[TPM_STS] = STS_COMMAND_READY;	rc = tis_wait_sts(tis_addr, 100, STS_COMMAND_READY, STS_COMMAND_READY);	return rc;}uint32_t tis_senddata(uint32_t baseaddr, unsigned char *data, uint32_t len){	uint32_t rc = 0;	uint8_t *tis_addr = (uint8_t*)baseaddr;	uint32_t offset = 0;	uint32_t end = 0;	do {		uint16_t burst = 0;		uint32_t ctr = 0;		while (burst == 0 && ctr < 2000) {			burst = mmio_readw((uint16_t *)&tis_addr[TPM_STS+1]);			if (burst == 0) {				mssleep(1);				ctr++;			}		}		if (burst == 0) {			rc = TCG_RESPONSE_TIMEOUT;			break;		}		while (1) {			tis_addr[TPM_DATA_FIFO] = data[offset];			offset++;			burst--;			if (burst == 0 || offset == len) {				break;			}		}		if (offset == len) {			end = 1;		}	} while (end == 0);	return rc;}uint32_t tis_readresp(uint32_t baseaddr, unsigned char *buffer, uint32_t len){	uint32_t rc = 0;	uint32_t offset = 0;	uint8_t *tis_addr = (uint8_t*)baseaddr;	uint32_t sts;	while (offset < len) {		buffer[offset] = mmio_readb(&tis_addr[TPM_DATA_FIFO]);		offset++;		sts = mmio_readb(&tis_addr[TPM_STS]);		/* data left ? */		if ((sts & STS_DATA_AVAILABLE) == 0) {			break;		}	}	return rc;}uint32_t tis_waitdatavalid(uint32_t baseaddr){	uint8_t *tis_addr = (uint8_t*)baseaddr;	uint32_t rc = 0;	if (tis_wait_sts(tis_addr, 1000, STS_VALID, STS_VALID) == 0) {		rc = TCG_NO_RESPONSE;	}	return rc;}uint32_t tis_waitrespready(uint32_t baseaddr, uint32_t timeout){	uint32_t rc = 0;	uint8_t *tis_addr = (uint8_t*)baseaddr;	tis_addr[TPM_STS] = STS_TPM_GO;	if (tis_wait_sts(tis_addr, timeout,	                 STS_DATA_AVAILABLE, STS_DATA_AVAILABLE) == 0) {		rc = TCG_NO_RESPONSE;	}	return rc;}/* if device is not there, return '0', '1' otherwise */uint32_t tis_probe(uint32_t baseaddr){	uint32_t rc = 0;	uint8_t *tis_addr = (uint8_t*)baseaddr;	uint32_t didvid = mmio_readl((uint32_t *)&tis_addr[TPM_DID_VID]);	if ((didvid != 0) && (didvid != 0xffffffff)) {		rc = 1;	}	return rc;}struct tpm_driver tpm_drivers[TPM_NUM_DRIVERS] = {	{		.baseaddr      = TPM_TIS_BASE_ADDRESS,		.activate      = tis_activate,		.ready         = tis_ready,		.senddata      = tis_senddata,		.readresp      = tis_readresp,		.waitdatavalid = tis_waitdatavalid,		.waitrespready = tis_waitrespready,		.probe         = tis_probe,	},};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区不卡老阿姨| 最新中文字幕一区二区三区| 国模娜娜一区二区三区| 日韩女优av电影| 波多野结衣的一区二区三区| 欧美tk—视频vk| 成人app在线| 国产一区二区三区久久久 | 精品在线一区二区| 婷婷综合另类小说色区| 精品视频免费看| 婷婷丁香久久五月婷婷| 亚洲另类一区二区| 亚洲欧洲精品天堂一级| 国产午夜精品在线观看| 亚洲精品在线三区| 日韩精品一区二区三区四区视频| 制服丝袜在线91| 欧美剧情电影在线观看完整版免费励志电影| 国产成a人亚洲精品| 国产v综合v亚洲欧| 国产精品一二三四| www.久久久久久久久| 成人中文字幕合集| 北条麻妃国产九九精品视频| 99这里都是精品| 色综合久久久久综合99| 欧美三级在线播放| 制服丝袜av成人在线看| 欧美熟乱第一页| 欧美一级爆毛片| xf在线a精品一区二区视频网站| 精品欧美乱码久久久久久 | 国产成人啪免费观看软件| 韩国精品久久久| 国产91精品免费| 不卡av免费在线观看| 92精品国产成人观看免费| 欧美中文一区二区三区| 日韩欧美电影在线| 中文欧美字幕免费| 亚洲男人的天堂一区二区| 午夜婷婷国产麻豆精品| 亚洲综合视频在线观看| 国内精品写真在线观看| 成人成人成人在线视频| 91精品福利在线| 日本二三区不卡| 精品免费国产二区三区| 中文字幕精品一区二区精品绿巨人| 2023国产精华国产精品| 亚洲男女毛片无遮挡| 日韩激情av在线| 99在线视频精品| 日韩一区二区三区在线视频| 国产精品欧美精品| 首页国产欧美久久| 国产精品亚洲第一区在线暖暖韩国 | 国产一区视频网站| 99精品在线观看视频| 欧美一区二区大片| 一区二区三区四区在线免费观看| 美日韩一级片在线观看| 成人激情开心网| 精品剧情v国产在线观看在线| 亚洲国产成人精品视频| 色偷偷一区二区三区| 国产精品福利电影一区二区三区四区| 国产一区二区美女诱惑| 日韩欧美一级精品久久| 丝袜美腿亚洲色图| 精品污污网站免费看| 一区二区三区丝袜| 一本色道亚洲精品aⅴ| 日韩理论在线观看| 91麻豆国产在线观看| 中文字幕一区二区三区乱码在线| 国产99久久久国产精品免费看 | 久久不见久久见免费视频1| 91精品国产综合久久久久| 婷婷开心激情综合| 7777精品伊人久久久大香线蕉的 | 国产黑丝在线一区二区三区| 日韩视频一区二区| 免费高清不卡av| 久久一区二区三区四区| 国产一区二区三区四区五区美女| 久久久久久免费毛片精品| 国产乱理伦片在线观看夜一区| 精品国产精品一区二区夜夜嗨| 久久激情五月婷婷| 日本一区二区免费在线观看视频 | 欧美日韩成人在线一区| 日韩av午夜在线观看| 精品国产成人系列| 99精品视频在线观看免费| 亚洲国产日韩精品| 精品嫩草影院久久| 成人av免费网站| 天堂蜜桃一区二区三区| 精品国产一区二区在线观看| 懂色av一区二区三区免费看| 一区二区三区在线视频免费 | 久久色.com| 91老师片黄在线观看| 激情综合五月天| 久久免费偷拍视频| 色婷婷激情一区二区三区| 日本午夜精品视频在线观看| 国产肉丝袜一区二区| 91国产福利在线| 国产一区二区三区国产| 一区二区三区蜜桃| 久久综合九色综合欧美就去吻| 91一区二区三区在线播放| 捆绑紧缚一区二区三区视频| 国产精品久久久久影院老司| 欧美日韩在线播放三区四区| 成人性生交大片免费看视频在线 | 亚洲天堂a在线| 欧美一区二区三区婷婷月色| 国产成人精品免费| 日韩精品免费专区| 国产精品卡一卡二卡三| 精品伦理精品一区| 欧美乱妇15p| 色婷婷亚洲综合| 丰满白嫩尤物一区二区| 日本欧美一区二区| 亚洲影院理伦片| 国产精品白丝在线| 精品国产乱码久久久久久闺蜜| 日本电影欧美片| 91丨porny丨户外露出| 成人看片黄a免费看在线| 久热成人在线视频| 婷婷开心激情综合| 亚洲综合网站在线观看| 亚洲欧洲在线观看av| 久久久久久久久97黄色工厂| 欧美一级免费大片| 欧美性视频一区二区三区| 99国产一区二区三精品乱码| 国产乱码精品一区二区三| 久久er99精品| 久久99久久99| 老司机精品视频一区二区三区| 日韩中文字幕麻豆| 亚洲成av人在线观看| 亚洲一区二区欧美| 亚洲线精品一区二区三区| 亚洲综合丝袜美腿| 午夜av电影一区| 毛片av中文字幕一区二区| 麻豆91免费观看| 日韩av在线发布| 日韩av在线播放中文字幕| 日本午夜精品视频在线观看| 午夜av一区二区三区| 丝袜美腿亚洲一区二区图片| 三级一区在线视频先锋 | 国模一区二区三区白浆| 男男视频亚洲欧美| 国产在线精品一区二区三区不卡| 国产一区二区免费在线| 国产不卡在线播放| 波多野结衣亚洲一区| 91香蕉视频mp4| 色噜噜夜夜夜综合网| 91精品免费观看| 久久久精品中文字幕麻豆发布| 中文字幕精品综合| 一区二区视频在线看| 日韩福利电影在线| 国产在线国偷精品产拍免费yy| 国产福利视频一区二区三区| 99精品热视频| 制服视频三区第一页精品| 精品捆绑美女sm三区| 中文字幕在线观看一区二区| 亚洲影视在线播放| 美女视频免费一区| 99久久免费精品高清特色大片| 91久久精品一区二区| 91精品婷婷国产综合久久性色 | 欧美少妇性性性| 久久久亚洲综合| 亚洲激情六月丁香| 麻豆成人久久精品二区三区红| 成人午夜电影网站| 欧美性色aⅴ视频一区日韩精品| 精品精品国产高清a毛片牛牛| 国产精品久久久久久久久久久免费看 | 国产美女久久久久| 欧美视频一区在线| 国产精品网站一区| 欧美a一区二区| 91免费视频大全| 国产亚洲污的网站| 日本欧美肥老太交大片|