/*
 * Copyright (c) 2023 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* Binutiles 2.28 */
/* https://sourceware.org/binutils/docs-2.28/as/CFI-directives.html#CFI-directives */
CFI_DEFINE( sections,             , 1, List,        Undef,     Undef )
CFI_DEFINE( startproc,            , 0, Undef,       Undef,     Undef )
CFI_DEFINE( startproc,     _simple, 1, String,      Undef,     Undef ) /* "simple" */
CFI_DEFINE( endproc,              , 0, Undef,       Undef,     Undef )
CFI_DEFINE( personality,  _default, 1, Immediate,   Undef,     Undef )
CFI_DEFINE( personality,   _symbol, 2, Immediate,   String,    Undef )
CFI_DEFINE( personality, _constant, 2, Immediate,   Immediate, Undef )
CFI_DEFINE( personality_id,       , 1, StImmediate, Undef,     Undef )
CFI_DEFINE( fde_data,             , 1, List,        Undef,     Undef )
CFI_DEFINE( lsda,         _default, 1, Immediate,   Undef,     Undef )
CFI_DEFINE( lsda,           _label, 2, Immediate,   BBAddress, Undef )
CFI_DEFINE( lsda,        _constant, 2, Immediate,   Immediate, Undef )
CFI_DEFINE( inline_lsda,          , 0, Undef,       Undef,     Undef )
CFI_DEFINE( inline_lsda,    _align, 1, Immediate,   Undef,     Undef ) /* power of 2 */
CFI_DEFINE( def_cfa,              , 2, Register,    Immediate, Undef )
CFI_DEFINE( def_cfa_register,     , 1, Register,    Undef,     Undef )
CFI_DEFINE( def_cfa_offset,       , 1, Immediate,   Undef,     Undef )
CFI_DEFINE( adjust_cfa_offset,    , 1, Immediate,   Undef,     Undef )
CFI_DEFINE( offset,               , 2, Register,    Immediate, Undef )
CFI_DEFINE( val_offset,           , 2, Register,    Immediate, Undef )
CFI_DEFINE( rel_offset,           , 2, Register,    Immediate, Undef )
CFI_DEFINE( register,             , 2, Register,    Register,  Undef )
CFI_DEFINE( restore,              , 1, Register,    Undef,     Undef )
CFI_DEFINE( undefined,            , 1, Register,    Undef,     Undef )
CFI_DEFINE( same_value,           , 1, Register,    Undef,     Undef )
CFI_DEFINE( remember_state,       , 0, Undef,       Undef,     Undef )
CFI_DEFINE( restore_state,        , 0, Undef,       Undef,     Undef )
CFI_DEFINE( return_column,        , 1, Register,    Undef,     Undef )
CFI_DEFINE( signal_frame,         , 0, Undef,       Undef,     Undef )
CFI_DEFINE( window_save,          , 0, Undef,       Undef,     Undef )
CFI_DEFINE( escape,               , 2, StImmediate, List /*expression[, ...]*/, Undef )
CFI_DEFINE( val_encoded_addr,     , 3, Register,    Immediate, StImmediate )

ARM_DIRECTIVES_DEFINE( save,      , 1, List,        Undef,     Undef )
ARM_DIRECTIVES_DEFINE( vsave,     , 1, List,        Undef,     Undef )
ARM_DIRECTIVES_DEFINE( setfp,     , 3, Register,    Register, Immediate )
ARM_DIRECTIVES_DEFINE( pad,       , 1, Immediate,   Undef,     Undef )
