Octocontrabass wrote:
NeonLightions wrote:
Sure, what do you want to know more about? I can give you information about that
Can you provide a disassembly of the code in the loop? I just can't see how that code could compile to an infinite loop.
Here is my disassembly code:
Code:
00102f70 <paging_init>:
102f70: 55 push %ebp
102f71: 89 e5 mov %esp,%ebp
102f73: 57 push %edi
102f74: 56 push %esi
102f75: 53 push %ebx
102f76: bb 07 00 00 00 mov $0x7,%ebx
102f7b: 83 ec 1c sub $0x1c,%esp
102f7e: a1 00 b0 10 00 mov 0x10b000,%eax
102f83: 05 ff 0f 00 00 add $0xfff,%eax
102f88: 25 00 f0 ff ff and $0xfffff000,%eax
102f8d: a3 b4 bc 10 00 mov %eax,0x10bcb4
102f92: 31 c0 xor %eax,%eax
102f94: e8 07 fe ff ff call 102da0 <_kalloc_temp.constprop.0>
102f99: 83 ec 04 sub $0x4,%esp
102f9c: 68 00 10 00 00 push $0x1000
102fa1: 6a 00 push $0x0
102fa3: 50 push %eax
102fa4: a3 b8 bc 10 00 mov %eax,0x10bcb8
102fa9: e8 b2 eb ff ff call 101b60 <memset>
102fae: b8 01 00 00 00 mov $0x1,%eax
102fb3: e8 e8 fd ff ff call 102da0 <_kalloc_temp.constprop.0>
102fb8: 83 c4 0c add $0xc,%esp
102fbb: 68 00 10 00 00 push $0x1000
102fc0: 6a 00 push $0x0
102fc2: 50 push %eax
102fc3: a3 b0 bc 10 00 mov %eax,0x10bcb0
102fc8: e8 93 eb ff ff call 101b60 <memset>
102fcd: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp)
102fd4: 83 c4 10 add $0x10,%esp
102fd7: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
102fde: 66 90 xchg %ax,%ax
102fe0: 8b 35 b8 bc 10 00 mov 0x10bcb8,%esi
102fe6: 31 ff xor %edi,%edi
102fe8: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
102fef: 90 nop
102ff0: 0f b6 0c 3e movzbl (%esi,%edi,1),%ecx
102ff4: 80 f9 ff cmp $0xff,%cl
102ff7: 74 18 je 103011 <paging_init+0xa1>
102ff9: 31 c0 xor %eax,%eax
102ffb: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi
102fff: 90 nop
103000: 89 da mov %ebx,%edx
103002: 29 c2 sub %eax,%edx
103004: 0f a3 d1 bt %edx,%ecx
103007: 73 57 jae 103060 <paging_init+0xf0>
103009: 83 c0 01 add $0x1,%eax
10300c: 83 f8 08 cmp $0x8,%eax
10300f: 75 ef jne 103000 <paging_init+0x90>
103011: 83 c7 01 add $0x1,%edi
103014: 81 ff 00 10 00 00 cmp $0x1000,%edi
10301a: 75 d4 jne 102ff0 <paging_init+0x80>
10301c: fa cli
10301d: 83 ec 0c sub $0xc,%esp
103020: 68 d1 00 00 00 push $0xd1
103025: 68 2a 43 10 00 push $0x10432a
10302a: 68 44 42 10 00 push $0x104244
10302f: 68 40 43 10 00 push $0x104340
103034: 6a 05 push $0x5
103036: e8 85 e3 ff ff call 1013c0 <cprintf>
10303b: 83 c4 20 add $0x20,%esp
10303e: e8 ad d4 ff ff call 1004f0 <stack_trace>
103043: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
10304a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi
103050: f4 hlt
103051: eb fd jmp 103050 <paging_init+0xe0>
103053: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
10305a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi
103060: 8d 3c f8 lea (%eax,%edi,8),%edi
103063: b8 01 00 00 00 mov $0x1,%eax
103068: 83 ec 04 sub $0x4,%esp
10306b: 89 f9 mov %edi,%ecx
10306d: 89 fa mov %edi,%edx
10306f: f7 d1 not %ecx
103071: c1 ea 03 shr $0x3,%edx
103074: 83 e1 07 and $0x7,%ecx
103077: d3 e0 shl %cl,%eax
103079: 08 04 16 or %al,(%esi,%edx,1)
10307c: 6a 01 push $0x1
10307e: ff 75 e4 push -0x1c(%ebp)
103081: ff 35 b0 bc 10 00 push 0x10bcb0
103087: e8 a4 fd ff ff call 102e30 <paging_walk_pgdir_at_boot>
10308c: 83 c4 10 add $0x10,%esp
10308f: 85 c0 test %eax,%eax
103091: 0f 84 ac 00 00 00 je 103143 <paging_init+0x1d3>
103097: 8b 10 mov (%eax),%edx
103099: c1 e7 0c shl $0xc,%edi
10309c: 81 45 e4 00 10 00 00 addl $0x1000,-0x1c(%ebp)
1030a3: 83 cf 01 or $0x1,%edi
1030a6: 81 e2 f8 0f 00 00 and $0xff8,%edx
1030ac: 09 d7 or %edx,%edi
1030ae: 89 38 mov %edi,(%eax)
1030b0: 8b 45 e4 mov -0x1c(%ebp),%eax
1030b3: 3d 00 00 80 00 cmp $0x800000,%eax
1030b8: 0f 85 22 ff ff ff jne 102fe0 <paging_init+0x70>
1030be: 8b 5d e4 mov -0x1c(%ebp),%ebx
1030c1: eb 32 jmp 1030f5 <paging_init+0x185>
1030c3: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
1030ca: 8d b6 00 00 00 00 lea 0x0(%esi),%esi
1030d0: 8b 08 mov (%eax),%ecx
1030d2: 89 da mov %ebx,%edx
1030d4: 81 c3 00 10 00 00 add $0x1000,%ebx
1030da: 81 e2 00 f0 ff ff and $0xfffff000,%edx
1030e0: 83 ca 01 or $0x1,%edx
1030e3: 81 e1 f8 0f 00 00 and $0xff8,%ecx
1030e9: 09 ca or %ecx,%edx
1030eb: 89 10 mov %edx,(%eax)
1030ed: 81 fb 00 00 00 08 cmp $0x8000000,%ebx
1030f3: 74 7e je 103173 <paging_init+0x203>
1030f5: 83 ec 04 sub $0x4,%esp
1030f8: 6a 01 push $0x1
1030fa: 53 push %ebx
1030fb: ff 35 b0 bc 10 00 push 0x10bcb0
103101: e8 2a fd ff ff call 102e30 <paging_walk_pgdir_at_boot>
103106: 83 c4 10 add $0x10,%esp
103109: 85 c0 test %eax,%eax
10310b: 75 c3 jne 1030d0 <paging_init+0x160>
10310d: fa cli
10310e: 83 ec 0c sub $0xc,%esp
103111: 68 e4 00 00 00 push $0xe4
103116: 68 2a 43 10 00 push $0x10432a
10311b: 68 44 42 10 00 push $0x104244
103120: 68 40 43 10 00 push $0x104340
103125: 6a 05 push $0x5
103127: e8 94 e2 ff ff call 1013c0 <cprintf>
10312c: 83 c4 20 add $0x20,%esp
10312f: e8 bc d3 ff ff call 1004f0 <stack_trace>
103134: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
10313b: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi
10313f: 90 nop
103140: f4 hlt
103141: eb fd jmp 103140 <paging_init+0x1d0>
103143: fa cli
103144: 83 ec 0c sub $0xc,%esp
103147: 68 d3 00 00 00 push $0xd3
10314c: 68 2a 43 10 00 push $0x10432a
103151: 68 44 42 10 00 push $0x104244
103156: 68 40 43 10 00 push $0x104340
10315b: 6a 05 push $0x5
10315d: e8 5e e2 ff ff call 1013c0 <cprintf>
103162: 83 c4 20 add $0x20,%esp
103165: e8 86 d3 ff ff call 1004f0 <stack_trace>
10316a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi
103170: f4 hlt
103171: eb fd jmp 103170 <paging_init+0x200>
103173: 83 ec 08 sub $0x8,%esp
103176: 68 40 2d 10 00 push $0x102d40
10317b: 6a 0e push $0xe
10317d: e8 2e f9 ff ff call 102ab0 <isr_register>
103182: a1 b0 bc 10 00 mov 0x10bcb0,%eax
103187: 83 c4 10 add $0x10,%esp
10318a: 85 c0 test %eax,%eax
10318c: 74 16 je 1031a4 <paging_init+0x234>
10318e: 0f 22 d8 mov %eax,%cr3
103191: 0f 20 c0 mov %cr0,%eax
103194: 0d 01 00 00 80 or $0x80000001,%eax
103199: 0f 22 c0 mov %eax,%cr0
10319c: 8d 65 f4 lea -0xc(%ebp),%esp
10319f: 5b pop %ebx
1031a0: 5e pop %esi
1031a1: 5f pop %edi
1031a2: 5d pop %ebp
1031a3: c3 ret
1031a4: fa cli
1031a5: 83 ec 0c sub $0xc,%esp
1031a8: 68 8b 00 00 00 push $0x8b
1031ad: 68 2a 43 10 00 push $0x10432a
1031b2: 68 50 42 10 00 push $0x104250
1031b7: 68 40 43 10 00 push $0x104340
1031bc: 6a 05 push $0x5
1031be: e8 fd e1 ff ff call 1013c0 <cprintf>
1031c3: 83 c4 20 add $0x20,%esp
1031c6: e8 25 d3 ff ff call 1004f0 <stack_trace>
1031cb: f4 hlt
1031cc: eb fd jmp 1031cb <paging_init+0x25b>
1031ce: 47 inc %edi
1031cf: 43 inc %ebx
1031d0: 43 inc %ebx
1031d1: 3a 20 cmp (%eax),%ah
1031d3: 28 47 4e sub %al,0x4e(%edi)
1031d6: 55 push %ebp
1031d7: 29 20 sub %esp,(%eax)
1031d9: 31 31 xor %esi,(%ecx)
1031db: 2e 31 2e xor %ebp,%cs:(%esi)
1031de: 30 00 xor %al,(%eax)