From 4f01251a6bcd6237a7a53aebc2f8b67ffe2071f4 Mon Sep 17 00:00:00 2001 From: Thomas Oltmann Date: Sat, 20 Dec 2025 17:07:09 +0100 Subject: [PATCH] Stale changes --- .exrc | 64 +++++++++++++++++++++++++ bochs.slirp | 6 +++ bochsrc.txt | 62 ++++++++++++++++++++++++ boot.ipxe | 12 +++++ eth_null-tx.log | Bin 0 -> 516 bytes eth_null-txdump.txt | 71 ++++++++++++++++++++++++++++ lboot.S | 46 +++++++++++++++++- target.xml | 112 ++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 371 insertions(+), 2 deletions(-) create mode 100644 .exrc create mode 100644 bochs.slirp create mode 100644 bochsrc.txt create mode 100644 boot.ipxe create mode 100644 eth_null-tx.log create mode 100644 eth_null-txdump.txt create mode 100644 target.xml diff --git a/.exrc b/.exrc new file mode 100644 index 0000000..835f9fb --- /dev/null +++ b/.exrc @@ -0,0 +1,64 @@ +let s:cpo_save=&cpo +set cpo&vim +inoremap u +inoremap u +nnoremap :bn +nnoremap  :bp +nnoremap  nohlsearch|diffupdate|normal!   +nmap  d +nnoremap  t :TagbarToggle +nnoremap  v :NERDTreeFind +nnoremap  f :NERDTreeToggle +omap % (MatchitOperationForward) +xmap % (MatchitVisualForward) +nmap % (MatchitNormalForward) +nnoremap & :&& +xnoremap @ mode() ==# 'V' ? ':normal! @'.getcharstr().' ' : '@' +xnoremap Q mode() ==# 'V' ? ':normal! @=reg_recorded()  ' : 'Q' +nnoremap Y y$ +omap [% (MatchitOperationMultiBackward) +xmap [% (MatchitVisualMultiBackward) +nmap [% (MatchitNormalMultiBackward) +omap ]% (MatchitOperationMultiForward) +xmap ]% (MatchitVisualMultiForward) +nmap ]% (MatchitNormalMultiForward) +xmap a% (MatchitVisualTextObject) +omap g% (MatchitOperationBackward) +xmap g% (MatchitVisualBackward) +nmap g% (MatchitNormalBackward) +xmap (MatchitVisualTextObject) (MatchitVisualMultiBackward)o(MatchitVisualMultiForward) +onoremap (MatchitOperationMultiForward) :call matchit#MultiMatch("W", "o") +onoremap (MatchitOperationMultiBackward) :call matchit#MultiMatch("bW", "o") +xnoremap (MatchitVisualMultiForward) :call matchit#MultiMatch("W", "n") m'gv`` +xnoremap (MatchitVisualMultiBackward) :call matchit#MultiMatch("bW", "n") m'gv`` +nnoremap (MatchitNormalMultiForward) :call matchit#MultiMatch("W", "n") +nnoremap (MatchitNormalMultiBackward) :call matchit#MultiMatch("bW", "n") +onoremap (MatchitOperationBackward) :call matchit#Match_wrapper('',0,'o') +onoremap (MatchitOperationForward) :call matchit#Match_wrapper('',1,'o') +xnoremap (MatchitVisualBackward) :call matchit#Match_wrapper('',0,'v') m'gv`` +xnoremap (MatchitVisualForward) :call matchit#Match_wrapper('',1,'v') :if col("''") != col("$") | exe ":normal! m'" | endif gv`` +nnoremap (MatchitNormalBackward) :call matchit#Match_wrapper('',0,'n') +nnoremap (MatchitNormalForward) :call matchit#Match_wrapper('',1,'n') +nnoremap :bn +nnoremap :bp +nnoremap :bn +nnoremap :bp +nmap d +nnoremap nohlsearch|diffupdate|normal!   +inoremap  u +inoremap  u +let &cpo=s:cpo_save +unlet s:cpo_save +set clipboard=unnamedplus +set expandtab +set grepformat=%f:%l:%c:%m +set grepprg=rg\ --vimgrep\ -uu\ +set guifont=SourceCodePro +set helplang=de +set path=.,,,** +set runtimepath=~/.config/nvim,~/.local/share/nvim/plugged/vim-glsl,~/.local/share/nvim/plugged/nerdtree,~/.local/share/nvim/plugged/tagbar,/etc/xdg/nvim,~/.local/share/nvim/site,/usr/local/share/nvim/site,/usr/share/nvim/site,/usr/share/nvim/runtime,/usr/share/nvim/runtime/pack/dist/opt/netrw,/usr/share/nvim/runtime/pack/dist/opt/matchit,/usr/lib64/nvim,/usr/share/nvim/site/after,/usr/local/share/nvim/site/after,~/.local/share/nvim/site/after,/etc/xdg/nvim/after,~/.local/share/nvim/plugged/vim-glsl/after,~/.config/nvim/after +set shiftwidth=4 +set tabstop=4 +set termguicolors +set window=42 +" vim: set ft=vim : diff --git a/bochs.slirp b/bochs.slirp new file mode 100644 index 0000000..e3fc8d4 --- /dev/null +++ b/bochs.slirp @@ -0,0 +1,6 @@ +restricted +net 10.0.0.0 +mask 255.255.255.0 +host 10.0.0.1 +dhcpstart 10.0.0.2 +bootfile boot.bin diff --git a/bochsrc.txt b/bochsrc.txt new file mode 100644 index 0000000..6df5556 --- /dev/null +++ b/bochsrc.txt @@ -0,0 +1,62 @@ +# configuration file generated by Bochs +plugin_ctrl: unmapped=true, biosdev=true, speaker=true, extfpuirq=true, parallel=true, serial=true, e1000=true, iodebug=true, usb_uhci=false, usb_ohci=false, usb_ehci=false, usb_xhci=false +config_interface: textconfig +display_library: sdl2 +memory: host=32, guest=32 +romimage: file="/usr/share/bochs/BIOS-bochs-latest", address=0x00000000, options=none +vgaromimage: file="/usr/share/bochs/VGABIOS-lgpl-latest" +boot: floppy +floppy_bootsig_check: disabled=0 +floppya: type=1_44 +# no floppyb +ata0: enabled=true, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +ata0-master: type=cdrom, path="/home/thomas/src/ipxe/src/bin/ipxe.iso", status=inserted +ata0-slave: type=none +ata1: enabled=false +ata2: enabled=false +ata3: enabled=false +optromimage1: file=none +optromimage2: file=none +optromimage3: file=none +optromimage4: file=none +optramimage1: file=none +optramimage2: file=none +optramimage3: file=none +optramimage4: file=none +pci: enabled=1, chipset=i440fx, slot1=none, slot2=none, slot3=none, slot4=none, slot5=none +vga: extension=vbe, update_freq=5, realtime=1, ddc=builtin +cpu: count=1:1:1, ips=4000000, quantum=16, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0 +cpuid: level=6, stepping=3, model=3, family=6, vendor_string="GenuineIntel", brand_string=" Intel(R) Pentium(R) 4 CPU " +cpuid: mmx=true, apic=xapic, simd=sse2, sse4a=false, misaligned_sse=false, sep=true +cpuid: movbe=false, adx=false, aes=false, sha=false, xsave=false, xsaveopt=false, avx_f16c=false +cpuid: avx_fma=false, bmi=0, xop=false, fma4=false, tbm=false, x86_64=true, 1g_pages=false +cpuid: pcid=false, fsgsbase=false, smep=false, smap=false, mwait=true +print_timestamps: enabled=0 +debugger_log: - +magic_break: enabled=0 +port_e9_hack: enabled=0 +private_colormap: enabled=0 +clock: sync=none, time0=local, rtc_sync=0 +# no cmosimage +log: - +logprefix: %t%e%d +debug: action=ignore +info: action=report +error: action=report +panic: action=ask +keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none +mouse: type=ps2, enabled=false, toggle=ctrl+mbutton +speaker: enabled=true, mode=system +parport1: enabled=true, file=none +parport2: enabled=false +com1: enabled=true, mode=null +com2: enabled=false +com3: enabled=false +com4: enabled=false +#e1000: card=0, enabled=true, mac=bb:bd:bb:bb:aa:aa, ethmod=linux, ethdev="enp0s25", script=none, bootrom=none +#e1000: card=0, enabled=true, mac=bb:bd:bb:bb:aa:aa, ethmod=linux, ethdev="lo", script=none, bootrom=none +#e1000: card=0, enabled=true, mac=bb:bd:bb:bb:aa:aa, ethmod=linux, ethdev="emubr0", script=none, bootrom=none +e1000: card=0, enabled=true, mac=bb:bd:bb:bb:aa:aa, ethmod=slirp, ethdev=".", script="bochs.slirp", bootrom=none +e1000: card=1, enabled=false +e1000: card=2, enabled=false +e1000: card=3, enabled=false diff --git a/boot.ipxe b/boot.ipxe new file mode 100644 index 0000000..28e9a6b --- /dev/null +++ b/boot.ipxe @@ -0,0 +1,12 @@ +#!ipxe + +ifopen net0 + +set net0/ip 10.0.0.2 +set net0/netmask 255.255.255.0 +set net0/dns 10.0.0.1 +set net0/gateway ${net0/dns} +set net0/next-server ${net0/dns} +set net0/filename boot.bin + +chain ${net0/filename} diff --git a/eth_null-tx.log b/eth_null-tx.log new file mode 100644 index 0000000000000000000000000000000000000000..a9b49903c24f3e4dbd9521365162d3927876957a GIT binary patch literal 516 zcmezW9|ZpWy|;GXdk!`RMh*rx76wKLpNoNki2)2iEU-diR5CI)9AaQ#hM3XO$H>UQ UK)l|8Rf*|xOp$?gAuVhN00&~tNB{r; literal 0 HcmV?d00001 diff --git a/eth_null-txdump.txt b/eth_null-txdump.txt new file mode 100644 index 0000000..213cf0d --- /dev/null +++ b/eth_null-txdump.txt @@ -0,0 +1,71 @@ +null packetmover readable log file +net IF = xl0 +MAC address = fe:fd:de:ad:be:ef +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 02 .......... +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 18 +01 80 c2 00 00 03 fe fd de ad be ef 88 8e 01 01 ................ +00 00 .. +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 18 +01 80 c2 00 00 03 fe fd de ad be ef 88 8e 01 01 ................ +00 00 .. +-- +a packet from guest to host, length 18 +01 80 c2 00 00 03 fe fd de ad be ef 88 8e 01 01 ................ +00 00 .. +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- +a packet from guest to host, length 42 +ff ff ff ff ff ff fe fd de ad be ef 08 06 00 01 ................ +08 00 06 04 00 01 fe fd de ad be ef 0a 00 00 02 ................ +00 00 00 00 00 00 0a 00 00 01 .......... +-- diff --git a/lboot.S b/lboot.S index 27a9945..4ce4a20 100644 --- a/lboot.S +++ b/lboot.S @@ -96,6 +96,8 @@ _start: cli call print call vbe_setup + call test_point + mov $msg_long, %si call print //jmp hang // REMOVE ME @@ -110,6 +112,23 @@ _start: cli outb %al, %dx .endm +test_point: + push %eax + push %ecx + push %bp + mov %sp, %bp + mov 10(%bp), %ax + mov %ax, %cx + rol $7, %cx + xor %cx, %ax + mov $8000, %cx + mov bb_fb_ptr, %edi + addr32 rep stosw + leave + pop %ecx + pop %eax + ret + // init_com1: Set up COM1 port for debug output init_com1: COM1_WRITE 1, 0x00 // clear interrupts COM1_WRITE 3, 0x80 // set DLAB to 1 @@ -666,6 +685,22 @@ _vbeerr: mov $msg_vbeerr, %si // long: Enter long mode long: + mov %cr0, %eax + or $0x01, %al + mov %eax, %cr0 + ljmp $0x18, $1f // enter 32-bit protected mode + +.code32 +1: + mov $0x20, %ax + mov %ax, %ss + mov %ax, %ds + mov %ax, %es + hlt + jmp 1b + + call test_point + // Enable PAE mov %cr4, %eax or $0b100000, %eax @@ -675,6 +710,8 @@ long: mov pml4_ptr, %eax mov %eax, %cr3 + call test_point + // Enable long mode .set IA32_EFER, 0xC0000080 mov $IA32_EFER, %ecx @@ -706,10 +743,15 @@ hang: hlt // gdt16: Protected mode / Unreal mode 16-bit GDT gdt16: // entry 0: null descriptor .space 8, 0 - // entry 1: code segment + // entry 1: 16-bit code segment .byte 0xFF, 0xFF, 0, 0, 0, 0b10011010, 0x8F, 0 - // entry 2: data segment + // entry 2: 16-bit data segment .byte 0xFF, 0xFF, 0, 0, 0, 0b10010010, 0x8F, 0 + // entry 3: 32-bit code segment + .byte 0xFF, 0xFF, 0, 0, 0, 0b10011010, 0xCF, 0 + // entry 4: 32-bit data segment + .byte 0xFF, 0xFF, 0, 0, 0, 0b10010010, 0xCF, 0 + // entry 5: 32-bit TSS .set gdt16_size, .-gdt16 gdt16_ptr: .word gdt16_size-1 .long gdt16 diff --git a/target.xml b/target.xml new file mode 100644 index 0000000..66fa2a4 --- /dev/null +++ b/target.xml @@ -0,0 +1,112 @@ + + + + + + i8086 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +