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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-ppc64/] [memory.h] - Blame information for rev 1275

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#ifndef _ASM_PPC64_MEMORY_H_ 
2
#define _ASM_PPC64_MEMORY_H_ 
3
 
4
/*
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version
8
 * 2 of the License, or (at your option) any later version.
9
 */
10
 
11
#include <linux/config.h>
12
 
13
/*
14
 * Arguably the bitops and *xchg operations don't imply any memory barrier
15
 * or SMP ordering, but in fact a lot of drivers expect them to imply
16
 * both, since they do on x86 cpus.
17
 */
18
#ifdef CONFIG_SMP
19
#define EIEIO_ON_SMP    "eieio\n"
20
#define ISYNC_ON_SMP    "\n\tisync"
21
#else
22
#define EIEIO_ON_SMP
23
#define ISYNC_ON_SMP
24
#endif
25
 
26
static inline void eieio(void)
27
{
28
        __asm__ __volatile__ ("eieio" : : : "memory");
29
}
30
 
31
static inline void isync(void)
32
{
33
        __asm__ __volatile__ ("isync" : : : "memory");
34
}
35
 
36
#ifdef CONFIG_SMP
37
#define eieio_on_smp()  eieio()
38
#define isync_on_smp()  isync()
39
#else
40
#define eieio_on_smp()  __asm__ __volatile__("": : :"memory")
41
#define isync_on_smp()  __asm__ __volatile__("": : :"memory")
42
#endif
43
 
44
/* Macros for adjusting thread priority (hardware multi-threading) */
45
 
46
#define HMT_very_low()     asm volatile("or 31,31,31       # very low priority")
47
#define HMT_low()       asm volatile("or 1,1,1          # low priority")
48
#define HMT_medium_low()   asm volatile("or 6,6,6          # medium low priority")
49
#define HMT_medium()    asm volatile("or 2,2,2          # medium priority")
50
#define HMT_medium_high()  asm volatile("or 5,5,5          # medium high priority")
51
#define HMT_high()      asm volatile("or 3,3,3          # high priority")
52
 
53
#define HMT_VERY_LOW            "\tor   31,31,31        # very low priority\n"
54
#define HMT_LOW         "\tor   1,1,1           # low priority\n"
55
#define HMT_MEDIUM_LOW          "\tor   6,6,6           # medium low priority\n"
56
#define HMT_MEDIUM      "\tor   2,2,2           # medium priority\n"
57
#define HMT_MEDIUM_HIGH         "\tor   5,5,5           # medium high priority\n"
58
#define HMT_HIGH        "\tor   3,3,3           # high priority\n"
59
 
60
/*
61
 * Various operational modes for SMT
62
 * Off    : never run threaded
63
 * On     : always run threaded
64
 * Dynamic: Allow the system to switch modes as needed
65
 */
66
#define SMT_OFF      0
67
#define SMT_ON       1
68
#define SMT_DYNAMIC  2
69
 
70
#endif

powered by: WebSVN 2.1.0

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