Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
2288 clevermous 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
8858 rgimad 3
;; Copyright (C) KolibriOS team 2004-2021. All rights reserved. ;;
2288 clevermous 4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
 
8
$Revision: 8869 $
9
 
10
 
7136 dunkaist 11
dpl0    =  10010000b      ; data read       dpl0
12
drw0    =  10010010b      ; data read/write dpl0
13
drw3    =  11110010b      ; data read/write dpl3
14
cpl0    =  10011010b      ; code read dpl0
15
cpl3    =  11111010b      ; code read dpl3
2288 clevermous 16
 
7136 dunkaist 17
D32     =  01000000b      ; 32bit segment
18
G32     =  10000000b      ; page gran
2288 clevermous 19
 
20
 
21
;;;;;;;;;;;;cpu_caps flags;;;;;;;;;;;;;;;;
22
 
7136 dunkaist 23
CPU_386        = 3
24
CPU_486        = 4
25
CPU_PENTIUM    = 5
26
CPU_P6         = 6
27
CPU_PENTIUM4   = 0x0F
2288 clevermous 28
 
7136 dunkaist 29
CAPS_FPU       =    00 ;on-chip x87 floating point unit
30
CAPS_VME       =    01 ;virtual-mode enhancements
31
CAPS_DE        =    02 ;debugging extensions
32
CAPS_PSE       =    03 ;page-size extensions
33
CAPS_TSC       =    04 ;time stamp counter
34
CAPS_MSR       =    05 ;model-specific registers
35
CAPS_PAE       =    06 ;physical-address extensions
36
CAPS_MCE       =    07 ;machine check exception
37
CAPS_CX8       =    08 ;CMPXCHG8B instruction
38
CAPS_APIC      =    09 ;on-chip advanced programmable
39
                       ;interrupt controller
40
;                   10 ;unused
41
CAPS_SEP       =    11 ;SYSENTER and SYSEXIT instructions
42
CAPS_MTRR      =    12 ;memory-type range registers
43
CAPS_PGE       =    13 ;page global extension
44
CAPS_MCA       =    14 ;machine check architecture
45
CAPS_CMOV      =    15 ;conditional move instructions
46
CAPS_PAT       =    16 ;page attribute table
2288 clevermous 47
 
7136 dunkaist 48
CAPS_PSE36     =    17 ;page-size extensions
49
CAPS_PSN       =    18 ;processor serial number
50
CAPS_CLFLUSH   =    19 ;CLFUSH instruction
2288 clevermous 51
 
7136 dunkaist 52
CAPS_DS        =    21 ;debug store
53
CAPS_ACPI      =    22 ;thermal monitor and software
54
                       ;controlled clock supported
55
CAPS_MMX       =    23 ;MMX instructions
56
CAPS_FXSR      =    24 ;FXSAVE and FXRSTOR instructions
57
CAPS_SSE       =    25 ;SSE instructions
58
CAPS_SSE2      =    26 ;SSE2 instructions
59
CAPS_SS        =    27 ;self-snoop
60
CAPS_HTT       =    28 ;hyper-threading technology
61
CAPS_TM        =    29 ;thermal monitor supported
62
CAPS_IA64      =    30 ;IA64 capabilities
63
CAPS_PBE       =    31 ;pending break enable
2288 clevermous 64
 
65
;ecx
7136 dunkaist 66
CAPS_SSE3      =    32 ;SSE3 instructions
67
;                   33
68
;                   34
69
CAPS_MONITOR   =    35 ;MONITOR/MWAIT instructions
70
CAPS_DS_CPL    =    36 ;
71
CAPS_VMX       =    37 ;virtual mode extensions
72
;                   38 ;
73
CAPS_EST       =    39 ;enhansed speed step
74
CAPS_TM2       =    40 ;thermal monitor2 supported
75
;                   41
76
CAPS_CID       =    42 ;
77
;                   43
78
;                   44
79
CAPS_CX16      =    45 ;CMPXCHG16B instruction
80
CAPS_xTPR      =    46 ;
81
CAPS_XSAVE     =    32 + 26 ; XSAVE and XRSTOR instructions
82
CAPS_OSXSAVE   =    32 + 27
7124 dunkaist 83
; A value of 1 indicates that the OS has set CR4.OSXSAVE[bit 18] to enable
84
; XSETBV/XGETBV instructions to access XCR0 and to support processor extended
85
; state management using XSAVE/XRSTOR.
7136 dunkaist 86
CAPS_AVX       =    32 + 28 ; not AVX2
2288 clevermous 87
;
88
;reserved
89
;
90
;ext edx /ecx
7136 dunkaist 91
CAPS_SYSCAL    =    64 ;
92
CAPS_XD        =    65 ;execution disable
93
CAPS_FFXSR     =    66 ;
94
CAPS_RDTSCP    =    67 ;
95
CAPS_X64       =    68 ;
96
CAPS_3DNOW     =    69 ;
97
CAPS_3DNOWEXT  =    70 ;
98
CAPS_LAHF      =    71 ;
99
CAPS_CMP_LEG   =    72 ;
100
CAPS_SVM       =    73 ;secure virual machine
101
CAPS_ALTMOVCR8 =    74 ;
2288 clevermous 102
 
