ds
git-svn-id: https://spexeah.com:8443/svn/Asuro@172 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								bin/kernel.bin
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bin/kernel.bin
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/kernel.ppu
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/kernel.ppu
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/libpsystem.a
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/libpsystem.a
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/tss.ppu
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/tss.ppu
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										116
									
								
								src/tss.pas
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								src/tss.pas
									
									
									
									
									
								
							| @@ -17,7 +17,7 @@ uses | ||||
|     console; | ||||
|  | ||||
| type | ||||
|     TTaskStateSegment = packed record | ||||
|     { | ||||
|         Res1       : uint16; | ||||
|         IOPBOffset : uint16; | ||||
|         LDTR       : uint16; | ||||
| @@ -54,6 +54,92 @@ type | ||||
|         ESP0       : uint32; | ||||
|         LINK       : uint16; | ||||
|         Res12      : uint16; | ||||
|     } | ||||
|  | ||||
|     { | ||||
|         Res12      : uint16; | ||||
|         LINK       : uint16; | ||||
|         ESP0       : uint32; | ||||
|         Res11      : uint16; | ||||
|         SS0        : uint16; | ||||
|         Res10      : uint16; | ||||
|         SS1        : uint16; | ||||
|         Res9       : uint16; | ||||
|         SS2        : uint16; | ||||
|         CR3        : uint32; | ||||
|         EIP        : uint32; | ||||
|         EFLAGS     : uint32; | ||||
|         EAX        : uint32; | ||||
|         ECX        : uint32; | ||||
|         EDX        : uint32; | ||||
|         EBX        : uint32; | ||||
|         ESP        : uint32; | ||||
|         EBP        : uint32; | ||||
|         ESI        : uint32; | ||||
|         EDI        : uint32; | ||||
|         Res8       : uint16; | ||||
|         ES         : uint16; | ||||
|         Res7       : uint16; | ||||
|         CS         : uint16; | ||||
|         Res6       : uint16; | ||||
|         SS         : uint16; | ||||
|         Res5       : uint16; | ||||
|         DS         : uint16; | ||||
|         Res4       : uint16; | ||||
|         FS         : uint16; | ||||
|         Res3       : uint16; | ||||
|         GS         : uint16; | ||||
|         Res2       : uint16; | ||||
|         LDTR       : uint16; | ||||
|         IOPBOffset : uint16; | ||||
|         Res1       : uint16; | ||||
|     } | ||||
|  | ||||
|     TTaskStateSegment = packed record | ||||
|         link : uint16; | ||||
|         link_h : uint16; | ||||
|  | ||||
|         esp0 : uint32; | ||||
|         ss0 : uint16; | ||||
|         ss0_h : uint16; | ||||
|  | ||||
|         esp1 : uint32; | ||||
|         ss1 : uint16; | ||||
|         ss1_h : uint16; | ||||
|  | ||||
|         esp2 : uint32; | ||||
|         ss2 : uint16; | ||||
|         ss2_h : uint16; | ||||
|  | ||||
|         cr3 : uint32; | ||||
|         eip : uint32; | ||||
|         eflags : uint32; | ||||
|  | ||||
|         eax : uint32; | ||||
|         ecx : uint32; | ||||
|         edx : uint32; | ||||
|         ebx : uint32; | ||||
|  | ||||
|         esp : uint32; | ||||
|         ebp : uint32; | ||||
|         esi : uint32; | ||||
|         edi : uint32; | ||||
|         es : uint16; | ||||
|         es_h : uint16; | ||||
|         cs : uint16; | ||||
|         cs_h : uint16; | ||||
|         ss : uint16; | ||||
|         ss_h : uint16; | ||||
|         ds : uint16; | ||||
|         ds_h : uint16; | ||||
|         fs : uint16; | ||||
|         fs_h : uint16; | ||||
|         gs : uint16; | ||||
|         gs_h : uint16; | ||||
|         ldt : uint16; | ||||
|         ldt_h : uint16; | ||||
|         trap : uint16; | ||||
|         iomap : uint16; | ||||
|     end; | ||||
|     PTaskStateSegment = ^TTaskStateSegment; | ||||
|  | ||||
| @@ -67,38 +153,22 @@ implementation | ||||
|  | ||||
| procedure init; | ||||
| var | ||||
|     i : uint32; | ||||
|     cESP : uint32; | ||||
|  | ||||
| begin | ||||
|     console.writestringln('A'); | ||||
|     i:=KERNEL_PAGE_NUMBER+4; | ||||
|     console.writestringln('B'); | ||||
|     while not vmemorymanager.new_page(i) do begin | ||||
|         i:= i + 1; | ||||
|     end; | ||||
|     console.writestringln('C'); | ||||
|     ptrTaskStateSegment:= PTaskStateSegment(i SHL 22); | ||||
|     console.writestringln('D'); | ||||
|     ptrTaskStateSegment^.SS0:= $10; | ||||
|     console.writestringln('E'); | ||||
|     ptrTaskStateSegment^.ESP0:= $00; | ||||
|     console.writestringln('F'); | ||||
|     ptrTaskStateSegment^.IOPBOffset:= sizeof(TTaskStateSegment); | ||||
|     console.writestringln('G'); | ||||
|     gdt.set_gate($05, i SHL 22 - KERNEL_VIRTUAL_BASE, sizeof(TTaskStateSegment), $89, $40); //OFFSET: 40 | ||||
|     console.writestringln('H'); | ||||
|     ptrTaskStateSegment^.ss0:= $10; | ||||
|     ptrTaskStateSegment^.iomap:= sizeof(TTaskStateSegment); | ||||
|     gdt.set_gate($05, uint32(ptrTaskStateSegment) - KERNEL_VIRTUAL_BASE, sizeof(TTaskStateSegment), $89, $40); //OFFSET: 40 | ||||
|     asm | ||||
|         MOV cESP, ESP  | ||||
|     end; | ||||
|     console.writestringln('I'); | ||||
|     ptrTaskStateSegment^.ESP0:= cESP; | ||||
|     console.writestringln('J'); | ||||
|     ptrTaskStateSegment^.esp0:= cESP; | ||||
|     console.writestringln('A'); | ||||
|     asm | ||||
|         mov AX, 40 | ||||
|         ltr AX | ||||
|     end; | ||||
|     console.writestringln('K'); | ||||
|     console.writestringln('B'); | ||||
| end; | ||||
|  | ||||
| end. | ||||
		Reference in New Issue
	
	Block a user
	 kieron
					kieron