OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [LINUX_2_4_26_OR32/] [linux/] [linux-2.4/] [include/] [asm-sparc/] [asmmacro.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/* asmmacro.h: Assembler macros.
2
 *
3
 * Copyright (C) 1996 David S. Miller (davem@caipfs.rutgers.edu)
4
 */
5
 
6
#ifndef _SPARC_ASMMACRO_H
7
#define _SPARC_ASMMACRO_H
8
 
9
#include <linux/config.h>
10
#include <asm/btfixup.h>
11
#include <asm/asi.h>
12
 
13
#define GET_PROCESSOR4M_ID(reg) \
14
        rd      %tbr, %reg; \
15
        srl     %reg, 12, %reg; \
16
        and     %reg, 3, %reg;
17
 
18
#define GET_PROCESSOR4D_ID(reg) \
19
        lda     [%g0] ASI_M_VIKING_TMP1, %reg;
20
 
21
/* Blackbox */
22
#define GET_PROCESSOR_ID(reg) \
23
        sethi   %hi(___b_smp_processor_id), %reg; \
24
        sethi   %hi(boot_cpu_id), %reg; \
25
        ldub    [%reg + %lo(boot_cpu_id)], %reg;
26
 
27
#define GET_PROCESSOR_MID(reg, tmp) \
28
        rd      %tbr, %reg; \
29
        sethi   %hi(C_LABEL(mid_xlate)), %tmp; \
30
        srl     %reg, 12, %reg; \
31
        or      %tmp, %lo(C_LABEL(mid_xlate)), %tmp; \
32
        and     %reg, 3, %reg; \
33
        ldub    [%tmp + %reg], %reg;
34
 
35
#define GET_PROCESSOR_OFFSET(reg, tmp) \
36
        GET_PROCESSOR_ID(reg) \
37
        sethi   %hi(C_LABEL(cpu_offset)), %tmp; \
38
        sll     %reg, 2, %reg; \
39
        or      %tmp, %lo(C_LABEL(cpu_offset)), %tmp; \
40
        ld      [%tmp + %reg], %reg;
41
 
42
/* All trap entry points _must_ begin with this macro or else you
43
 * lose.  It makes sure the kernel has a proper window so that
44
 * c-code can be called.
45
 */
46
#define SAVE_ALL_HEAD \
47
        sethi   %hi(trap_setup), %l4; \
48
        jmpl    %l4 + %lo(trap_setup), %l6;
49
#define SAVE_ALL \
50
        SAVE_ALL_HEAD \
51
         nop;
52
 
53
/* All traps low-level code here must end with this macro. */
54
#define RESTORE_ALL b ret_trap_entry; clr %l6;
55
 
56
/* sun4 probably wants half word accesses to ASI_SEGMAP, while sun4c+
57
   likes byte accesses. These are to avoid ifdef mania. */
58
 
59
#ifdef CONFIG_SUN4
60
#define lduXa   lduha
61
#define stXa    stha
62
#else
63
#define lduXa   lduba
64
#define stXa    stba
65
#endif
66
 
67
#endif /* !(_SPARC_ASMMACRO_H) */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.