mirror of
https://github.com/reactos/reactos.git
synced 2024-10-14 21:25:14 +00:00
Delete cruft
svn path=/trunk/; revision=14783
This commit is contained in:
parent
7f7e3e1cf6
commit
9a7799d8b8
|
@ -332,7 +332,6 @@ OBJECTS_KD = \
|
||||||
kd/dlog.o \
|
kd/dlog.o \
|
||||||
kd/gdbstub.o \
|
kd/gdbstub.o \
|
||||||
kd/kdebug.o \
|
kd/kdebug.o \
|
||||||
kd/mda.o \
|
|
||||||
kd/service.o
|
kd/service.o
|
||||||
|
|
||||||
# User-Mode Debugging (Dbgk)
|
# User-Mode Debugging (Dbgk)
|
||||||
|
|
|
@ -1,131 +0,0 @@
|
||||||
/* $Id$
|
|
||||||
*
|
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
|
||||||
* PROJECT: ReactOS kernel
|
|
||||||
* FILE: ntoskrnl/kd/mda.c
|
|
||||||
* PURPOSE: Support for debugging using an MDA card.
|
|
||||||
*
|
|
||||||
* PROGRAMMERS: David Welch <welch@cwcom.net>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* INCLUDES ******************************************************************/
|
|
||||||
|
|
||||||
#include <ntoskrnl.h>
|
|
||||||
#include <internal/kdb.h>
|
|
||||||
|
|
||||||
/* VARIABLES ***************************************************************/
|
|
||||||
|
|
||||||
STATIC ULONG MdaIndexPort;
|
|
||||||
STATIC ULONG MdaValuePort;
|
|
||||||
STATIC ULONG MdaStatusPort;
|
|
||||||
STATIC ULONG MdaGfxPort;
|
|
||||||
STATIC ULONG MdaModePort;
|
|
||||||
STATIC PUSHORT VideoBuffer;
|
|
||||||
|
|
||||||
#define MDA_COLUMNS (80)
|
|
||||||
#define MDA_LINES (25)
|
|
||||||
|
|
||||||
STATIC ULONG MdaCursorX, MdaCursorY;
|
|
||||||
|
|
||||||
/* PRIVATE FUNCTIONS ********************************************************/
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
VOID STATIC
|
|
||||||
KdWriteByteMDA(ULONG Reg, ULONG Value)
|
|
||||||
{
|
|
||||||
WRITE_PORT_UCHAR((PUCHAR)MdaIndexPort, (CHAR)Reg);
|
|
||||||
WRITE_PORT_UCHAR((PUCHAR)MdaValuePort, (CHAR)Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID STATIC
|
|
||||||
KdWriteWordMDA(ULONG Reg, ULONG Value)
|
|
||||||
{
|
|
||||||
WRITE_PORT_UCHAR((PUCHAR)MdaIndexPort, (CHAR)Reg);
|
|
||||||
WRITE_PORT_UCHAR((PUCHAR)MdaValuePort, (CHAR)(Value >> 8));
|
|
||||||
WRITE_PORT_UCHAR((PUCHAR)MdaIndexPort, (CHAR)(Reg + 1));
|
|
||||||
WRITE_PORT_UCHAR((PUCHAR)MdaValuePort, (CHAR)(Value & 0xFF));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VOID
|
|
||||||
KdInitializeMda(VOID)
|
|
||||||
{
|
|
||||||
/* Setup the variables for the various port addresses. */
|
|
||||||
MdaIndexPort = 0x3b4;
|
|
||||||
MdaValuePort = 0x3b5;
|
|
||||||
MdaModePort = 0x3b8;
|
|
||||||
MdaStatusPort = 0x3ba;
|
|
||||||
MdaGfxPort = 0x3bf;
|
|
||||||
|
|
||||||
VideoBuffer = (PUSHORT)(0xff3b0000);
|
|
||||||
|
|
||||||
MdaCursorX = MdaCursorY = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID STATIC
|
|
||||||
KdScrollMda(VOID)
|
|
||||||
{
|
|
||||||
memmove(&VideoBuffer[(MDA_COLUMNS * 0) + 0],
|
|
||||||
&VideoBuffer[(MDA_COLUMNS * 1) + 0],
|
|
||||||
MDA_COLUMNS * (MDA_LINES - 1) * 2);
|
|
||||||
memset(&VideoBuffer[(MDA_COLUMNS * (MDA_LINES - 1)) + 0], 0,
|
|
||||||
MDA_COLUMNS * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID STATIC
|
|
||||||
KdPutCharMda(CHAR Ch)
|
|
||||||
{
|
|
||||||
if (Ch == '\n')
|
|
||||||
{
|
|
||||||
if (MdaCursorY == (MDA_LINES - 1))
|
|
||||||
{
|
|
||||||
KdScrollMda();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MdaCursorY++;
|
|
||||||
}
|
|
||||||
MdaCursorX = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
VideoBuffer[(MdaCursorY * MDA_COLUMNS) + MdaCursorX] = (Ch & 0xFF) | 0x0700;
|
|
||||||
MdaCursorX++;
|
|
||||||
if (MdaCursorX == (MDA_COLUMNS - 1))
|
|
||||||
{
|
|
||||||
if (MdaCursorY == (MDA_LINES - 1))
|
|
||||||
{
|
|
||||||
KdScrollMda();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MdaCursorY++;
|
|
||||||
}
|
|
||||||
MdaCursorX = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID
|
|
||||||
KdPrintMda(PCH pch)
|
|
||||||
{
|
|
||||||
while((*pch) != 0)
|
|
||||||
{
|
|
||||||
if ((*pch) == '\t')
|
|
||||||
{
|
|
||||||
KdPutCharMda(' ');
|
|
||||||
KdPutCharMda(' ');
|
|
||||||
KdPutCharMda(' ');
|
|
||||||
KdPutCharMda(' ');
|
|
||||||
}
|
|
||||||
if ((*pch) == '\r')
|
|
||||||
{
|
|
||||||
/* Nothing. */
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
KdPutCharMda(*pch);
|
|
||||||
}
|
|
||||||
pch++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* EOF */
|
|
|
@ -1,382 +0,0 @@
|
||||||
#include <roscfg.h>
|
|
||||||
#include <internal/ntoskrnl.h>
|
|
||||||
#include <internal/i386/ke.h>
|
|
||||||
#include <internal/i386/segment.h>
|
|
||||||
#include <internal/ps.h>
|
|
||||||
#include <internal/i386/mm.h>
|
|
||||||
#include <internal/i386/fpu.h>
|
|
||||||
|
|
||||||
#define MULTIBOOT_HEADER_MAGIC (0x1BADB002)
|
|
||||||
|
|
||||||
#define MULTIBOOT_HEADER_FLAGS (0x00010003)
|
|
||||||
|
|
||||||
#define V2P(x) (x - KERNEL_BASE + 0x200000)
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
|
|
||||||
#define AP_MAGIC (0x12481020)
|
|
||||||
|
|
||||||
#endif /* CONFIG_SMP */
|
|
||||||
|
|
||||||
.globl _NtProcessStartup
|
|
||||||
.globl _start
|
|
||||||
.globl _init_stack
|
|
||||||
.globl _init_stack_top
|
|
||||||
.globl _trap_stack
|
|
||||||
.globl _trap_stack_top
|
|
||||||
.globl _unmap_me
|
|
||||||
.globl _unmap_me2
|
|
||||||
.globl _unmap_me3
|
|
||||||
.globl _unmap_me4
|
|
||||||
.globl _pagetable_start
|
|
||||||
.globl _pagetable_end
|
|
||||||
.globl _pae_pagedirtable
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is called by the realmode loader, with protected mode
|
|
||||||
* enabled, paging disabled and the segment registers pointing
|
|
||||||
* a 4Gb, 32-bit segment starting at zero.
|
|
||||||
*
|
|
||||||
* EAX = Multiboot magic or application processor magic
|
|
||||||
*
|
|
||||||
* EBX = Points to a structure in lowmem with data from the
|
|
||||||
* loader
|
|
||||||
*/
|
|
||||||
|
|
||||||
_NtProcessStartup:
|
|
||||||
_start:
|
|
||||||
jmp _multiboot_entry
|
|
||||||
|
|
||||||
/* Align 32 bits boundary */
|
|
||||||
.align 4
|
|
||||||
|
|
||||||
/* Multiboot header */
|
|
||||||
multiboot_header:
|
|
||||||
/* magic */
|
|
||||||
.long MULTIBOOT_HEADER_MAGIC
|
|
||||||
/* flags */
|
|
||||||
.long MULTIBOOT_HEADER_FLAGS
|
|
||||||
/* checksum */
|
|
||||||
.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
|
|
||||||
/* header_addr */
|
|
||||||
.long (0x200000 + multiboot_header - KERNEL_BASE)
|
|
||||||
/* load_addr */
|
|
||||||
.long 0x200000
|
|
||||||
/* load_end_addr */
|
|
||||||
.long (__bss_start__ + 0x200000 - KERNEL_BASE)
|
|
||||||
/* bss_end_addr */
|
|
||||||
.long (__bss_end__ + 0x200000 - KERNEL_BASE)
|
|
||||||
/* entry_addr */
|
|
||||||
.long (0x200000 + _start - KERNEL_BASE)
|
|
||||||
|
|
||||||
_multiboot_entry:
|
|
||||||
/*
|
|
||||||
* This must be PIC because we haven't set up paging yet
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Gcc expects this at all times
|
|
||||||
*/
|
|
||||||
cld
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Save the multiboot or application processor magic
|
|
||||||
*/
|
|
||||||
movl %eax, %edx
|
|
||||||
|
|
||||||
cmpl $AP_MAGIC, %edx
|
|
||||||
je .m1
|
|
||||||
|
|
||||||
#endif /* CONFIG_SMP */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Zero the BSS
|
|
||||||
*/
|
|
||||||
movl %eax, %edx
|
|
||||||
movl $0, %eax
|
|
||||||
movl $__bss_end__, %ecx
|
|
||||||
subl $__bss_start__, %ecx
|
|
||||||
shr $2, %ecx
|
|
||||||
movl $__bss_start__, %edi
|
|
||||||
subl $KERNEL_BASE, %edi
|
|
||||||
addl $0x200000, %edi
|
|
||||||
rep
|
|
||||||
stosl
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize the page directory
|
|
||||||
*/
|
|
||||||
movl $V2P(startup_pagedirectory), %esi
|
|
||||||
movl $(V2P(lowmem_pagetable) + 0x3), 0x0(%esi)
|
|
||||||
movl $(V2P(kernel_pagetable) + 0x3), (KERNEL_BASE >> 20)(%esi)
|
|
||||||
movl $(V2P(kernel_pagetable+4096) + 0x3), ((KERNEL_BASE >> 20) + 4)(%esi)
|
|
||||||
|
|
||||||
movl $(V2P(startup_pagedirectory) + 0x3), 0xF00(%esi)
|
|
||||||
movl $(V2P(hyperspace_pagetable) + 0x3), 0xF08(%esi)
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
movl $(V2P(apic_pagetable) + 0x3), 0xFEC(%esi)
|
|
||||||
#endif /* CONFIG_SMP */
|
|
||||||
movl $(V2P(kpcr_pagetable) + 0x3), 0xFF0(%esi)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize the page table that maps low memory
|
|
||||||
*/
|
|
||||||
movl $V2P(lowmem_pagetable), %esi
|
|
||||||
movl $0x7, %eax
|
|
||||||
movl $0, %edi
|
|
||||||
.l3:
|
|
||||||
movl %eax, (%esi, %edi)
|
|
||||||
addl $0x1000, %eax
|
|
||||||
addl $4, %edi
|
|
||||||
cmpl $4096, %edi
|
|
||||||
jl .l3
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize the page table that maps kernel memory
|
|
||||||
*/
|
|
||||||
movl $V2P(kernel_pagetable), %esi
|
|
||||||
movl $0x200003, %eax
|
|
||||||
movl $0, %edi
|
|
||||||
.l4:
|
|
||||||
movl %eax, (%esi, %edi)
|
|
||||||
addl $0x1000, %eax
|
|
||||||
addl $4, %edi
|
|
||||||
cmpl $6144, %edi
|
|
||||||
jl .l4
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize the page table that maps the APIC register address space
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* FIXME: APIC register address space can be non-standard so do the
|
|
||||||
* mapping later
|
|
||||||
*/
|
|
||||||
movl $V2P(apic_pagetable), %esi
|
|
||||||
movl $0, %edi
|
|
||||||
movl $0xFEC0001B, %eax
|
|
||||||
movl %eax, (%esi, %edi)
|
|
||||||
movl $0x800, %edi
|
|
||||||
movl $0xFEE0001B, %eax
|
|
||||||
movl %eax, (%esi, %edi)
|
|
||||||
|
|
||||||
#endif /* CONFIG_SMP */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize the page table that maps the initial KPCR (at FF000000)
|
|
||||||
*/
|
|
||||||
movl $V2P(kpcr_pagetable), %esi
|
|
||||||
movl $0, %edi
|
|
||||||
movl $0x1003, %eax
|
|
||||||
movl %eax, (%esi, %edi)
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
|
|
||||||
.m1:
|
|
||||||
/*
|
|
||||||
* Check for pae mode (only possible for an application processor)
|
|
||||||
*/
|
|
||||||
|
|
||||||
movl $(V2P(_Ke386Pae)), %eax
|
|
||||||
cmpb $0, (%eax)
|
|
||||||
je .m3
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Set up the PDBR
|
|
||||||
*/
|
|
||||||
movl $(V2P(_pae_pagedirtable)), %eax
|
|
||||||
movl %eax, %cr3
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Enable pae mode
|
|
||||||
*/
|
|
||||||
movl %cr4, %eax
|
|
||||||
orl $X86_CR4_PAE, %eax
|
|
||||||
movl %eax, %cr4
|
|
||||||
|
|
||||||
jmp .m4
|
|
||||||
|
|
||||||
.m3:
|
|
||||||
|
|
||||||
#endif /* CONFIG_SMP */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Set up the PDBR
|
|
||||||
*/
|
|
||||||
movl $(V2P(startup_pagedirectory)), %eax
|
|
||||||
movl %eax, %cr3
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
.m4:
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Enable paging and set write protect
|
|
||||||
*/
|
|
||||||
movl %cr0, %eax
|
|
||||||
orl $0x80010000, %eax
|
|
||||||
movl %eax, %cr0
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Do an absolute jump because we now want to execute above 0xc0000000
|
|
||||||
*/
|
|
||||||
movl $.l2, %eax
|
|
||||||
jmp *%eax
|
|
||||||
.l2:
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Load the GDTR and IDTR with new tables located above
|
|
||||||
* 0xc0000000
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* FIXME: Application processors should have their own GDT/IDT */
|
|
||||||
lgdt _KiGdtDescriptor
|
|
||||||
lidt _KiIdtDescriptor
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Reload the data segment registers
|
|
||||||
*/
|
|
||||||
movl $KERNEL_DS, %eax
|
|
||||||
movl %eax, %ds
|
|
||||||
movl %eax, %es
|
|
||||||
movl %eax, %gs
|
|
||||||
movl %eax, %ss
|
|
||||||
movl $0, %eax
|
|
||||||
movl %eax, %fs
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
|
|
||||||
cmpl $AP_MAGIC, %edx
|
|
||||||
jne .m2
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is an application processor executing
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize EFLAGS
|
|
||||||
*/
|
|
||||||
pushl $0
|
|
||||||
popfl
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Reserve space for the floating point save area.
|
|
||||||
*/
|
|
||||||
subl $SIZEOF_FX_SAVE_AREA, %esp
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Call the application processor initialization code
|
|
||||||
*/
|
|
||||||
pushl $0
|
|
||||||
pushl $.l7
|
|
||||||
pushl $KERNEL_CS
|
|
||||||
pushl $_KiSystemStartup
|
|
||||||
lret
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Catch illegal returns from KiSystemStartup
|
|
||||||
*/
|
|
||||||
.l7:
|
|
||||||
popl %eax
|
|
||||||
pushl $0
|
|
||||||
call _KeBugCheck@4
|
|
||||||
popl %eax
|
|
||||||
.l8:
|
|
||||||
jmp .l8
|
|
||||||
|
|
||||||
|
|
||||||
.m2:
|
|
||||||
|
|
||||||
#endif /* CONFIG_SMP */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Load the PCR selector
|
|
||||||
*/
|
|
||||||
movl $PCR_SELECTOR, %eax
|
|
||||||
movl %eax, %fs
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Load the initial kernel stack
|
|
||||||
*/
|
|
||||||
movl $(_init_stack_top - SIZEOF_FX_SAVE_AREA), %esp
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize EFLAGS
|
|
||||||
*/
|
|
||||||
pushl $0
|
|
||||||
popfl
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Call the main kernel initialization
|
|
||||||
*/
|
|
||||||
movl $0, %ebp
|
|
||||||
pushl %ebx
|
|
||||||
pushl %edx
|
|
||||||
pushl $.l5
|
|
||||||
pushl $KERNEL_CS
|
|
||||||
pushl $__main
|
|
||||||
lret
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Catch illegal returns from main, try bug checking the system,
|
|
||||||
* if that fails then loop forever.
|
|
||||||
*/
|
|
||||||
.l5:
|
|
||||||
popl %eax
|
|
||||||
popl %eax
|
|
||||||
pushl $0
|
|
||||||
call _KeBugCheck@4
|
|
||||||
popl %eax
|
|
||||||
.l6:
|
|
||||||
jmp .l6
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This needs to be page aligned so put it at the beginning of the bss
|
|
||||||
* segment
|
|
||||||
*/
|
|
||||||
.bss
|
|
||||||
_pagetable_start:
|
|
||||||
startup_pagedirectory:
|
|
||||||
.fill 4096, 1, 0
|
|
||||||
|
|
||||||
lowmem_pagetable:
|
|
||||||
.fill 4096, 1, 0
|
|
||||||
|
|
||||||
kernel_pagetable:
|
|
||||||
.fill 2*4096, 1, 0
|
|
||||||
|
|
||||||
hyperspace_pagetable:
|
|
||||||
.fill 4096, 1, 0
|
|
||||||
|
|
||||||
_pae_pagedirtable:
|
|
||||||
.fill 4096, 1, 0
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
apic_pagetable:
|
|
||||||
.fill 4096, 1, 0
|
|
||||||
#endif /* CONFIG_SMP */
|
|
||||||
|
|
||||||
kpcr_pagetable:
|
|
||||||
.fill 4096, 1, 0
|
|
||||||
_pagetable_end:
|
|
||||||
_unmap_me:
|
|
||||||
.fill 4096, 1, 0
|
|
||||||
|
|
||||||
_init_stack:
|
|
||||||
.fill 3*4096, 1, 0
|
|
||||||
_init_stack_top:
|
|
||||||
|
|
||||||
_unmap_me2:
|
|
||||||
.fill 4096, 1, 0
|
|
||||||
|
|
||||||
_trap_stack:
|
|
||||||
.fill 3*4096, 1, 0
|
|
||||||
_trap_stack_top:
|
|
||||||
|
|
||||||
_unmap_me3:
|
|
||||||
.fill 4096, 1, 0
|
|
Loading…
Reference in a new issue