10.4 BNF specification for CPI files

CPI files have the following BNF specification:

                 <CPIFile> ::= <Statements>
              <Statements> ::= <Statement> <Statements>
                             | <Statement>
               <Statement> ::= <Comment>
                             | <DefineCpiStatement>
                             | <DefaultsStatement>
                             | <DefineCpuTypeStatement>
                             | <MapCpuStatement>
                             | <DefineClassStatement>
                             | <DefineGroupStatement>
                             | <IncludeStatement>
                             | <DefineMixInStatement>
       <DefineCpiStatement ::= "DefineCpi" <InstructionClassOrGroup> <DefineCpiAttributes> <EOL>
       <DefaultsStatement> ::= "Defaults" <DefineCpiAttributes> <EOL>
   <DefineCpuTypeStatement ::= "DefineCpuType" <UserCpuType> <DefineCpuTypeAttributes> <EOL>
          <MapCpuStatement ::= "MapCpu" <CpuInstance> <MapCpuAttributes> <EOL>
     <DefineClassStatement ::= "DefineClass" <InstructionClass> <DefineClassAttributes> <EOL>
     <DefineGroupStatement ::= "DefineGroup" <InstructionGroup> <DefineGroupAttributes> <EOL>
        <IncludeStatement> ::= "Include" <IncludeAttributes> <EOL>
    <DefineMixInStatement> ::= "DefineMixIn" <MixInType> <DefineMixInAttributes> <EOL>
     <DefineCpiAttributes> ::= <DefineCpiAttribute> <DefineCpiAttributes>
                             | <DefineCpiAttribute>
      <DefineCpiAttribute> ::= <ISetAttribute>      { Mandatory }
                             | <CpuTypeAttribute>   { Optional }
                             | <CpiAttribute>       { Mandatory }
           <ISetAttribute> ::= "ISet" "=" <ISetOrStar>
              <ISetOrStar> ::= <ISet> | "*"
                    <ISet> ::= "A32" | "A64" | "Thumb" | "T2EE"
        <CpuTypeAttribute> ::= "CpuType" "=" <CpuType>
                 <CpuType> ::= "ARM_Cortex-A12" | "ARM_Cortex-A17"
                             | "ARM_Cortex-A15" | "ARM_Cortex-A7"
                             | "ARM_Cortex-A5MP" | "ARM_Cortex-M4"
                             | "ARM_Cortex-M7" | "ARM_Cortex-A57"
                             | "ARM_Cortex-A72" | "ARM_Cortex-A53"
                             | "ARM_Cortex-R7" | "ARM_CortexR5"
                             | "ARM_Cortex-A9MP" | "ARM_Cortex-A9UP"
                             | "ARM_Cortex-A8" | "ARM_Cortex-R4"
                             | "ARM_Cortex-M3" | "ARM_Cortex-M0+"
                             | "ARM_Cortex-M0" | <UserCpuType> | "*"
            <CpiAttribute> ::= "Cpi" "=" <Cpi>
 <DefineCpuTypeAttributes> ::= <ISetsAttribute>
          <ISetsAttribute> ::= "ISets" "=" <ISetsOrStar>
             <ISetsOrStar> ::= <ISets> | "*"
                   <ISets> ::= <ISet> "," <ISets> | <ISet>
        <MapCpuAttributes> ::= <ToCpuTypeAttribute>
      <ToCpuTypeAttribute> ::= "ToCpuType" "=" <CpuType>
   <DefineClassAttributes> ::= <DefineClassAttribute> <DefineClassAttributes>
                             | <DefineClassAttribute>
    <DefineClassAttribute> ::= <MaskAttribute>              { Mandatory }
                             | <ValueAttribute>             { Mandatory }
                             | <ProhibitedPairsAttribute>   { Optional }
                             | <ISetAttribute>              { Mandatory }
                             | <CpuTypeAttribute>           { Optional }
           <MaskAttribute> ::= "Mask" "=" <Mask>
          <ValueAttribute> ::= "Value" "=" <Value>
<ProhibitedPairsAttribute> ::= <ProhibitedPairAttribute> <ProhibitedPairsAttribute>
                             | <ProhibitedPairAttribute>
  <ProhibitedPairAttribute> ::= <ProhibitedMaskAttribute> <ProhibitedValueAttribute>
 <ProhibitedMaskAttribute> ::= "ProhibitedMask" "=" <Mask>
<ProhibitedValueAttribute> ::= "ProhibitedValue" "=" <Value>
   <DefineGroupAttributes> ::= <DefineGroupAttribute> <DefineGroupAttributes>
                             | <DefineGroupAttribute>
    <DefineGroupAttribute> ::= <ClassesAttribute>          { Mandatory }
                             | <ISetAttribute>             { Mandatory }
                             | <CpuTypeAttribute>          { Optional }
                             | <MixAttribute>              { Optional }
        <ClassesAttribute> ::= "Classes" "=" <InstructionClassOrGroups>
        <MixAttribute>     ::= "Mix" "=" <MixInTypes>
<InstructionClassOrGroups> ::= <InstructionClassOrGroup> "," <InstructionClassOrGroups>
      <instructionClasses> ::= <InstructionClass>
 <InstructionClassOrGroup> ::= <InstructionClass>
                             | <InstructionGroup>
              <MixInTypes> ::= <MixInType> "," <MixInTypes>
               <MixInType> ::= <Symbol>
       <IncludeAttributes> ::= <FilePathAttribute>
       <FilePathAttribute> ::= "FilePath" "=" <FilePath>
   <DefineMixInAttributes> ::= <DefineMixInAttribute> <DefineClassAttributes>
    <DefineMixInAttribute> ::= <MaskAttribute>
                             | <ValueAttribute>
                             | <SuffixAttribute>
         <SuffixAttribute> ::= "Suffix" "=" <String>
                <FilePath> ::= <String>
        <InstructionClass> ::= <Symbol>
        <InstructionGroup> ::= <Symbol>
             <UserCpuType> ::= <Symbol>
             <CpuInstance> ::= <QuotedString>       { Supports use of wild cards }
                     <Cpi> ::= <Double>
                    <Mask> ::= <UnsignedInteger>
                   <Value> ::= <UnsignedInteger>
Non-ConfidentialPDF file icon PDF versionARM 100965_1101_00_en
Copyright © 2014–2017 ARM Limited or its affiliates. All rights reserved.