|
@@ -506,7 +506,7 @@ rm_gdtr:
|
506
|
506
|
*
|
507
|
507
|
* Switch from 32-bit protected mode with physical addresses to 32-bit
|
508
|
508
|
* protected mode with virtual addresses. %esp is adjusted to a
|
509
|
|
- * virtual address. All other registers and flags are preserved.
|
|
509
|
+ * virtual address. All other registers are preserved.
|
510
|
510
|
*
|
511
|
511
|
* The return address for this function should be a 32-bit physical
|
512
|
512
|
* (sic) address.
|
|
@@ -517,8 +517,7 @@ rm_gdtr:
|
517
|
517
|
.code32
|
518
|
518
|
.globl phys_to_prot
|
519
|
519
|
phys_to_prot:
|
520
|
|
- /* Preserve registers and flags */
|
521
|
|
- pushfl
|
|
520
|
+ /* Preserve registers */
|
522
|
521
|
pushl %eax
|
523
|
522
|
pushl %ebp
|
524
|
523
|
|
|
@@ -537,12 +536,11 @@ phys_to_prot:
|
537
|
536
|
subl %ebp, %esp
|
538
|
537
|
|
539
|
538
|
/* Adjust return address to a virtual address */
|
540
|
|
- subl %ebp, 12(%esp)
|
|
539
|
+ subl %ebp, 8(%esp)
|
541
|
540
|
|
542
|
|
- /* Restore registers and flags, and return */
|
|
541
|
+ /* Restore registers and return */
|
543
|
542
|
popl %ebp
|
544
|
543
|
popl %eax
|
545
|
|
- popfl
|
546
|
544
|
ret
|
547
|
545
|
|
548
|
546
|
/* Expose as _phys_to_virt for use by COMBOOT */
|
|
@@ -554,7 +552,7 @@ phys_to_prot:
|
554
|
552
|
*
|
555
|
553
|
* Switch from 32-bit protected mode with virtual addresses to 32-bit
|
556
|
554
|
* protected mode with physical addresses. %esp is adjusted to a
|
557
|
|
- * physical address. All other registers and flags are preserved.
|
|
555
|
+ * physical address. All other registers are preserved.
|
558
|
556
|
*
|
559
|
557
|
* The return address for this function should be a 32-bit virtual
|
560
|
558
|
* (sic) address.
|
|
@@ -564,14 +562,13 @@ phys_to_prot:
|
564
|
562
|
.section ".text.prot_to_phys", "ax", @progbits
|
565
|
563
|
.code32
|
566
|
564
|
prot_to_phys:
|
567
|
|
- /* Preserve registers and flags */
|
568
|
|
- pushfl
|
|
565
|
+ /* Preserve registers */
|
569
|
566
|
pushl %eax
|
570
|
567
|
pushl %ebp
|
571
|
568
|
|
572
|
569
|
/* Adjust return address to a physical address */
|
573
|
570
|
movl VIRTUAL(virt_offset), %ebp
|
574
|
|
- addl %ebp, 12(%esp)
|
|
571
|
+ addl %ebp, 8(%esp)
|
575
|
572
|
|
576
|
573
|
/* Switch to physical code segment */
|
577
|
574
|
cli
|
|
@@ -589,10 +586,9 @@ prot_to_phys:
|
589
|
586
|
movw %ax, %ss
|
590
|
587
|
addl %ebp, %esp
|
591
|
588
|
|
592
|
|
- /* Restore registers and flags, and return */
|
|
589
|
+ /* Restore registers and return */
|
593
|
590
|
popl %ebp
|
594
|
591
|
popl %eax
|
595
|
|
- popfl
|
596
|
592
|
ret
|
597
|
593
|
|
598
|
594
|
/* Expose as _virt_to_phys for use by COMBOOT */
|
|
@@ -605,7 +601,7 @@ prot_to_phys:
|
605
|
601
|
* Switch from 32-bit protected mode with a virtual code segment and
|
606
|
602
|
* either a physical or virtual stack segment to 32-bit protected mode
|
607
|
603
|
* with normal virtual addresses. %esp is adjusted if necessary to a
|
608
|
|
- * virtual address. All other registers and flags are preserved.
|
|
604
|
+ * virtual address. All other registers are preserved.
|
609
|
605
|
*
|
610
|
606
|
* The return address for this function should be a 32-bit virtual
|
611
|
607
|
* address.
|
|
@@ -616,8 +612,7 @@ prot_to_phys:
|
616
|
612
|
.code32
|
617
|
613
|
.globl intr_to_prot
|
618
|
614
|
intr_to_prot:
|
619
|
|
- /* Preserve registers and flags */
|
620
|
|
- pushfl
|
|
615
|
+ /* Preserve registers */
|
621
|
616
|
pushl %eax
|
622
|
617
|
|
623
|
618
|
/* Check whether stack segment is physical or virtual */
|
|
@@ -636,9 +631,8 @@ intr_to_prot:
|
636
|
631
|
movw %ax, %ss
|
637
|
632
|
subl VIRTUAL(virt_offset), %esp
|
638
|
633
|
1:
|
639
|
|
- /* Restore registers and flags, and return */
|
|
634
|
+ /* Restore registers and return */
|
640
|
635
|
popl %eax
|
641
|
|
- popfl
|
642
|
636
|
ret
|
643
|
637
|
|
644
|
638
|
/* Expose as _intr_to_virt for use by GDB */
|