X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;ds=sidebyside;f=src%2Fregs.s;fp=src%2Fregs.s;h=713112e48bf635d10a177415eb597e37a38e59c7;hb=a2f94f569a4c99204de02814a20098a71527e913;hp=0000000000000000000000000000000000000000;hpb=d1e8a437c1fab4535f82c4c214ec3330ac32e48d;p=bootcensus diff --git a/src/regs.s b/src/regs.s new file mode 100644 index 0000000..713112e --- /dev/null +++ b/src/regs.s @@ -0,0 +1,54 @@ + .text + .align 4 + + .globl get_regs +get_regs: + pushl %ebp + movl %esp, %ebp + + pushl %edx + movl 8(%ebp), %edx + + movl %eax, (%edx) + movl %ebx, 4(%edx) + movl %ecx, 8(%edx) + + # juggle edx + movl %edx, %eax + popl %edx + movl %edx, 12(%eax) + pushl %edx + movl %eax, %edx + + # those two are pointless in a function + movl %esp, 16(%edx) + movl %ebp, 20(%edx) + + movl %esi, 24(%edx) + movl %edi, 28(%edx) + + pushf + popl %eax + movl %eax, 32(%edx) + + movw %cs, 36(%edx) + movw %ss, 40(%edx) + movw %ds, 44(%edx) + movw %es, 48(%edx) + movw %fs, 52(%edx) + movw %gs, 56(%edx) + + pushl %ebx + movl %cr0, %ebx + movl %ebx, 60(%edx) + #movl %cr1, %ebx + #movl %ebx, 64(%edx) + movl %cr2, %ebx + movl %ebx, 68(%edx) + movl %cr3, %ebx + movl %ebx, 72(%edx) + popl %ebx + + popl %edx + popl %ebp + ret