103
; CPU MSR names
7136 dunkaist 104
MSR_SYSENTER_CS         =     0x174
105
MSR_SYSENTER_ESP        =     0x175
106
MSR_SYSENTER_EIP        =     0x176
107
MSR_CR_PAT              =     0x277
108
MSR_MTRR_DEF_TYPE       =     0x2FF
5360 serge 109
 
7136 dunkaist 110
MSR_AMD_EFER            =     0xC0000080      ; Extended Feature Enable Register
111
MSR_AMD_STAR            =     0xC0000081      ; SYSCALL/SYSRET Target Address Register
2288 clevermous 112
 
7136 dunkaist 113
CR0_PE         =    0x00000001   ;protected mode
114
CR0_MP         =    0x00000002   ;monitor fpu
115
CR0_EM         =    0x00000004   ;fpu emulation
116
CR0_TS         =    0x00000008   ;task switch
117
CR0_ET         =    0x00000010   ;extension type hardcoded to 1
118
CR0_NE         =    0x00000020   ;numeric error
119
CR0_WP         =    0x00010000   ;write protect
120
CR0_AM         =    0x00040000   ;alignment check
121
CR0_NW         =    0x20000000   ;not write-through
122
CR0_CD         =    0x40000000   ;cache disable
123
CR0_PG         =    0x80000000   ;paging
2288 clevermous 124
 
125
 
7136 dunkaist 126
CR4_VME        =    0x000001
127
CR4_PVI        =    0x000002
128
CR4_TSD        =    0x000004
129
CR4_DE         =    0x000008
130
CR4_PSE        =    0x000010
131
CR4_PAE        =    0x000020
132
CR4_MCE        =    0x000040
133
CR4_PGE        =    0x000080
134
CR4_PCE        =    0x000100
135
CR4_OSFXSR     =    0x000200
136
CR4_OSXMMEXPT  =    0x000400
137
CR4_OSXSAVE    =    0x040000
2288 clevermous 138
 
7136 dunkaist 139
XCR0_FPU_MMX   =    0x0001
140
XCR0_SSE       =    0x0002
141
XCR0_AVX       =    0x0004
142
XCR0_MPX       =    0x0018
143
XCR0_AVX512    =    0x00e0
2288 clevermous 144
 
7136 dunkaist 145
MXCSR_IE       =    0x0001
146
MXCSR_DE       =    0x0002
147
MXCSR_ZE       =    0x0004
148
MXCSR_OE       =    0x0008
149
MXCSR_UE       =    0x0010
150
MXCSR_PE       =    0x0020
151
MXCSR_DAZ      =    0x0040
152
MXCSR_IM       =    0x0080
153
MXCSR_DM       =    0x0100
154
MXCSR_ZM       =    0x0200
155
MXCSR_OM       =    0x0400
156
MXCSR_UM       =    0x0800
157
MXCSR_PM       =    0x1000
158
MXCSR_FZ       =    0x8000
2288 clevermous 159
 
7136 dunkaist 160
MXCSR_INIT     = MXCSR_IM + MXCSR_DM + MXCSR_ZM + MXCSR_OM + MXCSR_UM + MXCSR_PM
7124 dunkaist 161
 
7136 dunkaist 162
EFLAGS_CF      =    0x000001  ; carry flag
163
EFLAGS_PF      =    0x000004  ; parity flag
164
EFLAGS_AF      =    0x000010  ; auxiliary flag
165
EFLAGS_ZF      =    0x000040  ; zero flag
166
EFLAGS_SF      =    0x000080  ; sign flag
167
EFLAGS_TF      =    0x000100  ; trap flag
168
EFLAGS_IF      =    0x000200  ; interrupt flag
169
EFLAGS_DF      =    0x000400  ; direction flag
170
EFLAGS_OF      =    0x000800  ; overflow flag
171
EFLAGS_IOPL    =    0x003000  ; i/o priviledge level
172
EFLAGS_NT      =    0x004000  ; nested task flag
173
EFLAGS_RF      =    0x010000  ; resume flag
174
EFLAGS_VM      =    0x020000  ; virtual 8086 mode flag
175
EFLAGS_AC      =    0x040000  ; alignment check flag
176
EFLAGS_VIF     =    0x080000  ; virtual interrupt flag
177
EFLAGS_VIP     =    0x100000  ; virtual interrupt pending
178
EFLAGS_ID      =    0x200000  ; id flag
7126 dunkaist 179
 
7136 dunkaist 180
IRQ_PIC        =    0
181
IRQ_APIC       =    1
2288 clevermous 182
 
2381 hidnplayr 183
struct  TSS
184
        _back       rw 2
185
        _esp0       rd 1
186
        _ss0        rw 2
187
        _esp1       rd 1
188
        _ss1        rw 2
189
        _esp2       rd 1
190
        _ss2        rw 2
191
        _cr3        rd 1
192
        _eip        rd 1
193
        _eflags     rd 1
194
        _eax        rd 1
195
        _ecx        rd 1
196
        _edx        rd 1
197
        _ebx        rd 1
198
        _esp        rd 1
199
        _ebp        rd 1
200
        _esi        rd 1
201
        _edi        rd 1
202
        _es         rw 2
203
        _cs         rw 2
204
        _ss         rw 2
205
        _ds         rw 2
206
        _fs         rw 2
207
        _gs         rw 2
208
        _ldt        rw 2
209
        _trap       rw 1
210
        _io         rw 1
211
                    rb 24
212
        _io_map_0   rb 4096
213
        _io_map_1   rb 4096
214
ends
2288 clevermous 215
 
7136 dunkaist 216
DRIVE_DATA_SIZE     = 16
3627 Serge 217
 
7136 dunkaist 218
OS_BASE             = 0x80000000
2288 clevermous 219
 
7136 dunkaist 220
window_data         = OS_BASE + 0x0001000
2288 clevermous 221
 
8851 rgimad 222
TASK_TABLE          = OS_BASE + 0x0003000
8869 rgimad 223
;CURRENT_TASK        = OS_BASE + 0x0003000
8866 rgimad 224
;TASK_COUNT          = OS_BASE + 0x0003004
7136 dunkaist 225
TASK_BASE           = OS_BASE + 0x0003010
226
TASK_DATA           = OS_BASE + 0x0003020
8867 rgimad 227
;TASK_EVENT          = OS_BASE + 0x0003020
2288 clevermous 228
 
7136 dunkaist 229
CDDataBuf           = OS_BASE + 0x0005000
3732 Serge 230
 
231
;unused                 0x6000 - 0x8fff
232
 
7136 dunkaist 233
BOOT_VARS           = 0x9000
3732 Serge 234
 
7136 dunkaist 235
idts                = OS_BASE + 0x000B100
236
WIN_STACK           = OS_BASE + 0x000C000
237
WIN_POS             = OS_BASE + 0x000C400
238
FDD_BUFF            = OS_BASE + 0x000D000     ;512
2288 clevermous 239
 
7136 dunkaist 240
WIN_TEMP_XY         = OS_BASE + 0x000F300
241
KEY_COUNT           = OS_BASE + 0x000F400
242
KEY_BUFF            = OS_BASE + 0x000F401 ; 120*2 + 2*2 = 244 bytes, actually 255 bytes
2288 clevermous 243
 
7136 dunkaist 244
BTN_COUNT           = OS_BASE + 0x000F500
245
BTN_BUFF            = OS_BASE + 0x000F501
2288 clevermous 246
 
247
 
7136 dunkaist 248
BTN_ADDR            = OS_BASE + 0x000FE88
249
MEM_AMOUNT          = OS_BASE + 0x000FE8C
2288 clevermous 250
 
7136 dunkaist 251
SYS_SHUTDOWN        = OS_BASE + 0x000FF00
2288 clevermous 252
 
2513 mario79 253
 
8085 dunkaist 254
TMP_STACK_TOP       = 0x007CC00
2288 clevermous 255
 
8085 dunkaist 256
sys_proc            = OS_BASE + 0x007E000
2288 clevermous 257
 
7136 dunkaist 258
SLOT_BASE           = OS_BASE + 0x0080000
2288 clevermous 259
 
7136 dunkaist 260
VGABasePtr          = OS_BASE + 0x00A0000
2288 clevermous 261
 
7136 dunkaist 262
virtual at            OS_BASE + 0x05FFF80
2288 clevermous 263
  tss  TSS
264
end virtual
265
 
7136 dunkaist 266
HEAP_BASE           = OS_BASE + 0x0800000
267
HEAP_MIN_SIZE       = 0x01000000
2288 clevermous 268
 
7136 dunkaist 269
page_tabs           = 0xFDC00000
270
app_page_tabs       = 0xFDC00000
271
kernel_tabs         = page_tabs + (OS_BASE shr 10)   ;0xFDE00000
272
master_tab          = page_tabs + (page_tabs shr 10) ;0xFDFF70000
2288 clevermous 273
 
7136 dunkaist 274
LFB_BASE            = 0xFE000000
2288 clevermous 275
 
276
 
7136 dunkaist 277
new_app_base        = 0;
2288 clevermous 278
 
8869 rgimad 279
twdw                = TASK_TABLE - window_data
2288 clevermous 280
 
7136 dunkaist 281
std_application_base_address   = new_app_base
282
RING0_STACK_SIZE    = 0x2000
2288 clevermous 283
 
7136 dunkaist 284
REG_SS              = RING0_STACK_SIZE -  4
285
REG_APP_ESP         = RING0_STACK_SIZE -  8
286
REG_EFLAGS          = RING0_STACK_SIZE - 12
287
REG_CS              = RING0_STACK_SIZE - 16
288
REG_EIP             = RING0_STACK_SIZE - 20
289
REG_EAX             = RING0_STACK_SIZE - 24
290
REG_ECX             = RING0_STACK_SIZE - 28
291
REG_EDX             = RING0_STACK_SIZE - 32
292
REG_EBX             = RING0_STACK_SIZE - 36
293
REG_ESP             = RING0_STACK_SIZE - 40  ;RING0_STACK_SIZE-20
294
REG_EBP             = RING0_STACK_SIZE - 44
295
REG_ESI             = RING0_STACK_SIZE - 48
296
REG_EDI             = RING0_STACK_SIZE - 52
297
REG_RET             = RING0_STACK_SIZE - 56  ;irq0.return
2288 clevermous 298
 
299
 
7136 dunkaist 300
PAGE_SIZE           = 4096
5130 serge 301
 
7136 dunkaist 302
PG_UNMAP            = 0x000
303
PG_READ             = 0x001
304
PG_WRITE            = 0x002
305
PG_USER             = 0x004
306
PG_PCD              = 0x008
307
PG_PWT              = 0x010
308
PG_ACCESSED         = 0x020
309
PG_DIRTY            = 0x040
310
PG_PAT              = 0x080
311
PG_GLOBAL           = 0x100
312
PG_SHARED           = 0x200
2288 clevermous 313
 
7136 dunkaist 314
PG_SWR              = 0x003 ; PG_WRITE + PG_READ
315
PG_UR               = 0x005 ; PG_USER + PG_READ
316
PG_UWR              = 0x007 ; PG_USER + PG_WRITE + PG_READ
317
PG_NOCACHE          = 0x018 ; PG_PCD + PG_PWT
5356 serge 318
 
7136 dunkaist 319
PDE_LARGE           = 0x080
5356 serge 320
 
7136 dunkaist 321
MEM_WB              = 6     ; write-back memory
322
MEM_WC              = 1     ; write combined memory
323
MEM_UC              = 0     ; uncached memory
5360 serge 324
 
7136 dunkaist 325
PAT_WB              = 0x000
326
PAT_WC              = 0x008
327
PAT_UCM             = 0x010
328
PAT_UC              = 0x018
5360 serge 329
 
7136 dunkaist 330
PAT_TYPE_UC         = 0
331
PAT_TYPE_WC         = 1
332
PAT_TYPE_WB         = 6
333
PAT_TYPE_UCM        = 7
5360 serge 334
 
7136 dunkaist 335
PAT_VALUE           = 0x00070106; (UC<<24)|(UCM<<16)|(WC<<8)|WB
7122 dunkaist 336
 
7136 dunkaist 337
MAX_MEMMAP_BLOCKS   = 32
2288 clevermous 338
 
7136 dunkaist 339
EVENT_REDRAW       = 0x00000001
340
EVENT_KEY          = 0x00000002
341
EVENT_BUTTON       = 0x00000004
342
EVENT_BACKGROUND   = 0x00000010
343
EVENT_MOUSE        = 0x00000020
344
EVENT_IPC          = 0x00000040
345
EVENT_NETWORK      = 0x00000080
346
EVENT_DEBUG        = 0x00000100
347
EVENT_NETWORK2     = 0x00000200
348
EVENT_EXTENDED     = 0x00000400
2288 clevermous 349
 
7136 dunkaist 350
EV_INTR            = 1
6079 serge 351
 
7136 dunkaist 352
STDIN_FILENO       = 0
353
STDOUT_FILENO      = 1
354
STDERR_FILENO      = 2
6244 serge 355
 
7136 dunkaist 356
SYSTEM_SHUTDOWN    = 2
357
SYSTEM_REBOOT      = 3
358
SYSTEM_RESTART     = 4
6790 0CodErr 359
 
7136 dunkaist 360
BLIT_CLIENT_RELATIVE = 0x20000000
361
 
6079 serge 362
struct SYSCALL_STACK
363
        _eip            dd ?
364
        _edi            dd ?    ;  +4
365
        _esi            dd ?    ;  +8
366
        _ebp            dd ?    ; +12
367
        _esp            dd ?    ; +16
368
        _ebx            dd ?    ; +20
369
        _edx            dd ?    ; +24
370
        _ecx            dd ?    ; +28
371
        _eax            dd ?    ; +32
2384 hidnplayr 372
ends
2288 clevermous 373
 
6079 serge 374
struct  LHEAD
375
        next            dd ?   ;next object in list
376
        prev            dd ?   ;prev object in list
377
ends
2288 clevermous 378
 
6079 serge 379
struct  MUTEX_WAITER
380
        list    LHEAD
381
        task    dd ?
382
        type    dd ?
383
ends
384
 
385
struct  MUTEX
386
        wait_list       LHEAD
387
        count           dd ?
388
ends
389
 
390
struct  RWSEM
391
        wait_list       LHEAD
392
        count           dd ?
393
ends
394
 
395
struct  FUTEX
396
        list            LHEAD
397
        magic           dd ?
398
        handle          dd ?
399
        destroy         dd ?
400
 
401
        wait_list       LHEAD
402
        pointer         dd ?
403
        flags           dd ?
404
ends
405
 
7136 dunkaist 406
FUTEX_INIT      = 0
407
FUTEX_DESTROY   = 1
408
FUTEX_WAIT      = 2
409
FUTEX_WAKE      = 3
6079 serge 410
 
6926 serge 411
struct  FILED
412
        list            LHEAD
413
        magic           rd 1
414
        handle          rd 1
415
        destroy         rd 1
6929 serge 416
        mode            rd 1
6926 serge 417
        file            rd 1
418
ends
419
 
420
struct  PIPE
421
        pipe_ops        rd 1
422
        buffer          rd 1
423
        readers         rd 1
424
        writers         rd 1
425
 
426
        pipe_lock       MUTEX
427
        count           rd 1
428
 
429
        read_end        rd 1
430
        write_end       rd 1
431
        rlist           LHEAD
432
        wlist           LHEAD
433
ends
434
 
6079 serge 435
struct  PROC
436
        list            LHEAD
437
        thr_list        LHEAD
438
        heap_lock       MUTEX
