53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
/* SPDX-License-Identifier: Apache-2.0 */
|
|
/*
|
|
* Copyright (C) 2021 Synopsys, Inc. (www.synopsys.com)
|
|
*
|
|
* Author: Vineet Gupta <vgupta@synopsys.com>
|
|
*
|
|
* Top level include file provding ISA pseudo-mnemonics for use in assemmler
|
|
* and inline assembly.
|
|
*
|
|
* - Helps code reuse across ARC64/ARC32/ARCv2
|
|
* e.g. "LDR" maps to 'LD' on 32-bit ISA, 'LDL' on 64-bit ARCv2/ARC64
|
|
*
|
|
* - Provides emulation with multiple instructions if the case be
|
|
* e.g. "DBNZ" implemented using 'SUB' and 'BRNE'
|
|
*
|
|
* - Looks more complex than it really is: mainly because Kconfig defines
|
|
* are not "honored" in inline assembly. So each varaint is unconditional
|
|
* code in a standalone file with Kconfig based #ifdef'ry here. During the
|
|
* build process, the "C" preprocessor runs through this file, leaving
|
|
* just the final variant include in code fed to compiler/assembler.
|
|
*/
|
|
|
|
#ifndef __ASM_ARC_ASM_H
|
|
#define __ASM_ARC_ASM_H 1
|
|
|
|
#ifdef _ASMLANGUAGE
|
|
|
|
#if defined(CONFIG_ISA_ARCV3) && defined(CONFIG_64BIT)
|
|
#define ARC_PTR .xword
|
|
#define ARC_REGSZ 8
|
|
#define ARC_REGSHIFT 3
|
|
#include "asm-macro-64-bit-gnu.h"
|
|
#else
|
|
#define ARC_PTR .word
|
|
#define ARC_REGSZ 4
|
|
#define ARC_REGSHIFT 2
|
|
|
|
#if defined(__CCAC__)
|
|
#include "asm-macro-32-bit-mwdt.h"
|
|
#else
|
|
#include "asm-macro-32-bit-gnu.h"
|
|
#endif /* defined(__CCAC__) */
|
|
|
|
#endif
|
|
|
|
#else /* !_ASMLANGUAGE */
|
|
|
|
#error "asm-compat macroses used not in assembler code!"
|
|
|
|
#endif /* _ASMLANGUAGE */
|
|
|
|
#endif
|