Subversion Repositories HelenOS

Rev

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

Rev 139 Rev 149
Line 46... Line 46...
46
e820begin:
46
e820begin:
47
	xorl	%ebx,%ebx	# during first call, ebx must be 0
47
	xorl	%ebx,%ebx	# during first call, ebx must be 0
48
	movw	%bx,%ds
48
	movw	%bx,%ds
49
	movw	%bx,%es
49
	movw	%bx,%es
50
	movw	$e820table,%di
50
	movw	$e820table,%di
51
	movb	$E820_MAX_RECORDS,(e820counter)
51
	movb	$E820_MAX_RECORDS,e820counter
52
e820loop:	
52
e820loop:	
53
	movl	$E820_SMAP,%edx 	# control sequence "SMAP"
53
	movl	$E820_SMAP,%edx 	# control sequence "SMAP"
54
 
54
 
55
	movl	$0x0000e820,%eax	# service
55
	movl	$0x0000e820,%eax	# service
56
	movl	$E820_RECORD_SIZE,%ecx
56
	movl	$E820_RECORD_SIZE,%ecx
Line 65... Line 65...
65
	
65
	
66
	movw	%di,%ax		# next record
66
	movw	%di,%ax		# next record
67
	addw	$E820_RECORD_SIZE,%ax
67
	addw	$E820_RECORD_SIZE,%ax
68
	movw	%ax,%di
68
	movw	%ax,%di
69
		
69
		
70
	decb	(e820counter) # buffer is full
70
	decb	e820counter # buffer is full
71
	jz	e820end
71
	jz	e820end
72
	
72
	
73
	cmpl	$0,%ebx	
73
	cmpl	$0,%ebx	
74
	jne	e820loop
74
	jne	e820loop
75
	
75
	
76
e820end:
76
e820end:
77
	movb	$E820_MAX_RECORDS,%al
77
	movb	$E820_MAX_RECORDS,%al
78
	subb	(e820counter),%al
78
	subb	e820counter,%al
79
	movb	%al,(e820counter) # store # of valid entries in e820counter
79
	movb	%al,e820counter # store # of valid entries in e820counter
80
 
80
 
81
	jmp	e801begin
81
	jmp	e801begin
82
 
82
 
83
e820err:
83
e820err:
84
	movb	$0,(e820counter)
84
	movb	$0,e820counter
85
 
85
 
86
# method e801 - get size of memory
86
# method e801 - get size of memory
87
 
87
 
88
e801begin:
88
e801begin:
89
	xorw	%dx,%dx
89
	xorw	%dx,%dx
Line 107... Line 107...
107
e801cxdx:
107
e801cxdx:
108
	andl	$0xffff,%edx
108
	andl	$0xffff,%edx
109
	shll	$6,%edx
109
	shll	$6,%edx
110
	andl	$0xffff,%ecx
110
	andl	$0xffff,%ecx
111
	addl	%ecx,%edx
111
	addl	%ecx,%edx
112
	addl	$0x0400,%edx  # add lower 1 MB - its not count by e801 method
112
	addl	$0x0400,%edx  # add lower 1 MB - it's not included by e801 method
113
	movl	%edx,(e801memorysize)		
113
	movl	%edx,e801memorysize
114
e801end:
114
e801end:
115
	ret
115
	ret
116
 
116
 
117
	#memory size in 1 kb chunks
117
	#memory size in 1 kb chunks
118
e801memorysize:
118
e801memorysize: