uboot/arch/nios2/include/asm/system.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * (C) Copyright 2004, Psyent Corporation <www.psyent.com>
   4 * Scott McNutt <smcnutt@psyent.com>
   5 */
   6#ifndef __ASM_NIOS2_SYSTEM_H_
   7#define __ASM_NIOS2_SYSTEM_H_
   8
   9#define local_irq_enable() __asm__ __volatile__ (  \
  10        "rdctl  r8, status\n"                      \
  11        "ori    r8, r8, 1\n"                       \
  12        "wrctl  status, r8\n"                      \
  13        : : : "r8")
  14
  15#define local_irq_disable() __asm__ __volatile__ ( \
  16        "rdctl  r8, status\n"                      \
  17        "andi   r8, r8, 0xfffe\n"                  \
  18        "wrctl  status, r8\n"                      \
  19        : : : "r8")
  20
  21#define local_save_flags(x) __asm__ __volatile__ (      \
  22        "rdctl  r8, status\n"                           \
  23        "mov    %0, r8\n"                               \
  24        : "=r" (x) : : "r8", "memory")
  25
  26#define local_irq_restore(x) __asm__ __volatile__ (     \
  27        "mov    r8, %0\n"                               \
  28        "wrctl  status, r8\n"                           \
  29        : : "r" (x) : "r8", "memory")
  30
  31/* For spinlocks etc */
  32#define local_irq_save(x) do { local_save_flags(x); local_irq_disable(); } \
  33        while (0)
  34
  35#define irqs_disabled()                                 \
  36({                                                      \
  37        unsigned long flags;                            \
  38        local_save_flags(flags);                        \
  39        ((flags & NIOS2_STATUS_PIE_MSK) == 0x0);        \
  40})
  41
  42/* indirect call to go beyond 256MB limitation of toolchain */
  43#define nios2_callr(addr) __asm__ __volatile__ (        \
  44        "callr  %0"                                     \
  45        : : "r" (addr))
  46
  47void display_sysid(void);
  48
  49#endif /* __ASM_NIOS2_SYSTEM_H */
  50