diff options
author | johannst <johannes.stoelp@gmail.com> | 2021-06-01 22:53:52 +0200 |
---|---|---|
committer | johannst <johannes.stoelp@gmail.com> | 2021-06-01 22:53:52 +0200 |
commit | 9d2859957408b4c719760a7073e54cd3729561f6 (patch) | |
tree | cd926d4f94185af5807213ec2e52c68a0d6db65b /guest/guest16.S | |
parent | 387dd9e27b9425f23ff0eb0c6e9ea785a762fd48 (diff) | |
download | mini-kvm-rs-9d2859957408b4c719760a7073e54cd3729561f6.tar.gz mini-kvm-rs-9d2859957408b4c719760a7073e54cd3729561f6.zip |
adapted examples with new exit reasons
Diffstat (limited to 'guest/guest16.S')
-rw-r--r-- | guest/guest16.S | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/guest/guest16.S b/guest/guest16.S index 4851694..9877ea9 100644 --- a/guest/guest16.S +++ b/guest/guest16.S @@ -6,11 +6,19 @@ mov dx, 0x1000 // Output port. lea si, [msg] // Address of string. mov cx, [msg_len] // Len of string. - rep outsb // Write ds:si to output port dx. + rep outsb // Write byte from ds:si to output port dx. - // Trigger `KVM_EXIT_MMIO` by writing to non mapped physical address. + // Trigger `KVM_EXIT_IO:KVM_EXIT_IO_IN` by reading byte to memory from input port. + mov dx, 0x1000 // Input port. + lea di, [in_dest] // Destination address. + insb // Read byte from input port dx to ds:di. + + // Trigger `KVM_EXIT_MMIO (w)` by writing to non mapped physical address. mov byte ptr ds:[0x2000], 0xaa + // Trigger `KVM_EXIT_MMIO (r)` by reading from non mapped physical address. + mov al, byte ptr ds:[0x2000] + // Trigger `KVM_EXIT_HLT`. hlt @@ -19,3 +27,6 @@ msg: .asciz "Hello from Real Mode!\n" msg_len: .2byte .-msg + +in_dest: + .byte 0x00 |