439
        heap_base       rd 1
440
        heap_top        rd 1
441
        mem_used        rd 1
442
        dlls_list_ptr   rd 1
443
        pdt_0_phys      rd 1
444
        pdt_1_phys      rd 1
445
        io_map_0        rd 1
446
        io_map_1        rd 1
447
 
448
        ht_lock         rd 1
6802 pathoswith 449
        ht_free         rd 1                ;htab[0] stdin
450
        ht_next         rd 1                ;htab[1] stdout
451
        htab            rd 1024-PROC.htab/4 ;htab[2] stderr
6079 serge 452
        pdt_0           rd 1024
453
ends
454
 
455
struct  DBG_REGS
456
        dr0             dd ?
457
        dr1             dd ?
458
        dr2             dd ?
459
        dr3             dd ?
460
        dr7             dd ?
461
ends
462
 
463
struct  POINT
464
        x       dd ?
465
        y       dd ?
466
ends
467
 
468
struct  RECT
469
        left    dd ?
470
        top     dd ?
471
        right   dd ?
472
        bottom  dd ?
473
ends
474
 
475
struct  BOX
476
        left    dd ?
477
        top     dd ?
478
        width   dd ?
479
        height  dd ?
480
ends
481
 
482
struct  APPDATA
483
        app_name        rb 11
484
                        rb 5
485
 
486
        list            LHEAD           ;+16
487
        process         dd ?            ;+24
488
        fpu_state       dd ?            ;+28
489
        exc_handler     dd ?            ;+32
490
        except_mask     dd ?            ;+36
491
        pl0_stack       dd ?            ;+40
492
        cursor          dd ?            ;+44
493
        fd_ev           dd ?            ;+48
494
        bk_ev           dd ?            ;+52
495
        fd_obj          dd ?            ;+56
496
        bk_obj          dd ?            ;+60
497
        saved_esp       dd ?            ;+64
498
        io_map          rd 2            ;+68
499
        dbg_state       dd ?            ;+76
500
        cur_dir         dd ?            ;+80
501
        wait_timeout    dd ?            ;+84
502
        saved_esp0      dd ?            ;+88
503
        wait_begin      dd ?            ;+92   +++
504
        wait_test       dd ?            ;+96   +++
505
        wait_param      dd ?            ;+100  +++
506
        tls_base        dd ?            ;+104
8869 rgimad 507
        event_mask      dd ?            ;+108  ; stores event types allowed for task
508
        tid             dd ?            ;+112  ; thread id
6079 serge 509
        draw_bgr_x      dd ?            ;+116
510
        draw_bgr_y      dd ?            ;+120
8869 rgimad 511
        state           db ?            ;+124  ; thread state
512
                        db ?            ;+125
513
                        dw ?            ;+126
6079 serge 514
        wnd_shape       dd ?            ;+128
515
        wnd_shape_scale dd ?            ;+132
8869 rgimad 516
        mem_start       dd ?            ;+136 ;;
517
        counter_sum     dd ?            ;+140 ;;
6079 serge 518
        saved_box       BOX             ;+144
519
        ipc_start       dd ?            ;+160
520
        ipc_size        dd ?            ;+164
8867 rgimad 521
        occurred_events dd ?            ;+168 ; mask which accumulates occurred events
6079 serge 522
        debugger_slot   dd ?            ;+172
523
        terminate_protection dd ?       ;+176
524
        keyboard_mode   db ?            ;+180
6802 pathoswith 525
        captionEncoding db ?
526
                        rb 2
6318 serge 527
        exec_params     dd ?            ;+184
6079 serge 528
        dbg_event_mem   dd ?            ;+188
529
        dbg_regs        DBG_REGS        ;+192
530
        wnd_caption     dd ?            ;+212
531
        wnd_clientbox   BOX             ;+216
532
        priority        dd ?            ;+232
533
        in_schedule     LHEAD           ;+236
8869 rgimad 534
        counter_add     dd ?            ;+244 ;;
535
        cpu_usage       dd ?            ;+248 ;;
536
                        dd ?            ;+252
6079 serge 537
ends
538
 
8093 dunkaist 539
assert sizeof.APPDATA = 256
540
 
7136 dunkaist 541
APP_OBJ_OFFSET  = 48
542
APP_EV_OFFSET   = 40
6079 serge 543
 
8869 rgimad 544
; Note: in future TASKDATA will be merged into APPDATA
6079 serge 545
struct  TASKDATA
8869 rgimad 546
        event_mask      dd ? ;+0 mask which stores event types allowed for task
547
        pid             dd ? ;+4
548
                        dw ? ;+8
549
        state           db ? ;+10
550
                        db ? ;+11
551
                        dw ? ;+12
552
        wnd_number      db ? ;+14
553
                        db ? ;+15
554
        mem_start       dd ? ;+16
555
        counter_sum     dd ? ;+20
556
        counter_add     dd ? ;+24
557
        cpu_usage       dd ? ;+28
6079 serge 558
ends
559
 
560
TSTATE_RUNNING        = 0
561
TSTATE_RUN_SUSPENDED  = 1
562
TSTATE_WAIT_SUSPENDED = 2
563
TSTATE_ZOMBIE         = 3
564
TSTATE_TERMINATING    = 4
565
TSTATE_WAITING        = 5
566
TSTATE_FREE           = 9
567
 
