powerpc64/GENERIC64: a mtmsrd without a "context synchronizing instruction" (immediately?) following...
Mark Millard
markmi at dsl-only.net
Wed Sep 24 03:38:10 UTC 2014
Thanks for the reference! Better than what I'd found for sure. Agreed for what the PowerMac's processor supports.
Just FYI since I was curious and looked it up: The page labeled 1352 of the Power ISA 2.07 document says in section A.23 about the Move To Machine State Register Instruction...
> Also, mtmsr is optional in Power ISA but required in POWER.
From 1.3.5 "Categories"...
B: "Base" is required for all implementations
S: required for Server implementations
E: required for Embedded implementations
64: Required for 64-bit implementations; not defined for 32-bit implementations
(I'm omitting lots of categories, including dependent subcategories.)
Appendix I lists both S and E for mtmsr and lists S for mtsrd. B and 64 are not mentioned for either.
So it would take wanting to span a non-server/non-embedded processor before there would be a problem for mtmsr. It only takes spanning a non-server for there to possibly be a problem for mtmsrd. mtmsrd shares "S" status with rvwindkle, described in the table as the "Rip Van Winkle" instruction. Lots of instructions have S categorization. A non-B "S and E" double categorization is fairly rare. E by itself has some TLB variants, wrtee, wrteei but little else. I'm not counting E.??'s or S.??'s here. Interesting.
Thanks again.
===
Mark Millard
markmi at dsl-only.net
On Sep 23, 2014, at 6:33 PM, Nathan Whitehorn <nwhitehorn at freebsd.org> wrote:
On 09/23/14 18:25, Mark Millard wrote:
> Nathan Whitehorn wrote of the use of the document that I was referencing:
>
>> I think you are looking at very old documentation. The 32-bit mtmsr is
>> implemented on all POWER ISA compliant CPUs (see e.g. page 886 of the
>> 2.07 document).
>> -Nathan
>
> I think we may be using different documents rather than different versions of the same document. I may need to find what Nathan is using and its time frame (PowerPC Architecture 2.07?). But he may want to check what I've been referencing. So...
>
> pem_64bit_v3.0.2005jul15.pdf is Version 3.0 and directly from the IBM site and has 657 pages...
>
> https://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/F7E732FF811F783187256FDD004D3797
>
> It is the current document of its type as far as I can tell. The title is:
>> PowerPC® Microprocessor Family:
>>
>> The Programming Environments Manual for 64-bit Microprocessors
>>
>> Version 3.0
>>
>> July 15, 2005.
>
Right, this is massively obsolete. Apparently they were planning to deprecate mtmsr and changed their minds. You want the current one from https://www.power.org/documentation/power-isa-version-2-07/.
> It is described on its web page as:
>
>> This manual is to help programmers provide software that is compatible across the family of PowerPC processors. This book provides a general description of features common to PPC processors and indicates those features that are optional or that may be implemented differently in the design of each processor. This book is for only 64-bit processors.
>
>
> It is different from other architecture documents in that it also documents the Operating Environment Architecture (supervisor level/privileged-state resources for operating systems), not just the UISA and VEA. The document warns that while the UISA is always adhered to there can be VEA and OEA variations that the document does not cover. But it also says that the "general-purpose" PowerPC microprocessors comply with the document. In its own words...
>
Right, this is the same with the current version of ISA. Book-3S describes what was called the OEA at one point. In any event, your machine (a PowerPC 970) certainly supports the instruction.
-Nathan
More information about the freebsd-ppc
mailing list