6#ifndef ZEPHYR_INCLUDE_ARCH_X86_INTEL64_ARCH_H_ 
    7#define ZEPHYR_INCLUDE_ARCH_X86_INTEL64_ARCH_H_ 
   12#if defined(CONFIG_PCIE) && !defined(_ASMLANGUAGE) 
   16#if CONFIG_ISR_STACK_SIZE != (CONFIG_ISR_SUBSTACK_SIZE * CONFIG_ISR_DEPTH) 
   17#error "Check ISR stack configuration (CONFIG_ISR_*)" 
   20#if CONFIG_ISR_SUBSTACK_SIZE % ARCH_STACK_PTR_ALIGN 
   21#error "CONFIG_ISR_SUBSTACK_SIZE must be a multiple of 16" 
   28        __asm__ 
volatile(
"movq %0, %1" 
   30                         : 
"r"(data), 
"m" (*(
volatile uint64_t *)
 
 
   39        __asm__ 
volatile(
"movq %1, %0" 
 
   51        __asm__ 
volatile (
"pushfq; cli; popq %0" : 
"=g" (key) : : 
"memory");
 
   53        return (
unsigned int) key;
 
 
   56#define ARCH_EXCEPT(reason_p) do { \ 
   58                "movq %[reason], %%rax\n\t" \ 
   61                : [reason] "i" (reason_p)); \ 
 
   66#define X86_RESERVE_IRQ(irq_p, name) \ 
   67        static TYPE_SECTION_ITERABLE(uint8_t, name, irq_alloc, name) = irq_p 
   69#define X86_RESERVE_IRQ(irq_p, name) 
   78#define ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p) \ 
   79        X86_RESERVE_IRQ(irq_p, _CONCAT(_irq_alloc_fixed, __COUNTER__)); \ 
   80        arch_irq_connect_dynamic(irq_p, priority_p,                     \ 
   81                                 (void (*)(const void *))isr_p,         \ 
 
   86#define ARCH_PCIE_IRQ_CONNECT(bdf_p, irq_p, priority_p,                 \ 
   87                              isr_p, isr_param_p, flags_p)              \ 
   88        X86_RESERVE_IRQ(irq_p, _CONCAT(_irq_alloc_fixed, __COUNTER__)); \ 
   89        pcie_connect_dynamic_irq(bdf_p, irq_p, priority_p,              \ 
   90                                 (void (*)(const void *))isr_p,         \ 
   98#define ARCH_DYNAMIC_OBJ_K_THREAD_ALIGNMENT     16 
static ALWAYS_INLINE unsigned int arch_irq_lock(void)
Definition arch.h:63
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINTPTR_TYPE__ uintptr_t
Definition stdint.h:105
uintptr_t mm_reg_t
Definition sys_io.h:20
static ALWAYS_INLINE uint64_t sys_read64(mm_reg_t addr)
Definition arch.h:35
static ALWAYS_INLINE void sys_write64(uint64_t data, mm_reg_t addr)
Definition arch.h:26