diff options
author | Robert Morris <[email protected]> | 2019-06-03 15:23:12 -0400 |
---|---|---|
committer | Robert Morris <[email protected]> | 2019-06-03 15:23:12 -0400 |
commit | 6eae1be7550ecdc85269ce57c4a2f2dd0e9297b9 (patch) | |
tree | 9a168c1fed57523f1683799ce5fb555629a29942 /entryother.S | |
parent | e630e0743b8c1a0f9ebca702811bd59065c9f457 (diff) | |
download | xv6-labs-6eae1be7550ecdc85269ce57c4a2f2dd0e9297b9.tar.gz xv6-labs-6eae1be7550ecdc85269ce57c4a2f2dd0e9297b9.tar.bz2 xv6-labs-6eae1be7550ecdc85269ce57c4a2f2dd0e9297b9.zip |
push/pop all registers when handling interrupt from kernel
Diffstat (limited to 'entryother.S')
-rw-r--r-- | entryother.S | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/entryother.S b/entryother.S deleted file mode 100644 index dd33680..0000000 --- a/entryother.S +++ /dev/null @@ -1,60 +0,0 @@ -#include "asm.h" -#include "memlayout.h" -#include "mmu.h" - -# Each non-boot CPU ("AP") is started up in response to a STARTUP -# IPI from the boot CPU. Section B.4.2 of the Multi-Processor -# Specification says that the AP will start in real mode with CS:IP -# set to XY00:0000, where XY is an 8-bit value sent with the -# STARTUP. Thus this code must start at a 4096-byte boundary. -# -# Because this code sets DS to zero, it must sit -# at an address in the low 2^16 bytes. -# -# Startothers (in main.c) sends the STARTUPs one at a time. -# It copies this code (start) at 0x7000. It puts the address of -# a newly allocated per-core stack in start-12,the address of the -# place to jump to (apstart32) in start-4, and the physical address -# of entrypgdir in start-12. - -.code16 -.globl start -start: - cli - - # Zero data segment registers DS, ES, and SS. - xorw %ax,%ax - movw %ax,%ds - movw %ax,%es - movw %ax,%ss - - # Switch from real to protected mode. Use a bootstrap GDT that makes - # virtual addresses map directly to physical addresses so that the - # effective memory map doesn't change during the transition. - lgdt gdtdesc - movl %cr0, %eax - orl $CR0_PE, %eax - movl %eax, %cr0 - - # Complete the transition to 32-bit protected mode by using a long jmp - # to reload %cs and %eip. The segment descriptors are set up with no - # translation, so that the mapping is still the identity mapping. - ljmpl $(SEG_KCODE32), $start32 - -.code32 -start32: - movl $start-12, %esp - movl start-4, %ecx - jmp *%ecx - -.align 4 -gdt: - SEG_NULLASM - SEG_ASM(0xa, 0, 0xffffffff) - SEG_ASM(0x2, 0, 0xffffffff) - -.align 16 -gdtdesc: - .word 0x17 # sizeof(gdt)-1 - .long gdt - |