Imported Upstream version 1.15.1
[deb_xorg-server.git] / hw / xfree86 / os-support / bsd / bsd_ev56.c
CommitLineData
a09e091a
JB
1
2#ifdef HAVE_XORG_CONFIG_H
3#include <xorg-config.h>
4#endif
5
6#include <X11/X.h>
7#include "input.h"
8#include "scrnintstr.h"
9#include "compiler.h"
10
11#include "xf86.h"
12#include "xf86Priv.h"
13#include "xf86_OSlib.h"
14#include "xf86OSpriv.h"
15
16#include <machine/bwx.h>
17
18/*
19 * The following functions are used only on EV56 and greater CPUs,
20 * and the assembler requires going to EV56 mode in order to emit
21 * these instructions.
22 */
23__asm(".arch ev56");
24
25int readDense8(pointer Base, register unsigned long Offset);
26int readDense16(pointer Base, register unsigned long Offset);
27int readDense32(pointer Base, register unsigned long Offset);
28void
29 writeDenseNB8(int Value, pointer Base, register unsigned long Offset);
30void
31 writeDenseNB16(int Value, pointer Base, register unsigned long Offset);
32void
33 writeDenseNB32(int Value, pointer Base, register unsigned long Offset);
34void
35 writeDense8(int Value, pointer Base, register unsigned long Offset);
36void
37 writeDense16(int Value, pointer Base, register unsigned long Offset);
38void
39 writeDense32(int Value, pointer Base, register unsigned long Offset);
40
41int
42readDense8(pointer Base, register unsigned long Offset)
43{
44 mem_barrier();
45 return (alpha_ldbu((pointer) ((unsigned long) Base + (Offset))));
46}
47
48int
49readDense16(pointer Base, register unsigned long Offset)
50{
51 mem_barrier();
52 return (alpha_ldwu((pointer) ((unsigned long) Base + (Offset))));
53}
54
55int
56readDense32(pointer Base, register unsigned long Offset)
57{
58 mem_barrier();
59 return *(volatile CARD32 *) ((unsigned long) Base + (Offset));
60}
61
62void
63writeDenseNB8(int Value, pointer Base, register unsigned long Offset)
64{
65 alpha_stb((pointer) ((unsigned long) Base + (Offset)), Value);
66}
67
68void
69writeDenseNB16(int Value, pointer Base, register unsigned long Offset)
70{
71 alpha_stw((pointer) ((unsigned long) Base + (Offset)), Value);
72}
73
74void
75writeDenseNB32(int Value, pointer Base, register unsigned long Offset)
76{
77 *(volatile CARD32 *) ((unsigned long) Base + (Offset)) = Value;
78}
79
80void
81writeDense8(int Value, pointer Base, register unsigned long Offset)
82{
83 write_mem_barrier();
84 alpha_stb((pointer) ((unsigned long) Base + (Offset)), Value);
85}
86
87void
88writeDense16(int Value, pointer Base, register unsigned long Offset)
89{
90 write_mem_barrier();
91 alpha_stw((pointer) ((unsigned long) Base + (Offset)), Value);
92}
93
94void
95writeDense32(int Value, pointer Base, register unsigned long Offset)
96{
97 write_mem_barrier();
98 *(volatile CARD32 *) ((unsigned long) Base + (Offset)) = Value;
99}