Subversion Repositories HelenOS

Rev

Rev 806 | Rev 820 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 806 Rev 808
Line 33... Line 33...
33
	
33
	
34
#define ERROR_WORD_INTERRUPT_LIST 0x00027D00
34
#define ERROR_WORD_INTERRUPT_LIST 0x00027D00
35
 
35
 
36
#include <arch/pm.h>
36
#include <arch/pm.h>
37
#include <arch/context_offset.h>
37
#include <arch/context_offset.h>
-
 
38
#include <arch/mm/page.h>
38
	
39
	
39
.text
40
.text
40
.global interrupt_handlers
41
.global interrupt_handlers
41
.global syscall_entry
42
.global syscall_entry
42
.global panic_printf
43
.global panic_printf
Line 192... Line 193...
192
 
193
 
193
	
194
	
194
syscall_entry:
195
syscall_entry:
195
	# Switch to hidden gs	
196
	# Switch to hidden gs	
196
	swapgs
197
	swapgs
197
 
-
 
198
	# TODO:	I would like LEA instead of thes 2 instrs,
198
	# %gs:0 now points to pointer to stack page
199
	# why does not it work???
-
 
200
	mov %gs:0, %r10     # We have a stack in r10
199
	mov %gs:0, %r10     # We have a ptr to stack page in r10
201
	addq $0x0ff0, %r10
200
	addq $PAGE_SIZE-16, %r10 # We need some space to store old %sp
202
	
201
	
203
	movq %rsp, 0(%r10)  # Save old stack pointer to stack
202
	movq %rsp, 0(%r10)  # Save old stack pointer to stack
204
	movq %r10, %rsp     # Change to new stack
203
	movq %r10, %rsp     # Change to new stack
205
	pushq %rcx          # Return address
204
	pushq %rcx          # Return address
206
	pushq %r11          # Save flags
205
	pushq %r11          # Save flags