568
; constants definition
569
WSTATE_NORMAL    = 00000000b
570
WSTATE_MAXIMIZED = 00000001b
571
WSTATE_MINIMIZED = 00000010b
572
WSTATE_ROLLEDUP  = 00000100b
573
 
574
WSTATE_REDRAW    = 00000001b
575
WSTATE_WNDDRAWN  = 00000010b
576
 
577
WSTYLE_HASCAPTION     = 00010000b
578
WSTYLE_CLIENTRELATIVE = 00100000b
579
 
580
ZPOS_DESKTOP            = -2
581
ZPOS_ALWAYS_BACK        = -1
582
ZPOS_NORMAL             = 0
583
ZPOS_ALWAYS_TOP         = 1     ;ZPOS_ALWAYS_TOP is always last and has max number!
584
; structures definition
585
struct  WDATA
586
        box             BOX
587
        cl_workarea     dd ?
588
        cl_titlebar     dd ?
589
        cl_frames       dd ?
590
        z_modif         db ?
591
        fl_wstate       db ?
592
        fl_wdrawn       db ?
593
        fl_redraw       db ?
594
ends
595
 
596
label WDATA.fl_wstyle byte at WDATA.cl_workarea + 3
597
 
8858 rgimad 598
assert sizeof.WDATA = 32
6079 serge 599
 
2384 hidnplayr 600
struct  SYS_VARS
601
        bpp             dd ?
602
        scanline        dd ?
603
        vesa_mode       dd ?
604
        x_res           dd ?
605
        y_res           dd ?
606
ends
2288 clevermous 607
 
2384 hidnplayr 608
struct  APPOBJ                  ; common object header
609
        magic           dd ?    ;
610
        destroy         dd ?    ; internal destructor
611
        fd              dd ?    ; next object in list
612
        bk              dd ?    ; prev object in list
613
        pid             dd ?    ; owner id
614
ends
2288 clevermous 615
 
2384 hidnplayr 616
struct  CURSOR          APPOBJ
617
        base            dd ?   ;allocated memory
618
        hot_x           dd ?   ;hotspot coords
619
        hot_y           dd ?
2288 clevermous 620
 
2384 hidnplayr 621
        list_next       dd ?   ;next cursor in cursor list
622
        list_prev       dd ?   ;prev cursor in cursor list
623
        dev_obj         dd ?   ;device depended data
624
ends
2288 clevermous 625
 
626
 
2384 hidnplayr 627
struct  EVENT           APPOBJ
628
        id              dd ?   ;event uid
629
        state           dd ?   ;internal flags
630
        code            dd ?
631
                        rd 5
632
ends
2288 clevermous 633
 
634
 
2384 hidnplayr 635
struct  SMEM
636
        bk              dd ?
637
        fd              dd ?    ;+4
638
        base            dd ?    ;+8
639
        size            dd ?    ;+12
640
        access          dd ?    ;+16
641
        refcount        dd ?    ;+20
642
        name            rb 32   ;+24
643
ends
2288 clevermous 644
 
2384 hidnplayr 645
struct  SMAP            APPOBJ
646
        base            dd ?   ;mapped base
647
        parent          dd ?   ;SMEM
648
ends
2288 clevermous 649
 
2384 hidnplayr 650
struct  DLLDESCR
651
        bk              dd ?
652
        fd              dd ?    ;+4
653
        data            dd ?    ;+8
654
        size            dd ?    ;+12
655
        timestamp       dq ?
656
        refcount        dd ?
657
        defaultbase     dd ?
658
        coff_hdr        dd ?
659
        symbols_ptr     dd ?
660
        symbols_num     dd ?
661
        symbols_lim     dd ?
662
        exports         dd ?   ;export table
663
        name            rb 260
664
ends
2288 clevermous 665
 
2384 hidnplayr 666
struct  HDLL
667
        fd              dd ?   ;next object in list
668
        bk              dd ?   ;prev object in list
669
        pid             dd ?   ;owner id
2288 clevermous 670
 
2384 hidnplayr 671
        base            dd ?   ;mapped base
672
        size            dd ?   ;mapped size
673
        refcount        dd ?   ;reference counter for this process and this lib
674
        parent          dd ?   ;DLLDESCR
675
ends
2288 clevermous 676
 
7132 dunkaist 677
struct DQ
678
        lo dd ?
679
        hi dd ?
680
ends
2288 clevermous 681
 
7132 dunkaist 682
struct e820entry
683
        addr DQ ?
684
        size DQ ?
685
        type dd ?
686
ends
2288 clevermous 687
 
8091 dunkaist 688
RD_LOAD_FROM_FLOPPY = 1
689
RD_LOAD_FROM_HD     = 2
690
RD_LOAD_FROM_MEMORY = 3
691
RD_LOAD_FROM_FORMAT = 4
692
RD_LOAD_FROM_NONE   = 5
8089 dunkaist 693
 
7132 dunkaist 694
struct  boot_data
695
        bpp             db ?    ; bits per pixel
696
        pitch           dw ?    ; scanline length
697
                        db ?
2384 hidnplayr 698
                        dd ?
7132 dunkaist 699
        vesa_mode       dw ?
700
        x_res           dw ?
701
        y_res           dw ?
702
                        dw ?
