经由私有操作访问控制寄存器的系统和方法

文档序号:6553404阅读:211来源:国知局
专利名称:经由私有操作访问控制寄存器的系统和方法
技术领域
本发明通常涉及微处理器系统,更具体地,涉及可以使用控制寄存器设置系统参数和提供系统状态信息的微处理器系统。
背景技术
微处理器系统可以使用各种形式的控制寄存器来支持其操作。可以对一种形式的控制寄存器进行写入,以便设置系统参数、配置系统,等等。这种寄存器中各种比特的组合可以设置操作限制,诸如预测执行的深度或高速缓存的大小;或者可以开启或关闭选择性的功能电路,诸如分支预测器和预取单元;或者可以针对某些事件激活或禁止中断。可以读出其它形式的控制寄存器,以便接收系统状态。这种控制寄存器又称为状态寄存器。状态寄存器可以提供关于系统健康、与故障状况相关联的程序寄存器的内容、操作温度、及其它形式状态的信息。许多控制寄存器既可读出又可写入。控制寄存器的例子可以是在Pentium系列兼容微处理器中实现的模型特定寄存器(MSR)。
通常,可以通过用于访问控制寄存器的特定指令,或者通过特定形式的通用用户指令,诸如输入/输出(I/O)用户指令,来访问控制寄存器。可以限于在高级别软件特权下执行特定控制寄存器访问指令,其中该特定控制寄存器访问指令可用于位于处理器之内的控制寄存器。
另外,在结构上与处理器功能单元独立的系统电路部分中可能需要各种控制寄存器。例如,这些部分可以包括各种芯片组功能,或者可以包括各种系统内总线桥。通常不能经由专用电路,而仅能通过包括系统总线的预定数据路径,来访问这些系统电路部分。可能需要经由可以在低级别软件特权下执行的通用I/O用户指令,来访问位于处理器之外的常规控制寄存器,诸如位于芯片组中的控制寄存器。


在附图中以示例性的方式而不是以限制性的方式示出了本公开,且在附图中相似的参考数字表示相似的元件,其中图1是根据本公开一个实施例的访问控制寄存器的图。
图2是根据本公开一个实施例的存储器地址空间的图。
图3是根据本公开另一个实施例的访问控制寄存器的图。
图4是根据本公开另一个实施例的访问控制寄存器的图。
图5A是根据本公开一个实施例的具有能够访问控制寄存器的处理器的系统的示意图。
图5B是根据本公开另一个实施例的具有能够访问控制寄存器的处理器的系统的示意图。
具体实施例方式
以下描述包括用于控制寄存器的技术,该控制寄存器可以具有增强的访问保护,且可以位于在结构上独立于处理器功能块的系统部件中。在以下描述中,阐述了多个具体细节,诸如逻辑电路实现、软件模块分配、总线及其它接口信号传输技术、以及操作细节,以便提供对本发明的更彻底的理解。然而,本领域的技术人员将会意识到,在没有这些具体细节的情况下也可以实践本发明。在其它例子中,没有详细示出控制结构、门级电路以及全部软件指令序列,以免混淆本发明。本领域普通技术人员利用这里所包括的描述,能够实现适当的功能,而无需过多实验。在某些实施例中,在(诸如英特尔公司生产的)Pentium兼容处理器系统以及相关联的系统和处理器固件的环境中公开了本发明。然而,可以通过其它类型的处理器系统实践本发明,诸如通过(诸如英特尔公司生产的)Itanium处理器族兼容的处理器、X-Scale族兼容的处理器、或来自其它供应商和设计商的任何处理器结构的其它各种不同类型的通用处理器。另外,一些实施例可以包括或可以是专用处理器,诸如图形、网络、图像、通信处理器,或任何其它已知或可用类型的与其固件结合的处理器。
现在参见图1,根据本公开的一个实施例,示出了访问控制寄存器的图。图1的系统包括通过总线150连接的处理器110和芯片组130。在其它实施例中,在总线150上可以连接额外的处理器和芯片组。另外,芯片组功能,诸如用于访问存储器的电路和输入/输出(I/O)设备,可以分布在其它模块中。处理器110和芯片组130可以用各自独立的半导体模块实现,也可以集成在一起成为单一模块。在一个实施例中,处理器110可以是Pentium系列兼容的处理器,且总线150可以是Pentium系列兼容的前端总线(FSB)处理器110可以在微码的控制下执行来自指令集的用户指令。可以提供微码只读存储器(ROM)112来存储基本微码集。另外,可以提供可写入微码随机访问存储器(RAM)114来接收另一个微码集。在一个实施例中,可以从系统存储器142中的微码补丁映象(microcode patch image)144,或从基本输入/输出系统(BIOS)可编程只读存储器(PROM)146中的微码补丁映象148,来加载该另一个微码集。在其它实施例中,除了BIOS之外,可以使用其它形式的系统固件,诸如,可扩展固件接口(EFI);且除了PROM之外,可以使用其它形式的存储装置,诸如闪存。
图1的系统可以使用多个控制寄存器。可以由处理器110读出这些控制寄存器,以产生系统状态信息,或者可以由处理器110写入这些控制寄存器,以设置某些系统操作参数。在一些情况下,可以读出的控制寄存器可以称为“状态寄存器”,但是为了本公开的目的,该术语“状态寄存器”通常会涉及可读出或可写入控制寄存器,或涉及可读出且可写入控制寄存器。在一个实施例中,可以通过执行用户指令RDMSR(读出机器特定寄存器)和WRMSR(写入机器特定寄存器)来读出或写入常规的控制寄存器。这些用户指令可以限于访问位于不能被其它指令访问的独立地址空间中的控制寄存器。在一个实施例中,常规用户I/O指令可以用来访问位于I/O地址空间中的常规控制寄存器。在一个实施例中,这种I/O地址空间可以限于16比特地址。
在一个实施例中,可以有本公开的新的示例性控制寄存器。这种新控制寄存器可以是位于芯片组130中的控制寄存器1-N(136-138),以及位于处理器110中的控制寄存器A和B(120、122)。在每种情况下,该新的控制寄存器可以具有在I/O地址空间之外的地址。在一个实施例中,控制寄存器1-N(136-138)和控制寄存器A和B(120、122)具有的地址在Pentium系列兼容处理器的I/O地址空间的极限和物理地址的极限之间。在不同的实施例中,物理地址空间的极限可以是(232-1)或(264-1)。在其它实施例中,可以存在其它边界,描绘来自整个物理存储器空间的I/O地址空间。
由于控制寄存器1-N(136-138)的地址在处理器110的用户I/O地址空间之外,不能经由常规用户I/O指令访问这些控制寄存器。可替换地,在一个实施例中,非用户可访问微码集可以包括允许读出和写入控制寄存器1-N(136-138)的微码。在其它实施例中,除了微码操作之外,可以使用其它形式的私有操作来访问控制寄存器1-N(136-138)。
在一个实施例中,可以通过修改现有的用于实现用户指令RDMSR和WRMSR的微码,得到允许写入和读出控制寄存器1-N(136-138)和控制寄存器A和B(120、122)的微码。现有的用于实现RDMSR和WRMSR的微码包括取出32比特物理寄存器中所包含的数据的微操作,该32比特物理寄存器代表逻辑通用目的寄存器ECX。然后发出该32比特地址作为所需MSR的地址,该地址在包含控制寄存器的独立地址空间中。
为了产生可以访问诸如控制寄存器1-N(136-138)和控制寄存器A和B(120、122)的新控制寄存器的微码,可以修改用于用户指令RDMSR和WRMSR的现有微码,以将某些MSR地址转换成I/O地址。在一个实施例中,转换后的地址在常规用户I/O指令中固有的用户可寻址地址范围限制之外。然后可以将该修改所得的微码放置到替换微码集。在其它实施例中,可以将修改的RDMSR或修改的WRMSR微码之外的微码改进,以支持访问新控制寄存器。
值得注意的是,用于访问控制寄存器1-N(134-138)的技术可以经由两个总线接口模块118、140通过总线150进行操作。在一个实施例中,总线150可以支持I/O可寻址存储器空间之外的地址,如果没有其它原因,其还可以支持通过总线150和存储器接口132、152访问存储器。如此处所示,芯片组130的芯片组功能电路能够在结构上与处理器110独立的模块上实现,且能够经由总线150而无需额外的专用信号线进行连接,所以这种用于访问控制寄存器的技术可以通过现有的诸如FSB的常规总线来执行。
因为修改所得的用于访问控制寄存器1-N(136-138)和控制寄存器A和B(120、122)的微码通常对用户来说不可用,因此可以强加特定的触发条件来执行该微码。例如,在一个实施例中,加载微码补丁映象144或微码补丁映象148到微码RAM 114可以触发修改后的微码的执行。(可以通过从处理器110移除RESET#信号,来依次触发对微码补丁映象144或微码补丁映象148的加载)。这样,可以将来自微码补丁的控制比特写入控制寄存器1-N(136-138)和控制寄存器A和B(120、122),作为微码补丁加载的一部分。
在另一个实施例中,在微码ROM 112中可以有两个微码集一个集用于用户指令微码,且另一个集在调试模式中使用。在其它实施例中,这两个微码集可以在微码ROM 112和微码RAM 114之间分开。可以用调试标志124来指示处理器110是在用户模式还是在调试模式。在一些实施例中,可以在制造期间设置调试标志124(逻辑真),且可以在最后制造测试或预备交付的某个阶段清除调试标志124(逻辑假)。在一些实施例中,可以有特殊的电子过程,以在交付了处理器110之后设置并随后清除调试标志124。
当设置了调试标志124时,可以使得特权用户能够执行第二微码集。这样,可以仅限于在调试模式下执行用于访问所选择的新控制寄存器的微码,诸如访问控制寄存器1-N(136-138)和控制寄存器A和B(120、122)。当在交付处理器110之前清除了调试标志时,该清除可能阻止最终用户访问该控制寄存器。
现在参见图2,根据本公开的一个实施例,示出了存储器地址空间的图。与可寻址存储器空间220相比,I/O可寻址存储器空间210如图所示是独立寻址的。在一个实施例中,该I/O可寻址存储器空间210可以通过16比特地址(即,(216-1)或64K字节)来寻址。在其它实施例中,可以多增加几个地址,得到64K字节+N字节的I/O可寻址存储器空间210,其中在一个实施例中N=3。在处理器使用32比特存储器地址的实施例中,该可寻址存储器空间220可以是232或4G字节;在处理器使用64比特存储器地址的其它实施例中,该可寻址存储器空间220可以是264字节。
如图2所示,仅可以通过存储器操作和其它微码操作来访问的存储器空间的部分,即可寻址存储器空间220,正交于I/O可寻址存储器空间210。在其它实施例中,在I/O可寻址存储器空间210和可寻址存储器空间220之间可以有不同的边界集。
现在参见图3,根据本公开的另一个实施例,示出了访问控制寄存器的图。处理器310可以配置为通过服从电气电子工程师协会(IEEE)标准1149规范的测试访问端口(TAP)(“IEEE标准测试访问端口与边界扫描结构”,IEEE标准1149.1-1990)来操作。此处所示的处理器130具有TAP接口370,其可以允许通过可兼容IEEE标准1149的调试端口374来访问处理器310。调试端口374可以经由接口376并通过边界扫描复用器372所提供的信号缓冲,直接控制处理器310。
调试端口374可以允许用户访问该用户正常情况下不可访问的处理器310的逻辑电路部分。在一个实施例中,调试端口373可以允许用户执行非用户指令微码。这可以允许该用户执行能访问具有在I/O可寻址存储器空间之外的地址的控制寄存器的微码,诸如访问控制寄存器1-N(334-338)和控制寄存器A(320)。此处,如图1中的实施例,可以通过一个微码集来实现用户指令,且能访问这些控制寄存器的微码可以属于另一个微码集。
在其它实施例中,调试端口374可以用来直接写入控制寄存器,诸如控制寄存器1-N(334-338)和控制寄存器A(320)。
现在参见图4,根据本公开的另一个实施例,示出了访问控制寄存器的图。在图4的实施例中,处理器410和480不是经由多点总线而是经由点对点数据链路460交换数据。另外,没有使用独立的芯片组。可替换地,将诸如存储器接口472和I/O接口466的所选择的芯片组功能与处理器410集成在一起。
处理器410可以包括本公开的控制寄存器,诸如控制寄存器1-N(434-438)。处理器480还可以包括能够从处理器410访问的控制寄存器,即控制寄存器A和B(484、486)。值得注意的是,这种用于访问控制寄存器A和B(484、486)的技术可以经由点对点接口模块462、464通过点对点数据链路460来进行操作。在一个实施例中,点对点数据链路460可以支持在I/O可寻址存储器空间之外的地址,如果没有其它原因,它可以支持从处理器B 480通过点对点数据链路460和存储器接口472、452对存储器的访问。控制寄存器1-N(434-438)和控制寄存器A和B(484、486)中每一个都具有I/O可寻址存储器空间之外的地址。
可以提供微码ROM 412,以存储基本微码集;且可以提供微码RAM 414,以接收另一个微码集。在一个实施例中,该另一个微码集可以从微码补丁映象444或从微码补丁映象448加载。在一个实施例中,非用户可访问微码集可以包括允许写入和读出控制寄存器1-N(434-438)和控制寄存器A和B(484、486)的微码。
因为用于访问控制寄存器1-N(434-438)和控制寄存器A和B(484、486)的微码正常情况下对于用户是不可用的,可以再次强加用于执行该微码的特定触发条件。例如,在一个实施例中,将微码补丁映象444或微码补丁映象448加载入微码RAM 414可以触发修改后的微码的执行。以这种方式,可以将来自微码补丁的控制比特写入控制寄存器1-N(434-438)和控制寄存器A和B(484、486),作为微码补丁加载的一部分。可替换地,可以在微码ROM 412中提供第二微码集,且可以在上述结合图1讨论的调试模式期间,或通过上述结合图3讨论的测试访问端口的动作,执行用于访问控制寄存器1-N(434-438)和控制寄存器A和B(484、486)的微码。
现在参见图5A和5B,根据本公开的两个实施例,示出了具有能够访问本公开的控制寄存器的处理器的系统的示意图。图5A示出的系统中,处理器、存储器、以及输入/输出设备通过系统总线互相连接;而图5B示出的系统中,处理器、存储器、以及输入/输出设备通过多个点对点接口互相连接。
图5A的系统可以包括一个或多个处理器,为了简洁起见,此处仅示出了两个,即处理器40、60。处理器40、60可以包括一级高速缓存42、62。图5A的系统可以具有经由总线接口44、64、12、8与系统总线6连接的多个功能单元。在一个实施例中,系统总线6可以是与英特尔公司制造的Pentium系列微处理器配合使用的前端总线(FSB)。在其它实施例中,可以使用其它总线。在一些实施例中,存储器控制器34和总线桥32可以合称为芯片组。在一些实施例中,与图5A的实施例所示的不同,可以在多个物理芯片之间划分芯片组的多个功能单元。
存储器控制器34可以允许处理器40、60读出和写入系统存储器10以及固件可擦除可编程只读存储器(EPROM)36。在一些实施例中,该固件可以提供微码补丁映象,用于加载到处理器40、60的微码RAM(未示出)。在一些实施例中,固件EPROM 36可以利用闪存。存储器控制器34可以包括总线接口8,以允许向或从系统总线6上的总线代理搬运存储器读出和写入数据。存储器控制器34还可以通过高性能图形接口39与高性能图形电路38连接。在某些实施例中,该高性能图形接口39可以是高级图形端口AGP接口。存储器控制器34可以通过高性能图形接口39,将来自系统存储器10的数据导向高性能图形电路38。
图5B的系统也可以包括一个或多个处理器,为了简洁起见,仅示出了其中的两个,即处理器70、80。处理器70、80可以各自包括一个本地存储器控制器集线器(MCH)72、82,以便与存储器2、4和固件3、5相连接。在一些实施例中,该固件可以提供微码补丁映象,用于加载到处理器70、80的微码RAM(未示出)中。处理器70、80可以使用点对点接口电路78、88,经由点对点接口50来交换数据。处理器70、80可以使用点对点接口电路(P-P)76、94、86、98,经由各自的点对点接口52、54来与芯片组90交换数据。芯片组90也可以经由高性能图形接口92来与高性能图形电路38交换数据。
在图5A的系统中,总线桥32可以允许在系统总线6和总线16之间交换数据,在一些实施例中,总线16可以是工业标准结构(ISA)总线或外围设备互连(PCI)总线。在图5B的系统中,芯片组90可以经由总线接口96来与总线16交换数据。在任一系统中,在总线16上可以有各种输入/输出I/O设备14,在一些实施例中,包括低性能图形控制器、视频控制器和网络控制器。在一些实施例中,可以用另一个总线桥18,来允许在总线16和总线20之间交换数据。在一些实施例中,总线20可以是小型计算机系统接口(SCSI)总线、集成驱动电子设备(IDE)总线、通用串行总线(USB)总线。另外,I/O设备可以与总线20相连接。这些I/O设备可以包括键盘和光标控制设备22(包括鼠标)、音频I/O 24、通信设备26(包括调制解调器和网络接口)、以及数据存储设备28。软件代码30可以存储在数据存储设备28上,在一些实施例中,软件代码30可以包括微码补丁映象。在一些实施例中,数据存储设备28可以包括固定磁盘、软盘驱动器、光盘驱动器、磁光盘驱动器、磁带、或非易失性存储器(包括闪存)。
在前述说明书中,根据具体的示例性实施例描述了本发明。然而,显然在不脱离所附权利要求所描述的本发明的更宽的精神和范围的前提下,可以对本发明做各种修改和改变。因此,本说明书和附图应被视为示例性的而非限制性的。
权利要求
1.一种装置,包括用于执行所选芯片组功能的逻辑电路;用于与处理器连接的总线接口;以及通过在所述处理器的输入/输出地址空间之外的地址来访问的控制寄存器。
2.如权利要求1所述的装置,其中,所述总线接口支持所述地址。
3.如权利要求1所述的装置,其中,所述处理器的物理寄存器支持所述地址。
4.一种处理器,包括第一逻辑电路,用于在第一微码集的控制下执行指令集;物理寄存器,用于容纳所述指令集的输入/输出地址空间中不包括的地址;以及第二逻辑电路,用于使用所述地址访问控制寄存器。
5.如权利要求4所述的处理器,还包括第三逻辑电路,用于接收第二微码集。
6.如权利要求5所述的处理器,其中,所述第二微码集包括用于从所述物理寄存器发出所述地址的微码。
7.如权利要求5所述的处理器,其中,所述第三逻辑电路从外部存储器接收所述第二微码集。
8.如权利要求5所述的处理器,还包括总线接口,用于将所述地址传输到所述处理器外部。
9.如权利要求4所述的处理器,还包括第二微码集,所述第二微码集包括用于发出到控制寄存器的所述地址的微码。
10.如权利要求9所述的处理器,还包括调试标志,用于指示可以执行所述第二微码集。
11.如权利要求10所述的处理器,其中,在所述处理器的验收测试期间清除所述调试标志。
12.如权利要求10所述的处理器,其中,通过验收后的测试过程设置所述调试标志。
13.如权利要求9所述的处理器,还包括测试访问端口接口,用于接收测试命令。
14.如权利要求13所述的处理器,其中,可以响应于所述测试命令,执行所述第二微码集。
15.如权利要求9所述的处理器,还包括总线接口,用于将所述地址传输到所述处理器外部。
16.一种系统,包括处理器,其包括第一逻辑电路,用于在第一微码集的控制下执行指令集;以及物理寄存器,用于容纳所述指令集的输入/输出地址空间中不包括的地址;以及包括以下组件的模块第二逻辑电路,用于执行选择的芯片组功能;用于将所述模块与所述处理器连接的接口;以及通过所述地址访问的控制寄存器。
17.如权利要求16所述的系统,其中,所述处理器包括第三逻辑电路,用于接收第二微码集。
18.如权利要求17所述的系统,其中,所述第二微码集包括用于从所述物理寄存器发出所述地址以访问所述控制寄存器的微码。
19.如权利要求17所述的系统,其中,所述第二逻辑电路和所述第三逻辑电路将所述第二微码集加载到所述第三逻辑电路中。
20.如权利要求19所述的系统,其中,从在所述系统外部存储的第二微码集映象加载所述第二微码集。
21.如权利要求16所述的系统,其中,所述接口是所述处理器和所述模块之间的总线。
22.如权利要求16所述的系统,其中,所述处理器还包括第二微码集,所述第二微码集包括用于使用所述地址来访问所述控制寄存器的微码。
23.如权利要求22所述的系统,其中,所述处理器还包括调试标志,用于指示可以执行所述第二微码集。
24.如权利要求23所述的系统,其中,在所述处理器的验收测试期间清除所述调试标志。
25.如权利要求23所述的系统,其中,通过验收后的测试过程设置所述调试标志。
26.如权利要求22所述的系统,其中,所述处理器包括测试访问端口接口,用于接收测试命令。
27.如权利要求26所述的系统,其中,可以响应于所述测试命令,执行所述第二微码集。
28.一种方法,包括将控制寄存器的地址放置在处理器的物理寄存器中,其中,所述地址不包括在处于第一微码集控制下的指令集的输入/输出地址空间中;以及在第二微码集的控制下,从所述物理寄存器发出到所述控制寄存器的所述地址。
29.如权利要求28所述的方法,还包括将所述第二微码集加载到所述处理器中。
30.如要求要求29所述的方法,还包括响应于所述加载,执行所述第二微码集。
31.如权利要求28所述的方法,还包括检查调试标志的状态,以确定处理器是否处于调试模式。
32.如权利要求31所述的方法,其中,所述发出地址响应于所述检查。
33.如权利要求31所述的方法,还包括响应于验收测试,清除所述调试标志。
34.如权利要求31所述的方法,还包括响应于验收后的测试,设置所述调试标志。
35.如权利要求29所述的方法,其中,所述发出地址响应于从测试访问端口接口接收到的测试命令。
36.一种装置,包括用于将控制寄存器的地址放置在处理器的物理寄存器中的模块,其中所述地址不包括在处于第一微码集控制下的指令集的输入/输出地址空间中;以及用于在第二微码集的控制下,从所述物理寄存器发出到所述控制寄存器的所述地址的模块。
37.如权利要求36所述的装置,还包括用于将所述第二微码集加载到所述处理器中的模块。
38.如权利要求37所述的装置,还包括用于响应于所述用于加载的模块来执行所述第二微码集的模块。
39.如权利要求36所述的装置,还包括用于检查调试标志的状态以确定处理器是否处于调试模式的模块。
40.如权利要求39所述的装置,其中,所述用于发出地址的模块响应于所述用于检查的模块。
41.如权利要求39所述的装置,还包括用于响应于验收测试来清除所述调试标志的模块。
42.如权利要求41所述的装置,还包括用于响应于验收后的测试来设置调试标志的模块。
43.如权利要求36所述的装置,其中,所述用于发出地址的模块响应于从测试访问端口接口接收到的测试命令。
44.一种包含软件代码的计算机可读介质,当处理器执行所述软件代码时,执行包括以下步骤的过程将控制寄存器的地址放置在处理器的物理寄存器中,其中,所述地址不包括在处于第一微码集控制下的指令集的输入/输出地址空间中;以及在第二微码集的控制下,从所述物理寄存器发出到所述控制寄存器的所述地址。
45.如权利要求44所述的计算机可读介质,还包括所述第二微码集的映象,用于加载到所述处理器中。
46.如权利要求45所述的计算机可读介质,还包括响应于将所述第二微码集的所述映象加载到所述处理器中,执行所述第二微码集。
47.如权利要求44所述的计算机可读介质,还包括检查调试标志的状态,以确定处理器是否处于调试模式。
48.如权利要求47所述的计算机可读介质,其中,所述发出地址响应于所述检查。
49.如权利要求48所述的计算机可读介质,还包括响应于验收测试,清除所述调试标志。
50.如权利要求48所述的计算机可读介质,还包括响应于验收后的测试,设置所述调试标志。
51.如权利要求44所述的计算机可读介质,其中,所述发出地址响应于从测试访问端口接口接收到的测试命令。
全文摘要
描述了一种用于访问计算机系统中的控制寄存器的系统和方法。在一个实施例中,把正常的输入/输出可寻址范围之外的地址赋给控制寄存器。另外,该控制寄存器可以物理地位于与处理器功能电路独立的系统电路中。这种控制寄存器不能经由正常的用户输入/输出指令访问。可以用特殊微码来访问这些控制寄存器。可以通过特殊的系统事件来执行该特殊微码。这些特殊事件可以包括加载微码补丁,或进入特殊的调试模式,或使用测试访问端口的测试访问。
文档编号G06F9/30GK101088064SQ200580044467
公开日2007年12月12日 申请日期2005年12月21日 优先权日2004年12月22日
发明者J·吉尔伯特, H·乔伊斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1