Subversion Repositories Kolibri OS

Rev

Rev 4419 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4419 clevermous 1
include 'kglobals.inc'
2
 
3
PG_UNMAP            equ 0x000
4
PG_MAP              equ 0x001
5
PG_WRITE            equ 0x002
6
PG_SW               equ 0x003
7
PG_USER             equ 0x005
8
PG_UW               equ 0x007
9
PG_NOCACHE          equ 0x018
10
PG_LARGE            equ 0x080
11
PG_GLOBAL           equ 0x100
12
 
13
DRV_ENTRY    equ  1
14
DRV_EXIT     equ -1
15
 
16
struct  LHEAD
17
        next            dd ?   ;next object in list
18
        prev            dd ?   ;prev object in list
19
ends
20
 
21
struct  MUTEX
22
        lhead   LHEAD
23
        count   dd ?
24
ends
25
 
26
struct  PCIDEV
27
        bk              dd ?
28
        fd              dd ?
29
        vendor_device_id dd ?
30
        class           dd ?
31
        devfn           db ?
32
        bus             db ?
33
                        rb 2
34
        owner           dd ? ; pointer to SRV or 0
35
ends
36
 
4453 clevermous 37
struct IOCTL
38
        handle          dd ?
39
        io_code         dd ?
40
        input           dd ?
41
        inp_size        dd ?
42
        output          dd ?
43
        out_size        dd ?
44
ends
45
 
4419 clevermous 46
; The following macro assume that we are on uniprocessor machine.
47
; Serious work is needed for multiprocessor machines.
48
macro spin_lock_irqsave spinlock
49
{
50
        pushf
51
        cli
52
}
53
macro spin_unlock_irqrestore spinlock
54
{
55
        popf
56
}
57
macro spin_lock_irq spinlock
58
{
59
        cli
60
}
61
macro spin_unlock_irq spinlock
62
{
63
        sti
64
}
65
 
66
; \begin{diamond}[29.09.2006]
67
; may be useful for kernel debugging
68
; example 1:
69
;       dbgstr 'Hello, World!'
70
; example 2:
71
;       dbgstr 'Hello, World!', save_flags
72
macro dbgstr string*, f
73
{
74
local a
75
iglobal_nested
76
a db 'K : ',string,13,10,0
77
endg_nested
78
if ~ f eq
79
        pushfd
80
end if
81
        push    esi
82
        mov     esi, a
83
if defined SysMsgBoardStr._pe_import
84
        invoke  SysMsgBoardStr
85
else
86
        call    SysMsgBoardStr
87
end if
88
        pop     esi
89
if ~ f eq
90
        popfd
91
end if
92
}
93
; \end{diamond}[29.09.2006]
94
 
95
; MOV Immediate.
96
; Useful for things like movi eax,10:
97
; shorter than regular mov, but slightly slower,
98
; do not use it in performance-critical places.
99
macro movi dst, imm
100
{
101
if imm >= -0x80 & imm <= 0x7F
102
        push    imm
103
        pop     dst
104
else
105
        mov     dst, imm
106
end if
107
}
108
 
109
macro call name
110
{
111
if name eqtype func & defined name#._pe_import
112
err Use invoke, not call/stdcall for PE imports!
113
end if
114
        call    name
115
}