X-Git-Url: https://pd.if.org/git/?p=zos;a=blobdiff_plain;f=ioport.s;fp=ioport.s;h=7e15f43707164411501d7407700bdd5a1cef3b94;hp=0000000000000000000000000000000000000000;hb=05a22b85cec038fc3a804050dc3a3c62e748b389;hpb=5a6d8336c11140500330da69cd74490a07876fe1 diff --git a/ioport.s b/ioport.s new file mode 100644 index 0000000..7e15f43 --- /dev/null +++ b/ioport.s @@ -0,0 +1,88 @@ +global outport8:function +global outport16:function +global outport32:function +global inport8:function +global inport16:function +global inport32:function +global outport_buf8:function +global outport_buf16:function +global outport_buf32:function +global inport_buf8:function +global inport_buf16:function +global inport_buf32:function + +; rdi = buf len +; rsi = buffer address +; rdx = port addr + +inport_buf8: + mov rcx, rdi + cld + rep insb + ret + +inport_buf16: + mov rcx, rdi + cld + rep insw + ret + +inport_buf32: + mov rcx, rdi + cld + rep insd + ret + +outport_buf8: + mov rcx, rdi + cld + rep outsb + ret + +outport_buf16: + mov rcx, rdi + cld + rep outsw + ret + +outport_buf32: + mov rcx, rdi + cld + rep outsd + ret + +outport8: + mov rdx, rdi + mov rax, rsi + and rax, 0xff + out dx, al + ret + +outport16: + mov rdx, rdi + mov rax, rsi + and rax, 0xffff + out dx, ax + ret + +outport32: + mov rdx, rdi + mov rax, rsi + and rax, 0xffffffff + out dx, eax + ret + +inport8: + mov rdx, rdi + in al, dx + ret + +inport16: + mov rdx, rdi + in ax, dx + ret + +inport32: + mov rdx, rdi + in eax, dx + ret