2384 hidnplayr 703
                        dd ?
7132 dunkaist 704
        bank_switch     dd ?    ; Vesa 1.2 pm bank switch
705
        lfb             dd ?    ; Vesa 2.0 LFB address
706
        mtrr            db ?    ; 0 or 1: enable MTRR graphics acceleration
8217 dunkaist 707
        launcher_start  db ?    ; 0 or 1: start the first app (right now it's
708
                                ; LAUNCHER) after kernel is loaded
7132 dunkaist 709
        debug_print     db ?    ; if nonzero, duplicates debug output to the screen
710
        dma             db ?    ; DMA write: 1=yes, 2=no
711
        pci_data        rb 8
712
                        rb 8
713
        shutdown_type   db ?    ; see sysfn 18.9
714
                        rb 15
715
        apm_entry       dd ?    ; entry point of APM BIOS
716
        apm_version     dw ?    ; BCD
717
        apm_flags       dw ?
718
                        rb 8
719
        apm_code_32     dw ?
720
        apm_code_16     dw ?
721
        apm_data_16     dw ?
8089 dunkaist 722
        rd_load_from    db ?    ; Device to load ramdisk from, RD_LOAD_FROM_*
7132 dunkaist 723
                        db ?
724
        kernel_restart  dw ?
8089 dunkaist 725
        sys_disk        dw ?    ; Device to mount on /sys/, see loader_doc.txt for details
7132 dunkaist 726
        acpi_rsdp       dd ?
8092 dunkaist 727
        syspath         rb 0x17
728
        devicesdat_data dd ?
729
        devicesdat_size dd ?
7132 dunkaist 730
        bios_hd_cnt     db ?    ; number of BIOS hard disks
731
        bios_hd         rb 0x80 ; BIOS hard disks
732
        memmap_block_cnt dd ?   ; available physical memory map: number of blocks
733
        memmap_blocks   e820entry
734
                        rb sizeof.e820entry * (MAX_MEMMAP_BLOCKS - 1)
2384 hidnplayr 735
ends
2288 clevermous 736
 
7132 dunkaist 737
virtual at BOOT_VARS
738
        BOOT_LO boot_data
739
end virtual
740
virtual at OS_BASE + BOOT_VARS
741
        BOOT boot_data
742
end virtual
743
 
7522 dunkaist 744
MAX_SCREEN_WIDTH  = 3840
745
MAX_SCREEN_HEIGHT = 2160
746
 
5351 serge 747
struct  display_t
748
        x               dd ?
749
        y               dd ?
750
        width           dd ?
751
        height          dd ?
752
        bits_per_pixel  dd ?
753
        vrefresh        dd ?
6263 serge 754
        current_lfb     dd ?
5351 serge 755
        lfb_pitch       dd ?
756
 
757
        win_map_lock    RWSEM
758
        win_map         dd ?
759
        win_map_pitch   dd ?
760
        win_map_size    dd ?
761
 
762
        modes           dd ?
763
        ddev            dd ?
764
        connector       dd ?
765
        crtc            dd ?
766
 
767
        cr_list.next    dd ?
768
        cr_list.prev    dd ?
769
 
770
        cursor          dd ?
771
 
772
        init_cursor     dd ?
773
        select_cursor   dd ?
774
        show_cursor     dd ?
775
        move_cursor     dd ?
776
        restore_cursor  dd ?
777
        disable_mouse   dd ?
778
        mask_seqno      dd ?
779
        check_mouse     dd ?
780
        check_m_pixel   dd ?
781
 
782
        bytes_per_pixel dd ?
783
ends
784
 
6079 serge 785
struct  DISPMODE
786
        width   dw ?
787
        height  dw ?
788
        bpp     dw ?
789
        freq    dw ?
790
ends
5351 serge 791
 
6079 serge 792
 
3393 clevermous 793
struct  PCIDEV
794
        bk              dd ?
795
        fd              dd ?
796
        vendor_device_id dd ?
797
        class           dd ?
798
        devfn           db ?
799
        bus             db ?
4418 clevermous 800
                        rb 2
801
        owner           dd ? ; pointer to SRV or 0
3393 clevermous 802
ends
803
 
6079 serge 804
struct  IDE_DATA
805
        ProgrammingInterface dd ?
806
        Interrupt            dw ?
807
        RegsBaseAddres       dw ?
808
        BAR0_val             dw ?
809
        BAR1_val             dw ?
810
        BAR2_val             dw ?
811
        BAR3_val             dw ?
812
        dma_hdd_channel_1    db ?
813
        dma_hdd_channel_2    db ?
6816 dunkaist 814
        pcidev               dd ?       ; pointer to corresponding PCIDEV structure
6079 serge 815
ends
816
 
817
struct  IDE_CACHE
818
        pointer              dd ?
819
        size                 dd ?   ; not use
820
        data_pointer         dd ?
821
        system_data_size     dd ?   ; not use
822
        appl_data_size       dd ?   ; not use
823
        system_data          dd ?
824
        appl_data            dd ?
825
        system_sad_size      dd ?
826
        appl_sad_size        dd ?
827
        search_start         dd ?
828
        appl_search_start    dd ?
829
ends
830
 
831
struct  IDE_DEVICE
832
        UDMA_possible_modes  db ?
833
        UDMA_set_mode        db ?
