The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/include/asm-mips64/sgiarcs.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * This file is subject to the terms and conditions of the GNU General Public
    3  * License.  See the file "COPYING" in the main directory of this archive
    4  * for more details.
    5  *
    6  * ARC firmware interface defines.
    7  *
    8  * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
    9  * Copyright (C) 1999, 2001 Ralf Baechle (ralf@gnu.org)
   10  * Copyright (C) 1999 Silicon Graphics, Inc.
   11  */
   12 #ifndef _ASM_SGIARCS_H
   13 #define _ASM_SGIARCS_H
   14 
   15 #include <linux/config.h>
   16 #include <asm/types.h>
   17 #include <asm/arc/types.h>
   18 
   19 /* Various ARCS error codes. */
   20 #define PROM_ESUCCESS                   0x00
   21 #define PROM_E2BIG                      0x01
   22 #define PROM_EACCESS                    0x02
   23 #define PROM_EAGAIN                     0x03
   24 #define PROM_EBADF                      0x04
   25 #define PROM_EBUSY                      0x05
   26 #define PROM_EFAULT                     0x06
   27 #define PROM_EINVAL                     0x07
   28 #define PROM_EIO                        0x08
   29 #define PROM_EISDIR                     0x09
   30 #define PROM_EMFILE                     0x0a
   31 #define PROM_EMLINK                     0x0b
   32 #define PROM_ENAMETOOLONG               0x0c
   33 #define PROM_ENODEV                     0x0d
   34 #define PROM_ENOENT                     0x0e
   35 #define PROM_ENOEXEC                    0x0f
   36 #define PROM_ENOMEM                     0x10
   37 #define PROM_ENOSPC                     0x11
   38 #define PROM_ENOTDIR                    0x12
   39 #define PROM_ENOTTY                     0x13
   40 #define PROM_ENXIO                      0x14
   41 #define PROM_EROFS                      0x15
   42 /* SGI ARCS specific errno's. */
   43 #define PROM_EADDRNOTAVAIL              0x1f
   44 #define PROM_ETIMEDOUT                  0x20
   45 #define PROM_ECONNABORTED               0x21
   46 #define PROM_ENOCONNECT                 0x22
   47 
   48 /* Device classes, types, and identifiers for prom
   49  * device inventory queries.
   50  */
   51 enum linux_devclass {
   52         system, processor, cache, adapter, controller, peripheral, memory
   53 };
   54 
   55 enum linux_devtypes {
   56         /* Generic stuff. */
   57         Arc, Cpu, Fpu,
   58 
   59         /* Primary insn and data caches. */
   60         picache, pdcache,
   61 
   62         /* Secondary insn, data, and combined caches. */
   63         sicache, sdcache, sccache,
   64 
   65         memdev, eisa_adapter, tc_adapter, scsi_adapter, dti_adapter,
   66         multifunc_adapter, dsk_controller, tp_controller, cdrom_controller,
   67         worm_controller, serial_controller, net_controller, disp_controller,
   68         parallel_controller, ptr_controller, kbd_controller, audio_controller,
   69         misc_controller, disk_peripheral, flpy_peripheral, tp_peripheral,
   70         modem_peripheral, monitor_peripheral, printer_peripheral,
   71         ptr_peripheral, kbd_peripheral, term_peripheral, line_peripheral,
   72         net_peripheral, misc_peripheral, anon
   73 };
   74 
   75 enum linux_identifier {
   76         bogus, ronly, removable, consin, consout, input, output
   77 };
   78 
   79 /* A prom device tree component. */
   80 struct linux_component {
   81         enum linux_devclass     class;  /* node class */
   82         enum linux_devtypes     type;   /* node type */
   83         enum linux_identifier   iflags; /* node flags */
   84         USHORT                  vers;   /* node version */
   85         USHORT                  rev;    /* node revision */
   86         ULONG                   key;    /* completely magic */
   87         ULONG                   amask;  /* XXX affinity mask??? */
   88         ULONG                   cdsize; /* size of configuration data */
   89         ULONG                   ilen;   /* length of string identifier */
   90         _PULONG                 iname;  /* string identifier */
   91 };
   92 typedef struct linux_component pcomponent;
   93 
   94 struct linux_sysid {
   95         char vend[8], prod[8];
   96 };
   97 
   98 /* ARCS prom memory descriptors. */
   99 enum arcs_memtypes {
  100         arcs_eblock,  /* exception block */
  101         arcs_rvpage,  /* ARCS romvec page */
  102         arcs_fcontig, /* Contiguous and free */
  103         arcs_free,    /* Generic free memory */
  104         arcs_bmem,    /* Borken memory, don't use */
  105         arcs_prog,    /* A loaded program resides here */
  106         arcs_atmp,    /* ARCS temporary storage area, wish Sparc OpenBoot told this */
  107         arcs_aperm,   /* ARCS permanent storage... */
  108 };
  109 
  110 /* ARC has slightly different types than ARCS */
  111 enum arc_memtypes {
  112         arc_eblock,  /* exception block */
  113         arc_rvpage,  /* romvec page */
  114         arc_free,    /* Generic free memory */
  115         arc_bmem,    /* Borken memory, don't use */
  116         arc_prog,    /* A loaded program resides here */
  117         arc_atmp,    /* temporary storage area */
  118         arc_aperm,   /* permanent storage */
  119         arc_fcontig, /* Contiguous and free */
  120 };
  121 
  122 union linux_memtypes {
  123     enum arcs_memtypes arcs;
  124     enum arc_memtypes arc;
  125 };
  126 
  127 struct linux_mdesc {
  128         union linux_memtypes type;
  129         ULONG base;
  130         ULONG pages;
  131 };
  132 
  133 /* Time of day descriptor. */
  134 struct linux_tinfo {
  135         unsigned short yr;
  136         unsigned short mnth;
  137         unsigned short day;
  138         unsigned short hr;
  139         unsigned short min;
  140         unsigned short sec;
  141         unsigned short msec;
  142 };
  143 
  144 /* ARCS virtual dirents. */
  145 struct linux_vdirent {
  146         ULONG namelen;
  147         unsigned char attr;
  148         char fname[32]; /* XXX imperical, should be a define */
  149 };
  150 
  151 /* Other stuff for files. */
  152 enum linux_omode {
  153         rdonly, wronly, rdwr, wronly_creat, rdwr_creat,
  154         wronly_ssede, rdwr_ssede, dirent, dirent_creat
  155 };
  156 
  157 enum linux_seekmode {
  158         absolute, relative
  159 };
  160 
  161 enum linux_mountops {
  162         media_load, media_unload
  163 };
  164 
  165 /* This prom has a bolixed design. */
  166 struct linux_bigint {
  167 #ifdef __MIPSEL__
  168         u32 lo;
  169         s32 hi;
  170 #else /* !(__MIPSEL__) */
  171         s32 hi;
  172         u32 lo;
  173 #endif
  174 };
  175 
  176 struct linux_finfo {
  177         struct linux_bigint   begin;
  178         struct linux_bigint   end;
  179         struct linux_bigint   cur;
  180         enum linux_devtypes   dtype;
  181         unsigned long         namelen;
  182         unsigned char         attr;
  183         char                  name[32]; /* XXX imperical, should be define */
  184 };
  185 
  186 /* This describes the vector containing function pointers to the ARC
  187    firmware functions.  */
  188 struct linux_romvec {
  189         LONG    load;                   /* Load an executable image. */
  190         LONG    invoke;                 /* Invoke a standalong image. */
  191         LONG    exec;                   /* Load and begin execution of a
  192                                            standalone image. */
  193         LONG    halt;                   /* Halt the machine. */
  194         LONG    pdown;                  /* Power down the machine. */
  195         LONG    restart;                /* XXX soft reset??? */
  196         LONG    reboot;                 /* Reboot the machine. */
  197         LONG    imode;                  /* Enter PROM interactive mode. */
  198         LONG    _unused1;               /* Was ReturnFromMain(). */
  199 
  200         /* PROM device tree interface. */
  201         LONG    next_component;
  202         LONG    child_component;
  203         LONG    parent_component;
  204         LONG    component_data;
  205         LONG    child_add;
  206         LONG    comp_del;
  207         LONG    component_by_path;
  208 
  209         /* Misc. stuff. */
  210         LONG    cfg_save;
  211         LONG    get_sysid;
  212 
  213         /* Probing for memory. */
  214         LONG    get_mdesc;
  215         LONG    _unused2;               /* was Signal() */
  216 
  217         LONG    get_tinfo;
  218         LONG    get_rtime;
  219 
  220         /* File type operations. */
  221         LONG    get_vdirent;
  222         LONG    open;
  223         LONG    close;
  224         LONG    read;
  225         LONG    get_rstatus;
  226         LONG    write;
  227         LONG    seek;
  228         LONG    mount;
  229 
  230         /* Dealing with firmware environment variables. */
  231         LONG    get_evar;
  232         LONG    set_evar;
  233 
  234         LONG    get_finfo;
  235         LONG    set_finfo;
  236 
  237         /* Miscellaneous. */
  238         LONG    cache_flush;
  239 };
  240 
  241 /* The SGI ARCS parameter block is in a fixed location for standalone
  242  * programs to access PROM facilities easily.
  243  */
  244 typedef struct _SYSTEM_PARAMETER_BLOCK {
  245         ULONG                   magic;          /* magic cookie */
  246 #define PROMBLOCK_MAGIC      0x53435241
  247 
  248         ULONG                   len;            /* length of parm block */
  249         USHORT                  ver;            /* ARCS firmware version */
  250         USHORT                  rev;            /* ARCS firmware revision */
  251         _PLONG                  rs_block;       /* Restart block. */
  252         _PLONG                  dbg_block;      /* Debug block. */
  253         _PLONG                  gevect;         /* XXX General vector??? */
  254         _PLONG                  utlbvect;       /* XXX UTLB vector??? */
  255         ULONG                   rveclen;        /* Size of romvec struct. */
  256         _PVOID                  romvec;         /* Function interface. */
  257         ULONG                   pveclen;        /* Length of private vector. */
  258         _PVOID                  pvector;        /* Private vector. */
  259         ULONG                   adap_cnt;       /* Adapter count. */
  260         ULONG                   adap_typ0;      /* First adapter type. */
  261         ULONG                   adap_vcnt0;     /* Adapter 0 vector count. */
  262         _PVOID                  adap_vector;    /* Adapter 0 vector ptr. */
  263         ULONG                   adap_typ1;      /* Second adapter type. */
  264         ULONG                   adap_vcnt1;     /* Adapter 1 vector count. */
  265         _PVOID                  adap_vector1;   /* Adapter 1 vector ptr. */
  266         /* More adapter vectors go here... */
  267 } SYSTEM_PARAMETER_BLOCK, *PSYSTEM_PARAMETER_BLOCK;
  268 
  269 #define PROMBLOCK ((PSYSTEM_PARAMETER_BLOCK) (int)0xA0001000)
  270 #define ROMVECTOR ((struct linux_romvec *) (long)(PROMBLOCK)->romvec)
  271 
  272 /* Cache layout parameter block. */
  273 union linux_cache_key {
  274         struct param {
  275 #ifdef __MIPSEL__
  276                 unsigned short size;
  277                 unsigned char lsize;
  278                 unsigned char bsize;
  279 #else /* !(__MIPSEL__) */
  280                 unsigned char bsize;
  281                 unsigned char lsize;
  282                 unsigned short size;
  283 #endif
  284         } info;
  285         unsigned long allinfo;
  286 };
  287 
  288 /* Configuration data. */
  289 struct linux_cdata {
  290         char *name;
  291         int mlen;
  292         enum linux_devtypes type;
  293 };
  294 
  295 /* Common SGI ARCS firmware file descriptors. */
  296 #define SGIPROM_STDIN     0
  297 #define SGIPROM_STDOUT    1
  298 
  299 /* Common SGI ARCS firmware file types. */
  300 #define SGIPROM_ROFILE    0x01  /* read-only file */
  301 #define SGIPROM_HFILE     0x02  /* hidden file */
  302 #define SGIPROM_SFILE     0x04  /* System file */
  303 #define SGIPROM_AFILE     0x08  /* Archive file */
  304 #define SGIPROM_DFILE     0x10  /* Directory file */
  305 #define SGIPROM_DELFILE   0x20  /* Deleted file */
  306 
  307 /* SGI ARCS boot record information. */
  308 struct sgi_partition {
  309         unsigned char flag;
  310 #define SGIPART_UNUSED 0x00
  311 #define SGIPART_ACTIVE 0x80
  312 
  313         unsigned char shead, ssect, scyl; /* unused */
  314         unsigned char systype; /* OS type, Irix or NT */
  315         unsigned char ehead, esect, ecyl; /* unused */
  316         unsigned char rsect0, rsect1, rsect2, rsect3;
  317         unsigned char tsect0, tsect1, tsect2, tsect3;
  318 };
  319 
  320 #define SGIBBLOCK_MAGIC   0xaa55
  321 #define SGIBBLOCK_MAXPART 0x0004
  322 
  323 struct sgi_bootblock {
  324         unsigned char _unused[446];
  325         struct sgi_partition partitions[SGIBBLOCK_MAXPART];
  326         unsigned short magic;
  327 };
  328 
  329 /* BIOS parameter block. */
  330 struct sgi_bparm_block {
  331         unsigned short bytes_sect;    /* bytes per sector */
  332         unsigned char  sect_clust;    /* sectors per cluster */
  333         unsigned short sect_resv;     /* reserved sectors */
  334         unsigned char  nfats;         /* # of allocation tables */
  335         unsigned short nroot_dirents; /* # of root directory entries */
  336         unsigned short sect_volume;   /* sectors in volume */
  337         unsigned char  media_type;    /* media descriptor */
  338         unsigned short sect_fat;      /* sectors per allocation table */
  339         unsigned short sect_track;    /* sectors per track */
  340         unsigned short nheads;        /* # of heads */
  341         unsigned short nhsects;       /* # of hidden sectors */
  342 };
  343 
  344 struct sgi_bsector {
  345         unsigned char   jmpinfo[3];
  346         unsigned char   manuf_name[8];
  347         struct sgi_bparm_block info;
  348 };
  349 
  350 /* Debugging block used with SGI symmon symbolic debugger. */
  351 #define SMB_DEBUG_MAGIC   0xfeeddead
  352 struct linux_smonblock {
  353         unsigned long   magic;
  354         void            (*handler)(void);  /* Breakpoint routine. */
  355         unsigned long   dtable_base;       /* Base addr of dbg table. */
  356         int             (*printf)(const char *fmt, ...);
  357         unsigned long   btable_base;       /* Breakpoint table. */
  358         unsigned long   mpflushreqs;       /* SMP cache flush request list. */
  359         unsigned long   ntab;              /* Name table. */
  360         unsigned long   stab;              /* Symbol table. */
  361         int             smax;              /* Max # of symbols. */
  362 };
  363 
  364 /*
  365  * Macros for calling a 32-bit ARC implementation from 64-bit code
  366  */
  367 
  368 #if defined(CONFIG_MIPS64) && defined(CONFIG_ARC32)
  369 
  370 #define __arc_clobbers                                                  \
  371         "$2","$3" /* ... */, "$8","$9","$10","$11",                     \
  372         "$12","$13","$14","$15","$16","$24","25","$31"
  373 
  374 #define ARC_CALL0(dest)                                                 \
  375 ({      long __res;                                                     \
  376         long __vec = (long) romvec->dest;                               \
  377         __asm__ __volatile__(                                           \
  378         "dsubu\t$29, 32\n\t"                                            \
  379         "jalr\t%1\n\t"                                                  \
  380         "daddu\t$29, 32\n\t"                                            \
  381         "move\t%0, $2"                                                  \
  382         : "=r" (__res), "=r" (__vec)                                    \
  383         : "1" (__vec)                                                   \
  384         : __arc_clobbers, "$4","$5","$6","$7");                         \
  385         (unsigned long) __res;                                          \
  386 })
  387 
  388 #define ARC_CALL1(dest,a1)                                              \
  389 ({      long __res;                                                     \
  390         register signed int __a1 __asm__("$4") = (int) (long) (a1);     \
  391         long __vec = (long) romvec->dest;                               \
  392         __asm__ __volatile__(                                           \
  393         "dsubu\t$29, 32\n\t"                                            \
  394         "jalr\t%1\n\t"                                                  \
  395         "daddu\t$29, 32\n\t"                                            \
  396         "move\t%0, $2"                                                  \
  397         : "=r" (__res), "=r" (__vec)                                    \
  398         : "1" (__vec), "r" (__a1)                                       \
  399         : __arc_clobbers, "$5","$6","$7");                              \
  400         (unsigned long) __res;                                          \
  401 })
  402 
  403 #define ARC_CALL2(dest,a1,a2)                                           \
  404 ({      long __res;                                                     \
  405         register signed int __a1 __asm__("$4") = (int) (long) (a1);     \
  406         register signed int __a2 __asm__("$5") = (int) (long) (a2);     \
  407         long __vec = (long) romvec->dest;                               \
  408         __asm__ __volatile__(                                           \
  409         "dsubu\t$29, 32\n\t"                                            \
  410         "jalr\t%1\n\t"                                                  \
  411         "daddu\t$29, 32\n\t"                                            \
  412         "move\t%0, $2"                                                  \
  413         : "=r" (__res), "=r" (__vec)                                    \
  414         : "1" (__vec), "r" (__a1), "r" (__a2)                           \
  415         : __arc_clobbers, "$6","$7");                                   \
  416         __res;                                                          \
  417 })
  418 
  419 #define ARC_CALL3(dest,a1,a2,a3)                                        \
  420 ({      long __res;                                                     \
  421         register signed int __a1 __asm__("$4") = (int) (long) (a1);     \
  422         register signed int __a2 __asm__("$5") = (int) (long) (a2);     \
  423         register signed int __a3 __asm__("$6") = (int) (long) (a3);     \
  424         long __vec = (long) romvec->dest;                               \
  425         __asm__ __volatile__(                                           \
  426         "dsubu\t$29, 32\n\t"                                            \
  427         "jalr\t%1\n\t"                                                  \
  428         "daddu\t$29, 32\n\t"                                            \
  429         "move\t%0, $2"                                                  \
  430         : "=r" (__res), "=r" (__vec)                                    \
  431         : "1" (__vec), "r" (__a1), "r" (__a2), "r" (__a3)               \
  432         : __arc_clobbers, "$7");                                        \
  433         __res;                                                          \
  434 })
  435 
  436 #define ARC_CALL4(dest,a1,a2,a3,a4)                                     \
  437 ({      long __res;                                                     \
  438         register signed int __a1 __asm__("$4") = (int) (long) (a1);     \
  439         register signed int __a2 __asm__("$5") = (int) (long) (a2);     \
  440         register signed int __a3 __asm__("$6") = (int) (long) (a3);     \
  441         register signed int __a4 __asm__("$7") = (int) (long) (a4);     \
  442         long __vec = (long) romvec->dest;                               \
  443         __asm__ __volatile__(                                           \
  444         "dsubu\t$29, 32\n\t"                                            \
  445         "jalr\t%1\n\t"                                                  \
  446         "daddu\t$29, 32\n\t"                                            \
  447         "move\t%0, $2"                                                  \
  448         : "=r" (__res), "=r" (__vec)                                    \
  449         : "1" (__vec), "r" (__a1), "r" (__a2), "r" (__a3),              \
  450           "r" (__a4)                                                    \
  451         : __arc_clobbers);                                              \
  452         __res;                                                          \
  453 })
  454 
  455 #define ARC_CALL5(dest,a1,a2,a3,a4,a5)                                  \
  456 ({      long __res;                                                     \
  457         register signed int __a1 __asm__("$4") = (int) (long) (a1);     \
  458         register signed int __a2 __asm__("$5") = (int) (long) (a2);     \
  459         register signed int __a3 __asm__("$6") = (int) (long) (a3);     \
  460         register signed int __a4 __asm__("$7") = (int) (long) (a4);     \
  461         register signed int __a5 = (a5);                                \
  462         long __vec = (long) romvec->dest;                               \
  463         __asm__ __volatile__(                                           \
  464         "dsubu\t$29, 32\n\t"                                            \
  465         "sw\t%6, 16($29)\n\t"                                           \
  466         "jalr\t%1\n\t"                                                  \
  467         "daddu\t$29, 32\n\t"                                            \
  468         "move\t%0, $2"                                                  \
  469         : "=r" (__res), "=r" (__vec)                                    \
  470         : "1" (__vec),                                                  \
  471           "r" (__a1), "r" (__a2), "r" (__a3), "r" (__a4),               \
  472           "r" (__a5)                                                    \
  473         : __arc_clobbers);                                              \
  474         __res;                                                          \
  475 })
  476 
  477 #endif /* defined(CONFIG_MIPS64) && defined(CONFIG_ARC32) */
  478 
  479 #if (defined(CONFIG_MIPS32) && defined(CONFIG_ARC32)) ||                \
  480     (defined(CONFIG_MIPS64) && defined(CONFIG_ARC64))
  481 
  482 #define ARC_CALL0(dest)                                                 \
  483 ({      long __res;                                                     \
  484         long (*__vec)(void) = (void *) romvec->dest;                    \
  485                                                                         \
  486         __res = __vec();                                                \
  487         __res;                                                          \
  488 })
  489 
  490 #define ARC_CALL1(dest,a1)                                              \
  491 ({      long __res;                                                     \
  492         long __a1 = (long) (a1);                                        \
  493         long (*__vec)(long) = (void *) romvec->dest;                    \
  494                                                                         \
  495         __res = __vec(__a1);                                            \
  496         __res;                                                          \
  497 })
  498 
  499 #define ARC_CALL2(dest,a1,a2)                                           \
  500 ({      long __res;                                                     \
  501         long __a1 = (long) (a1);                                        \
  502         long __a2 = (long) (a2);                                        \
  503         long (*__vec)(long, long) = (void *) romvec->dest;              \
  504                                                                         \
  505         __res = __vec(__a1, __a2);                                      \
  506         __res;                                                          \
  507 })
  508 
  509 #define ARC_CALL3(dest,a1,a2,a3)                                        \
  510 ({      long __res;                                                     \
  511         long __a1 = (long) (a1);                                        \
  512         long __a2 = (long) (a2);                                        \
  513         long __a3 = (long) (a3);                                        \
  514         long (*__vec)(long, long, long) = (void *) romvec->dest;        \
  515                                                                         \
  516         __res = __vec(__a1, __a2, __a3);                                \
  517         __res;                                                          \
  518 })
  519 
  520 #define ARC_CALL4(dest,a1,a2,a3,a4)                                     \
  521 ({      long __res;                                                     \
  522         long __a1 = (long) (a1);                                        \
  523         long __a2 = (long) (a2);                                        \
  524         long __a3 = (long) (a3);                                        \
  525         long __a4 = (long) (a4);                                        \
  526         long (*__vec)(long, long, long, long) = (void *) romvec->dest;  \
  527                                                                         \
  528         __res = __vec(__a1, __a2, __a3, __a4);                          \
  529         __res;                                                          \
  530 })
  531 
  532 #define ARC_CALL5(dest,a1,a2,a3,a4,a5)                                  \
  533 ({      long __res;                                                     \
  534         long __a1 = (long) (a1);                                        \
  535         long __a2 = (long) (a2);                                        \
  536         long __a3 = (long) (a3);                                        \
  537         long __a4 = (long) (a4);                                        \
  538         long __a5 = (long) (a5);                                        \
  539         long (*__vec)(long, long, long, long, long);                    \
  540         __vec = (void *) romvec->dest;                                  \
  541                                                                         \
  542         __res = __vec(__a1, __a2, __a3, __a4, __a5);                    \
  543         __res;                                                          \
  544 })
  545 #endif /* both kernel and ARC either 32-bit or 64-bit */
  546 
  547 #endif /* _ASM_SGIARCS_H */

Cache object: 8ab8ae836bed335c25f819d868449c03


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.