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; |     console; | ||||||
|  |  | ||||||
| type | type | ||||||
|     TTaskStateSegment = packed record |     { | ||||||
|         Res1       : uint16; |         Res1       : uint16; | ||||||
|         IOPBOffset : uint16; |         IOPBOffset : uint16; | ||||||
|         LDTR       : uint16; |         LDTR       : uint16; | ||||||
| @@ -54,6 +54,92 @@ type | |||||||
|         ESP0       : uint32; |         ESP0       : uint32; | ||||||
|         LINK       : uint16; |         LINK       : uint16; | ||||||
|         Res12      : 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; |     end; | ||||||
|     PTaskStateSegment = ^TTaskStateSegment; |     PTaskStateSegment = ^TTaskStateSegment; | ||||||
|  |  | ||||||
| @@ -67,38 +153,22 @@ implementation | |||||||
|  |  | ||||||
| procedure init; | procedure init; | ||||||
| var | var | ||||||
|     i : uint32; |  | ||||||
|     cESP : uint32; |     cESP : uint32; | ||||||
|  |  | ||||||
| begin | begin | ||||||
|     console.writestringln('A'); |     ptrTaskStateSegment^.ss0:= $10; | ||||||
|     i:=KERNEL_PAGE_NUMBER+4; |     ptrTaskStateSegment^.iomap:= sizeof(TTaskStateSegment); | ||||||
|     console.writestringln('B'); |     gdt.set_gate($05, uint32(ptrTaskStateSegment) - KERNEL_VIRTUAL_BASE, sizeof(TTaskStateSegment), $89, $40); //OFFSET: 40 | ||||||
|     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'); |  | ||||||
|     asm |     asm | ||||||
|         MOV cESP, ESP  |         MOV cESP, ESP  | ||||||
|     end; |     end; | ||||||
|     console.writestringln('I'); |     ptrTaskStateSegment^.esp0:= cESP; | ||||||
|     ptrTaskStateSegment^.ESP0:= cESP; |     console.writestringln('A'); | ||||||
|     console.writestringln('J'); |  | ||||||
|     asm |     asm | ||||||
|         mov AX, 40 |         mov AX, 40 | ||||||
|         ltr AX |         ltr AX | ||||||
|     end; |     end; | ||||||
|     console.writestringln('K'); |     console.writestringln('B'); | ||||||
| end; | end; | ||||||
|  |  | ||||||
| end. | end. | ||||||
		Reference in New Issue
	
	Block a user
	 kieron
					kieron