834
ends
835
 
3395 clevermous 836
; The following macro assume that we are on uniprocessor machine.
837
; Serious work is needed for multiprocessor machines.
838
macro spin_lock_irqsave spinlock
839
{
840
        pushf
841
        cli
842
}
843
macro spin_unlock_irqrestore spinlock
844
{
845
        popf
846
}
847
macro spin_lock_irq spinlock
848
{
849
        cli
850
}
851
macro spin_unlock_irq spinlock
852
{
853
        sti
854
}
855
 
2384 hidnplayr 856
struct  MEM_STATE
857
        mutex           MUTEX
858
        smallmap        dd ?
859
        treemap         dd ?
860
        topsize         dd ?
861
        top             dd ?
862
        smallbins       rd 4*32
863
        treebins        rd 32
864
ends
2288 clevermous 865
 
2384 hidnplayr 866
struct  PG_DATA
867
        mem_amount      dd ?
868
        vesa_mem        dd ?
869
        pages_count     dd ?
870
        pages_free      dd ?
871
        pages_faults    dd ?
872
        pagemap_size    dd ?
873
        kernel_pages    dd ?
874
        kernel_tables   dd ?
875
        sys_page_dir    dd ?
876
        mutex           MUTEX
877
ends
2288 clevermous 878
 
2384 hidnplayr 879
struct  SRV
880
        srv_name        rb 16    ;ASCIIZ string
881
        magic           dd ?     ;+0x10 ;'SRV '
882
        size            dd ?     ;+0x14 ;size of structure SRV
883
        fd              dd ?     ;+0x18 ;next SRV descriptor
884
        bk              dd ?     ;+0x1C ;prev SRV descriptor
885
        base            dd ?     ;+0x20 ;service base address
886
        entry           dd ?     ;+0x24 ;service START function
887
        srv_proc        dd ?     ;+0x28 ;user mode service handler
888
        srv_proc_ex     dd ?     ;+0x2C ;kernel mode service handler
889
ends
2288 clevermous 890
 
3520 clevermous 891
struct USBSRV
892
        srv             SRV
893
        usb_func        dd ?
894
ends
895
 
896
struct USBFUNC
897
        strucsize       dd ?
898
        add_device      dd ?
899
        device_disconnect dd ?
900
ends
901
 
7136 dunkaist 902
DRV_ENTRY    =  1
903
DRV_EXIT     = -1
2288 clevermous 904
 
2384 hidnplayr 905
struct  COFF_HEADER
906
        machine         dw ?
907
        nSections       dw ?
908
        DataTime        dd ?
909
        pSymTable       dd ?
910
        nSymbols        dd ?
911
        optHeader       dw ?
912
        flags           dw ?
913
ends
2288 clevermous 914
 
2384 hidnplayr 915
struct  COFF_SECTION
916
        Name            rb 8
917
        VirtualSize     dd ?
918
        VirtualAddress  dd ?
919
        SizeOfRawData   dd ?
920
        PtrRawData      dd ?
921
        PtrReloc        dd ?
922
        PtrLinenumbers  dd ?
923
        NumReloc        dw ?
924
        NumLinenum      dw ?
925
        Characteristics dd ?
926
ends
2288 clevermous 927
 
2384 hidnplayr 928
struct  COFF_RELOC
929
        VirtualAddress  dd ?
930
        SymIndex        dd ?
931
        Type            dw ?
932
ends
2288 clevermous 933
 
2384 hidnplayr 934
struct  COFF_SYM
935
        Name            rb 8
936
        Value           dd ?
937
        SectionNumber   dw ?
938
        Type            dw ?
939
        StorageClass    db ?
940
        NumAuxSymbols   db ?
941
ends
2288 clevermous 942
 
5039 clevermous 943
struct  STRIPPED_PE_HEADER
944
        Signature           dw ?
945
        Characteristics     dw ?
946
        AddressOfEntryPoint dd ?
947
        ImageBase           dd ?
948
        SectionAlignmentLog db ?
949
        FileAlignmentLog    db ?
950
        MajorOSVersion      db ?
951
        MinorOSVersion      db ?
952
        SizeOfImage         dd ?
953
        SizeOfStackReserve  dd ?
954
        SizeOfHeapReserve   dd ?
955
        SizeOfHeaders       dd ?
956
        Subsystem           db ?
957
        NumberOfRvaAndSizes db ?
958
        NumberOfSections    dw ?
959
ends
960
STRIPPED_PE_SIGNATURE = 0x4503 ; 'PE' xor 'S'
961
SPE_DIRECTORY_IMPORT    = 0
962
SPE_DIRECTORY_EXPORT    = 1
963
SPE_DIRECTORY_BASERELOC = 2
964
 
2384 hidnplayr 965
struct  IOCTL
966
        handle          dd ?
967
        io_code         dd ?
968
        input           dd ?
969
        inp_size        dd ?
970
        output          dd ?
971
        out_size        dd ?
972
ends
2288 clevermous 973
 
2384 hidnplayr 974
struct  IRQH
975
        list            LHEAD
976
        handler         dd ?   ;handler roututine
977
        data            dd ?   ;user-specific data
3506 clevermous 978
        num_ints        dd ?   ;how many times handled
2414 Serge 979
ends
7122 dunkaist 980