Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 114 → Rev 115

/SPARTAN/trunk/arch/ia32/src/asm.s
30,16 → 30,9
 
.text
 
.global cpu_priority_high
.global cpu_priority_low
.global cpu_priority_restore
.global cpu_priority_read
.global cpu_halt
.global cpu_sleep
.global paging_on
.global cpu_read_dba
.global cpu_write_dba
.global cpu_read_cr2
.global enable_l_apic_in_msr
.global interrupt_handlers
.global inb
54,59 → 47,6
.global memcmp
 
 
## Set priority level high
#
# Disable interrupts and return previous
# EFLAGS in EAX.
#
cpu_priority_high:
pushf
pop %eax
cli
ret
 
 
## Set priority level low
#
# Enable interrupts and return previous
# EFLAGS in EAX.
#
cpu_priority_low:
pushf
pop %eax
sti
ret
 
 
## Restore priority level
#
# Restore EFLAGS.
#
cpu_priority_restore:
push 4(%esp)
popf
ret
 
## Return raw priority level
#
# Return EFLAFS in EAX.
#
cpu_priority_read:
pushf
pop %eax
ret
 
 
## Halt the CPU
#
# Halt the CPU using HLT.
#
cpu_halt:
cpu_sleep:
hlt
ret
 
 
## Turn paging on
#
# Enable paging and write-back caching in CR0.
123,36 → 63,6
ret
 
 
## Read CR3
#
# Store CR3 in EAX.
#
cpu_read_dba:
movl %cr3,%eax
ret
 
 
## Write CR3
#
# Set CR3.
#
cpu_write_dba:
pushl %eax
movl 8(%esp),%eax
movl %eax,%cr3
popl %eax
ret
 
 
## Read CR2
#
# Store CR2 in EAX.
#
cpu_read_cr2:
movl %cr2,%eax
ret
 
 
## Enable local APIC
#
# Enable local APIC in MSR.