====== Differences ====== This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
soc:2008:dverkamp:journal:start [2008/06/10 04:17] mdc |
soc:2008:dverkamp:journal:start [2008/08/15 12:06] (current) drv |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Journal ===== | ===== Journal ===== | ||
- | ==== Week 0 ==== | + | * [[ week12 | Week 12]] |
- | ---- | + | * [[ week10 | Week 10]] |
- | + | * [[ week9 | Week 9 ]] | |
- | === 19 May 2008 === | + | * [[ week8 | Week 8 ]] |
- | + | * [[ week7 | Week 7 ]] | |
- | Journal created. | + | * [[ week6 | Week 6 ]] |
- | + | * [[ week5 | Week 5 ]] | |
- | === 21 May 2008 === | + | * [[ week4 | Week 4 ]] |
- | + | * [[ week3 | Week 3 ]] | |
- | * Image type detection by filename: check image->uri? | + | * [[ week2 | Week 2 ]] |
- | * arch/i386/README.i386: use libpm for COM32 transitions, librm for 16-bit COMBOOT | + | * [[ week1 | Week 1 ]] |
- | * hook_bios_interrupt -> hook the COMBOOT API ints (for 16-bit) with stubs that call back into gPXE? | + | * [[ week0 | Week 0 ]] |
- | * REAL_CODE, PHYS_CODE in inline asm | + | |
- | * memcpy_user, real_to_user | + | |
- | * i386_all_regs, regs_t (ordered like PUSHA) types | + | |
- | * _virt_to_phys to switch from etherboot-style virtual address space to flat physical addresses (COM32) | + | |
- | * basemem_packet (BASEMEM_PACKET_LEN = 1514) | + | |
- | * arch/i386/include/virtaddr.h: VIRTUAL/PHYSICAL/REAL_CS/DS | + | |
- | * install_rm_callback_interface | + | |
- | * Split COMBOOT and C32 or use the same image type for both? | + | |
- | + | ||
- | == TODO == | + | |
- | + | ||
- | * Check current PXE API support | + | |
- | * Find out how to add config option for image type | + | |
- | + | ||
- | === 23 May 2008 === | + | |
- | + | ||
- | * Had meeting with mdc and mcb30; discussed basic architecture for COMBOOT support | + | |
- | * Discovered how near RET from 16-bit COMBOOT works - INT 20h at byte 0 of segment (documented as part of PSP in COMBOOT spec) | + | |
- | * Sample hook_bios_interrupt/call_prot code from mcb30; see [[soc/2008/dverkamp/notes/hook_bios_interrupt]] | + | |
- | * Finished basic 16-bit COMBOOT loading and INT 20h and INT 21h AH=02h hooks {{:soc:2008:dverkamp:journal:dverkamp-may-23-2008.png|}} | + | |
- | + | ||
- | === 24 May 2008 === | + | |
- | + | ||
- | * Figured out and fixed why RET wasn't working - top of stack wasn't being cleared | + | |
- | * Cleaned up and committed beginnings of COMBOOT API | + | |
- | + | ||
- | ==== Week 1 ==== | + | |
- | ---- | + | |
- | + | ||
- | === 25-26 May 2008 === | + | |
- | + | ||
- | * Allow COMBOOT images to return via INT 20h - save the (far) return address during exec, then save the old stack address in the PSP, so in INT 20h handler, just change back to old stack and do RETF | + | |
- | * Handle other termination API functions (INT 21h, AH=00h and AH=4Ch) - call INT 20h handler | + | |
- | * Handle INT 21h, AH=09h (Write DOS String to Console) and AH=30h (Check DOS Version) | + | |
- | + | ||
- | === 29 May 2008 === | + | |
- | + | ||
- | * Add beginning of SYSLINUX AX=0001h (get version) and AX=0003h (run command) | + | |
- | * Run command function was looping on itself (comboot executable ran again when "boot" executed?), so did similar "unregister image while running" like image/script.c | + | |
- | + | ||
- | === 30 May 2008 === | + | |
- | + | ||
- | * Meeting with mdc | + | |
- | ==== Week 2 ==== | + | |
- | ---- | + | |
- | + | ||
- | === 02 June 2008 === | + | |
- | + | ||
- | * Message to soc-mentors discussing implementation details; learned how to get available memory, test if key is hit, call protected-mode code with flat-memory setup, etc. | + | |
- | * Finish COMBOOT API "Get Version" - return address of version and copyright strings [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=4f02100d29583bd9586e4a832eb910f9192d304b | 4f02100d29583bd9586e4a832eb910f9192d304b ]] | + | |
- | * Fill in correct value for available memory field in PSP header [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commit;h=c07e41f20e6ef9b89e290733d5c06a8fcadfb0e1 | c07e41f20e6ef9b89e290733d5c06a8fcadfb0e1 ]] | + | |
- | + | ||
- | === 03 June 2008 === | + | |
- | + | ||
- | * Initial try at COM32 support; helper functions are not implemented yet, so nothing really works [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=6d18cc20c85e7a1a195705d1da6bd67c0917138f | 6d18cc20c85e7a1a195705d1da6bd67c0917138f ]] | + | |
- | * Wrappers for COM32 helper functions to switch between flat mapping used by COM32 and the virtual address space used by gPXE (COM32 still mainly untested) [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=d5e92f83c8fba51e0a2c803b9204bae7d86c9cd8 | d5e92f83c8fba51e0a2c803b9204bae7d86c9cd8 ]] | + | |
- | * Some small fixes to COMBOOT (always load the image in the same place, and use that fact to locate the PSP even if the image changes segment registers) [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=245547103ed490bfc380d94ea7f7634a6e46f11a | 245547103ed490bfc380d94ea7f7634a6e46f11a ]] | + | |
- | + | ||
- | TODO: | + | |
- | * Find correct end of available memory value for ESP before executing COM32 images | + | |
- | * Finish helper functions (copy between registers and com32sys_t structs) | + | |
- | + | ||
- | === 04 June 2008 === | + | |
- | + | ||
- | * Find end of memory value from walking memmap and pass it to COM32 programs [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=164672592936bb3026b4ada3113b3e66f0e6f51c || 164672592936bb3026b4ada3113b3e66f0e6f51c ]] | + | |
- | + | ||
- | === 05 June 2008 === | + | |
- | + | ||
- | * Fix a lot of small things related to COM32; now ''hello.c32'' and ''hello2.c32'' run correctly! | + | |
- | + | ||
- | [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=3876fad11e9f4ba3d8319eaadffce7c30aaaeaa6 || 3876fad11e9f4ba3d8319eaadffce7c30aaaeaa6 ]], [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=bcb1ffca2899973f73381d36cdae88e7c13c0881 || bcb1ffca2899973f73381d36cdae88e7c13c0881 ]], [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=32030bd5f16208b01441eed8ef0d101362770ef0 || 32030bd5f16208b01441eed8ef0d101362770ef0 ]], [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=8f4adae9cb357b8f88beea16439fa2afdcc127d3 || 8f4adae9cb357b8f88beea16439fa2afdcc127d3 ]], [[ http://git.etherboot.org/?p=people/dverkamp/gpxe.git;a=commitdiff;h=f7a3b956e3eaa5689da98721d1bbb55910b5d6c1 || f7a3b956e3eaa5689da98721d1bbb55910b5d6c1 ]] | + | |
- | + | ||
- | {{:soc:2008:dverkamp:journal:jun-05-2008.png|}} | + | |
- | + | ||
- | * Only the intcall helper is implemented; the farcall and cfarcall helper functions are still unimplemented, but should be relatively easy now that intcall is working | + | |
- | + | ||
- | ==== Week 3 ==== | + | |
- | ---- | + | |