nuclear@13: .text nuclear@13: .align 4 nuclear@13: nuclear@13: .globl get_regs nuclear@13: get_regs: nuclear@13: pushl %ebp nuclear@13: movl %esp, %ebp nuclear@13: nuclear@13: pushl %edx nuclear@13: movl 8(%ebp), %edx nuclear@13: nuclear@13: movl %eax, (%edx) nuclear@13: movl %ebx, 4(%edx) nuclear@13: movl %ecx, 8(%edx) nuclear@13: nuclear@13: /* juggle edx */ nuclear@13: movl %edx, %eax nuclear@13: popl %edx nuclear@13: movl %edx, 12(%eax) nuclear@13: pushl %edx nuclear@13: movl %eax, %edx nuclear@13: nuclear@13: /* those two are pointless in a function */ nuclear@13: movl %esp, 16(%edx) nuclear@13: movl %ebp, 20(%edx) nuclear@13: nuclear@13: movl %esi, 24(%edx) nuclear@13: movl %edi, 28(%edx) nuclear@13: nuclear@13: pushf nuclear@13: popl %eax nuclear@13: movl %eax, 32(%edx) nuclear@13: nuclear@13: movw %cs, 36(%edx) nuclear@13: movw %ss, 40(%edx) nuclear@13: movw %ds, 44(%edx) nuclear@13: movw %es, 48(%edx) nuclear@13: movw %fs, 52(%edx) nuclear@13: movw %gs, 56(%edx) nuclear@13: nuclear@13: pushl %ebx nuclear@13: movl %cr0, %ebx nuclear@13: movl %ebx, 60(%edx) nuclear@13: /*movl %cr1, %ebx nuclear@13: movl %ebx, 64(%edx)*/ nuclear@14: movl %cr2, %ebx nuclear@14: movl %ebx, 68(%edx) nuclear@13: movl %cr3, %ebx nuclear@13: movl %ebx, 72(%edx) nuclear@13: popl %ebx nuclear@13: nuclear@13: popl %edx nuclear@13: popl %ebp nuclear@13: ret