;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; RDOS operating system ; Copyright (C) 1988-2000, Leif Ekblad ; ; This program is free software; you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation; either version 2 of the License, or ; (at your option) any later version. The only exception to this rule ; is for commercial usage in embedded systems. For information on ; usage in commercial embedded systems, contact embedded@rdos.net ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program; if not, write to the Free Software ; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ; ; The author of this program may be contacted at leif@rdos.net ; ; SYSTEM.DEF ; System-wide structure & constant definitions ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; rom modules in RDOS ; BootMemSign EQU 675E4B72h AllocMemSign EQU 9AE58C5Dh RdosSign EQU 5A1E75D4h RdosKernel = 0 RdosFont = 1 RdosSimpleDevice = 2 RdosShutDown = 3 RdosOldFile = 6 RdosCommand = 7 RdosSet = 8 RdosPath = 9 RdosDosDevice = 16 RdosFile = 17 RdosDevice16 = 18 RdosDevice32 = 19 RdosLongMode = 20 RdosEnd = 0E5E5h adapter_typ STRUC adapter_base DD ? adapter_size DD ? adapter_crc DW ? adapter_typ ENDS rdos_header STRUC sign DD ? len DD ? typ DW ? crc DW ? rdos_header ENDS simple_device_header STRUC init_ip DW ? simple_device_header ENDS dos_device_header STRUC dos_dev_size DW ? dos_dev_sel DW ? dos_dev_init_ip DW ? dos_dev_name_parm DB ? dos_device_header ENDS device16_header STRUC dev16_size DD ? dev16_code_size DW ? dev16_code_sel DW ? dev16_data_size DW ? dev16_data_sel DW ? dev16_init_ip DW ? device16_header ENDS device32_header STRUC dev32_size DD ? dev32_code_size DD ? dev32_code_sel DW ? dev32_data_size DD ? dev32_data_sel DW ? dev32_init_ip DD ? device32_header ENDS long_mode_header STRUC lm_size DD ? lm_init_ip DD ? lm_image_base DD ? lm_image_size DD ? lm_idt_base DD ? long_mode_header ENDS boot64_pages = 16 system_seg STRUC dum1 DD ? multiboot_mmap_len DW ? cpu_ext_feature_flags DD ? long_idt_ads DD ? multiboot_mmap_addr DD ? long_base DD ? long_size DD ? debug_list DW ? thread_arr DW 256 DUP(?) filler_pid DW ? rom_shadow DW ? ram1_size DD ? ram2_base DD ? ram2_size DD ? rom1_base DD ? rom1_size DD ? rom2_base DD ? rom2_size DD ? alloc_base DD ? rom_modules DW ? rom_adapters DD 16 DUP(?,?,?) check_point DW ? cpu_type DB ? cpu_vendor DB 13 DUP(?) cpu_feature_flags DD ? cpu_ext_flags DD ? max_cpuid DD ? debug_thread DW ? flat_base DD ? sys_tsc_tics DD ? sys_tsc_rest DW ? page_spinlock spinlock_typ <> gdt_section section_typ <> enter_patch_proc DW ? leave_patch_proc DW ? patch_spinlock DW ? shut_spinlock DW ? patch_section section_typ <> multiboot_size DW ? multiboot_sel DW ? core_dump_sel DW ? has_phys64 DB ? system_size DB ? system_seg ENDS phys_header STRUC phys_curr_header32 DW ? phys_curr_header64 DW ? phys_bitmap_count DW ? phys_header ENDS phys_bitmap_header STRUC phys_bitmap_free DW ? phys_bitmap_pos DW ? phys_bitmap_header ENDS phys_header_start = 8 phys_bitmap_start = 2000h app_seg STRUC app_next DW ? app_get_cmd_line_proc DD ?,? app_get_exe_proc DD ?,? app_get_env_proc DD ?,? app_set_options_proc DD ?,? app_get_options_proc DD ?,? app_allocate_mem_proc DD ?,? app_free_mem_proc DD ?,? app_debug_allocate_mem_proc DD ?,? app_debug_free_mem_proc DD ?,? app_init_thread_proc DD ?,? app_free_thread_proc DD ?,? app_spawn_proc DD ?,? app_clone_proc DD ?,? app_close_proc DD ?,? app_load_dll_proc DD ?,? app_patch_proc DD ?,? app_get_current_dll_proc DD ?,? app_loader_name DD ? app_section_base DD ? app_create_section_proc DD ?,? app_create_named_section_proc DD ?,? app_delete_section_proc DD ?,? app_enter_section_proc DD ?,? app_leave_section_proc DD ?,? app_exit_code DW ? app_fork_id DW ? app_handle DW ? app_mod_sel DW ? app_lib_section section_typ <> app_env DD ? app_name DD ? app_cmd_line DD ? app_options DD ? app_mem_blocks DD ? app_vm_psp_seg DW ? app_pm_psp_sel DW ? app_vm_mem_strat DW ? app_vm_dta_seg DW ? app_pm_dta_sel DW ? app_dta_offset DD ? app_psp_mode DB ? app_dta_mode DB ? app_find_sel DW ? app_ldt_section section_typ <> app_ldt_data_sel DW ? app_ldt_free DW ? app_ldt_sel DW ? app_parent_ldt DW ? app_context DW ? app_bitness DB ? app_key DB ? app_pm_int DD 100h DUP(?,?) app_pm_exc DD 20h DUP(?,?) app_exe_name DB 100h DUP(?) app_seg ENDS block_seg STRUC b_next DW ? b_prev DW ? block_seg ENDS futex_struc STRUC fs_handle DD ? fs_counter DD ? fs_val DW ? fs_owner DW ? fs_sect_name DD ? futex_struc ENDS THREAD_FLAG_CREATE = 1 THREAD_FLAG_BP = 2 THREAD_FLAG_SUSPEND = 4 thread_seg STRUC p_rax DQ ? p_rbx DQ ? p_rcx DQ ? p_rdx DQ ? p_rsi DQ ? p_rdi DQ ? p_rbp DQ ? p_rsp DQ ? p_rip DQ ? p_r8 DQ ? p_r9 DQ ? p_r10 DQ ? p_r11 DQ ? p_r12 DQ ? p_r13 DQ ? p_r14 DQ ? p_r15 DQ ? p_rflags DQ ? p_es DW ? p_cs DW ? p_ss DW ? p_ds DW ? p_fs DW ? p_gs DW ? p_ldt DW ? p_kernel_esp DD ? p_kernel_ss DW ? p_kernel_stack DD ? p_linear DD ? p_dr0 DQ ? p_dr1 DQ ? p_dr2 DQ ? p_dr3 DQ ? p_dr7 DQ ? p_math_control DW ?,? p_math_status DW ?,? p_math_tag DW ?,? p_math_eip DD ? p_math_cs DW ? p_math_op DB ?,? p_math_data_offs DD ? p_math_data_sel DW ?,? p_math_st0 DT ? p_math_st1 DT ? p_math_st2 DT ? p_math_st3 DT ? p_math_st4 DT ? p_math_st5 DT ? p_math_st6 DT ? p_math_st7 DT ? p_math_prev_op DB ?,? p_next DW ? p_prev DW ? p_prio DW ? p_lsb_tics DD ? p_msb_tics DD ? p_data DD ? p_thread_sel DW ? p_tss_sel DW ? p_app_sel DW ? p_signal_spinlock DW ? p_free_proc DD ?,? p_cr3 DD ? p_tls_linear DQ ? p_vm_deb_sel DW ? p_vm_deb_offs DD ? p_pm_deb_sel DW ? p_pm_deb_offs DD ? p_id DW ? p_futex_id DW ? p_flags DW ? p_events DW ? p_process_sel DW ? p_ldt_sel DW ? p_signal DB ? p_parent_switch DB ? p_lib_sel DW ? p_stack_sel DW ? p_sleep_sel DW ? p_sleep_offset DD ? p_wait_list DW ? p_kill DB ? p_is_waiting DB ? p_ref_count DW ? p_core DW ? p_wanted_core DW ? p_int_locked_stack DW ? p_int_prot16_stack DW ? p_int_prot32_stack DW ? p_int_real_stack DD ? p_fault_vector DB ? p_fault_space DB ? p_fault_code DD ? p_mailslot_sel DW ? p_forecolor DB ? p_backcolor DB ? p_row DW ? p_col DW ? p_debug_proc DD ? p_debug_event DW ? p_list_name DB 32 DUP(?) thread_name DB 32 DUP(?) thread_seg ENDS proc_descr_seg STRUC pd_proc_sel DW ? pd_exit_code DW ? pd_wait DW ? pd_dr0 DD ? pd_dr1 DD ? pd_dr2 DD ? pd_dr3 DD ? pd_dr7 DD ? pd_ref_count DB ? pd_section section_typ <> proc_descr_seg ENDS process_seg STRUC ms_virt_flags DW ? ms_wait_sti DW ? ms_cli_thread DW ? ms_thread_count DW ? ms_pd_sel DW ? ms_iopl DW ? process_seg ENDS tss32_seg STRUC tss32_back_link DD ? tss32_esp0 DD ? tss32_ess0 DW ?,? tss32_esp1 DD ? tss32_ess1 DW ?,? tss32_esp2 DD ? tss32_ess2 DW ?,? tss32_cr3 DD ? tss32_eip DD ? tss32_eflags DD ? tss32_eax DD ? tss32_ecx DD ? tss32_edx DD ? tss32_ebx DD ? tss32_esp DD ? tss32_ebp DD ? tss32_esi DD ? tss32_edi DD ? tss32_es DW ?,? tss32_cs DW ?,? tss32_ss DW ?,? tss32_ds DW ?,? tss32_fs DW ?,? tss32_gs DW ?,? tss32_ldt DW ?,? tss32_t DW ? tss32_bitmap DW ? tss32_io_bitmap DW 40h DUP(?) tss32_bitmap_space DW ? tss32_seg ENDS tss64_seg STRUC tss64_resv1 DD ? tss64_rsp0 DQ ? tss64_rsp1 DQ ? tss64_rsp2 DQ ? tss64_resv2 DQ ? tss64_ist1 DQ ? tss64_ist2 DQ ? tss64_ist3 DQ ? tss64_ist4 DQ ? tss64_ist5 DQ ? tss64_ist6 DQ ? tss64_ist7 DQ ? tss64_resv3 DQ ? tss64_resv4 DW ? tss64_bitmap DW ? tss64_io_bitmap DW 40h DUP(?) tss64_bitmap_space DW ? tss64_seg ENDS MAX_SAVE_CORES = 16 SAVE_CORE_SIGN = 1A56CEB1h ; should always be 32 bytes!! save_core_phys_struc STRUC scp_core_phys DQ ? scp_stack_phys DQ ? scp_log_phys DQ ?,? save_core_phys_struc ENDS save_core_struc STRUC sc_sign DD ? sc_cores DW ? sc_phys DB MAX_SAVE_CORES * (SIZE save_core_phys_struc) DUP(?) save_core_struc ENDS CORE_IMAGE_BASE_OFFSET = 0 CORE_IMAGE_STACK_OFFSET = 1000h CORE_IMAGE_LOG_OFFSET = 2000h image_core_struc STRUC ic_cores DW ? ic_linear DD MAX_SAVE_CORES DUP(?) image_core_struc ENDS LOG_CORE_SIGN = 2E65EBBAh LOG_CORE_FLAG_VALID = 1 core_log_seg_struc STRUC clss_sel DW ? clss_flags DW ? clss_base DD ? clss_size DD ? core_log_seg_struc ENDS LOG_CORE_THREAD_RUNNING = 1 LOG_CORE_THREAD_WAKEUP = 2 LOG_CORE_THREAD_READY = 3 MAX_LOG_THREADS = 50 core_log_thread_struc STRUC clt_sel DW ? clt_prio DW ? clt_state DW ? clt_core DW ? clt_wanted_core DW ? clt_name DB 32 DUP(?) core_log_thread_struc ENDS core_log_struc STRUC cls_filler DB 10 DUP(?) cls_core DW ? cls_sign DD ? cls_irq DD ? cls_fault DD ? cls_cr0 DD ? cls_cr2 DD ? cls_cr3 DD ? cls_cr4 DD ? cls_dr0 DD ? cls_dr1 DD ? cls_dr2 DD ? cls_dr3 DD ? cls_dr7 DD ? cls_rip DQ ? cls_rflags DQ ? cls_rax DQ ? cls_rcx DQ ? cls_rdx DQ ? cls_rbx DQ ? cls_rsp DQ ? cls_rbp DQ ? cls_rsi DQ ? cls_rdi DQ ? cls_r8 DQ ? cls_r9 DQ ? cls_r10 DQ ? cls_r11 DQ ? cls_r12 DQ ? cls_r13 DQ ? cls_r14 DQ ? cls_r15 DQ ? cls_nesting DW ? cls_es core_log_seg_struc <> cls_cs core_log_seg_struc <> cls_ss core_log_seg_struc <> cls_ds core_log_seg_struc <> cls_fs core_log_seg_struc <> cls_gs core_log_seg_struc <> cls_ldt core_log_seg_struc <> cls_tr core_log_seg_struc <> cls_gdtr core_log_seg_struc <> cls_idtr core_log_seg_struc <> cls_threads DW ? cls_thread_arr DB MAX_LOG_THREADS * SIZE core_log_thread_struc DUP(?) core_log_struc ENDS