Rev 139 | Go to most recent revision | Show entire file | Regard 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: |