mirror of
				https://github.com/jart/cosmopolitan.git
				synced 2025-10-28 11:52:56 +00:00 
			
		
		
		
	Fix metal bugs so deathstar.com runs in qemu (#20)
- Remove XD bit in page tables
- Fix cylinder+head+sector arithmetic
- Implement fstat() for serial file descriptors on metal
Here's how to boot an Actually Portable Executable in QEMU:
    make -j12 o//tool/viz/deathstar.com
    qemu-system-x86_64 -serial stdio -fda o//tool/viz/deathstar.com
Here's a screenshot of DEATHSTAR.COM booted in QEMU:
https://justine.lol/cosmopolitan/cosmo-metal-qemu.png
Thus metal support is in much better shape now, but still incomplete.
Only a few system calls have been polyfilled. To figure out which ones
your program needs, simply boot it in the blinkenlights emulator with a
breakpoint, and press CTRL-C to continue to the system call breakpoint.
If it doesn't break then you should be good. (Note: to emulate normally
you can press 'c' and use CTRL-T and ALT-T to tune the speed.)
    m=tiny
    make -j12 SILENT=0 MODE=$m          \
      o/$m/tool/build/blinkenlights.com \
      o/$m/tool/viz/deathstar.com
    o/$m/tool/build/blinkenlights.com   \
      -r -t -b systemfive.linux         \
      o/$m/tool/viz/deathstar.com
Thank @Theldus for the bug report that made this change possible.
Fixes #20 which explains this change further.
			
			
This commit is contained in:
		
							parent
							
								
									58d9659d53
								
							
						
					
					
						commit
						f0600a898c
					
				
					 13 changed files with 182 additions and 119 deletions
				
			
		|  | @ -28,7 +28,10 @@ program_invocation_short_name: | |||
| 
 | ||||
| 	.init.start 400,_init_program_invocation_short_name | ||||
| 	push	%rsi | ||||
| 	mov	(%r13),%rsi | ||||
| 	xor	%eax,%eax | ||||
| 	test	%r12d,%r12d		# argc | ||||
| 	jz	2f | ||||
| 	mov	(%r13),%rsi		# argv[0] | ||||
| 	mov	%rsi,%rcx | ||||
| 1:	lodsb | ||||
| 	cmp	$'/,%al | ||||
|  | @ -39,5 +42,5 @@ program_invocation_short_name: | |||
| 	jnz	1b | ||||
| 	xchg	%rcx,%rax | ||||
| 	pop	%rsi | ||||
| 	stosq | ||||
| 2:	stosq | ||||
| 	.init.end 400,_init_program_invocation_short_name | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue