blob: a919c0197d5b051a21fc306091b1ad4c44ada8b8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
|
Allocating common symbols
Common symbol size file
idt_ptr 0x6 task/idt.o
mem_placementAddr 0x4 mem/mem.o
tasking_tmpStack 0x10000 task/task.o
idt_entries 0x800 task/idt.o
kernel_process 0x4 task/task.o
idle_thread 0x4 task/task.o
current_pagedir 0x4 mem/paging.o
kernel_pagedir 0x4 mem/paging.o
Memory Configuration
Name Origin Length Attributes
*default* 0x00000000 0xffffffff
Linker script and memory map
0x00100000 . = 0x100000
.setup 0x00100000 0x3a
*(.setup)
.setup 0x00100000 0x3a core/loader_.o
0x00100000 loader
0xe010003a . = (. + 0xe0000000)
.text 0xe0100040 0x355a load address 0x00100040
*(.text)
.text 0xe0100040 0x25 core/loader_.o
*fill* 0xe0100065 0x3 00
.text 0xe0100068 0x126 core/kmain.o
0xe0100068 kmain_othertask
0xe01000a7 kmain_stage2
0xe01000eb kmain
*fill* 0xe010018e 0x2 00
.text 0xe0100190 0xf6 core/sys.o
0xe0100190 outb
0xe01001ae outw
0xe01001ce inb
0xe01001eb inw
0xe010020a panic
0xe010024e cli
0xe0100261 sti
*fill* 0xe0100286 0x2 00
.text 0xe0100288 0x310 core/monitor.o
0xe0100399 monitor_put
0xe01004a5 monitor_clear
0xe0100502 monitor_write
0xe010052b monitor_writeHex
.text 0xe0100598 0x104 task/timer.o
0xe0100598 timer_callback
0xe01005d0 timer_uptime
0xe01005da timer_time
0xe0100611 timer_init
.text 0xe010069c 0xa26 task/idt.o
0xe010069c idt_isrHandler
0xe0100734 idt_irqHandler
0xe01007d5 idt_syscallHandler
0xe0100882 idt_init
0xe01010b0 idt_handleIrq
*fill* 0xe01010c2 0xe 00
.text 0xe01010d0 0x293 task/idt_.o
0xe01010d0 gdt_flush
0xe01010ed idt_flush
0xe0101185 isr0
0xe010118f isr1
0xe0101199 isr2
0xe01011a3 isr3
0xe01011ad isr4
0xe01011b7 isr5
0xe01011c1 isr6
0xe01011cb isr7
0xe01011d5 isr8
0xe01011dd isr9
0xe01011e7 isr10
0xe01011ef isr11
0xe01011f7 isr12
0xe01011ff isr13
0xe0101207 isr14
0xe010120f isr15
0xe0101219 isr16
0xe0101223 isr17
0xe010122d isr18
0xe0101237 isr19
0xe0101241 isr20
0xe010124b isr21
0xe0101255 isr22
0xe010125f isr23
0xe0101269 isr24
0xe0101273 isr25
0xe010127d isr26
0xe0101287 isr27
0xe0101291 isr28
0xe010129b isr29
0xe01012a5 isr30
0xe01012af isr31
0xe01012b9 irq0
0xe01012c3 irq1
0xe01012cd irq2
0xe01012d7 irq3
0xe01012e1 irq4
0xe01012eb irq5
0xe01012f5 irq6
0xe01012ff irq7
0xe0101309 irq8
0xe0101313 irq9
0xe010131d irq10
0xe0101327 irq11
0xe0101331 irq12
0xe010133b irq13
0xe0101345 irq14
0xe010134f irq15
0xe0101359 syscall64
*fill* 0xe0101363 0x1 00
.text 0xe0101364 0x6f6 task/task.o
0xe0101364 tasking_init
0xe01014af tasking_switch
0xe0101556 tasking_updateKernelPagetable
0xe01015a0 tasking_handleException
0xe0101611 thread_sleep
0xe01016f5 thread_exit
0xe0101709 process_exit
0xe01017a5 thread_new
0xe010189a process_new
*fill* 0xe0101a5a 0x6 00
.text 0xe0101a60 0xa task/task_.o
0xe0101a60 read_eip
0xe0101a63 task_idle
*fill* 0xe0101a6a 0x2 00
.text 0xe0101a6c 0x66 task/syscall.o
*fill* 0xe0101ad2 0x2 00
.text 0xe0101ad4 0x13a lib/stdlib.o
0xe0101ad4 memcpy
0xe0101b7e memset
0xe0101bb0 memsetw
0xe0101be6 strlen
*fill* 0xe0101c0e 0x2 00
.text 0xe0101c10 0x173 lib/bitset.o
0xe0101c10 bitset_set
0xe0101c64 bitset_clear
0xe0101cba bitset_test
0xe0101cfc bitset_firstFree
*fill* 0xe0101d83 0x1 00
.text 0xe0101d84 0x29f mem/mem.o
0xe0101eea kmalloc_page
0xe0101f31 kfree_page
0xe0101f6c kheap_init
0xe0101fc1 kmalloc
0xe0101fff kfree
*fill* 0xe0102023 0x1 00
.text 0xe0102024 0x6cc mem/paging.o
0xe0102024 frame_alloc
0xe0102051 frame_free
0xe010206c paging_init
0xe0102213 paging_cleanup
0xe010226e pagedir_switch
0xe010229d pagedir_new
0xe0102332 pagedir_delete
0xe010239d paging_fault
0xe01024ea pagedir_getPage
0xe0102601 page_map
0xe0102689 page_unmap
0xe01026ac page_unmapFree
.text 0xe01026f0 0x19f mem/gdt.o
0xe010277f gdt_init
*fill* 0xe010288f 0x1 00
.text 0xe0102890 0x858 mem/heap.o
0xe0102a20 heap_create
0xe0102df3 heap_alloc
0xe0102f54 heap_free
.text 0xe01030e8 0x2ed mem/seg.o
0xe01030e8 seg_map
0xe0103156 seg_unmap
0xe0103235 simpleseg_make
0xe01032b2 simpleseg_map
0xe01032e8 simpleseg_unmap
0xe010333b simpleseg_handleFault
0xe01033d0 simpleseg_delete
*fill* 0xe01033d5 0x3 00
.text 0xe01033d8 0x1c2 linker/elf.o
0xe01033d8 elf_check
0xe010341d elf_load
.iplt 0xe010359c 0x0 load address 0x0010359a
.iplt 0x00000000 0x0 core/loader_.o
.rodata 0xe0104000 0x395 load address 0x00104000
*(.rodata)
.rodata 0xe0104000 0x52 core/kmain.o
.rodata 0xe0104052 0x2c core/sys.o
.rodata 0xe010407e 0xf task/timer.o
*fill* 0xe010408d 0x3 00
.rodata 0xe0104090 0x8a task/idt.o
*fill* 0xe010411a 0x6 00
.rodata 0xe0104120 0x1ec task/task.o
.rodata 0xe010430c 0x10 mem/mem.o
.rodata 0xe010431c 0x71 mem/paging.o
.rodata 0xe010438d 0x8 mem/gdt.o
.rel.dyn 0xe0104398 0x0 load address 0x00104395
.rel.iplt 0x00000000 0x0 core/loader_.o
.rel.text 0x00000000 0x0 core/loader_.o
.data 0xe0105000 0x24 load address 0x00105000
*(.data)
.data 0xe0105000 0x0 core/kmain.o
.data 0xe0105000 0x4 core/sys.o
.data 0xe0105004 0x4 core/monitor.o
.data 0xe0105008 0x0 task/timer.o
.data 0xe0105008 0x0 task/idt.o
.data 0xe0105008 0x4 task/task.o
.data 0xe010500c 0x18 task/syscall.o
0xe010500c syscalls
.data 0xe0105024 0x0 lib/stdlib.o
.data 0xe0105024 0x0 lib/bitset.o
.data 0xe0105024 0x0 mem/mem.o
.data 0xe0105024 0x0 mem/paging.o
.data 0xe0105024 0x0 mem/gdt.o
.data 0xe0105024 0x0 mem/heap.o
.data 0xe0105024 0x0 mem/seg.o
.data 0xe0105024 0x0 linker/elf.o
.igot.plt 0xe0105024 0x0 load address 0x00105024
.igot.plt 0x00000000 0x0 core/loader_.o
.bss 0xe0105040 0x10970 load address 0x00105040
0xe0105040 sbss = .
*(COMMON)
COMMON 0xe0105040 0x820 task/idt.o
0xe0105040 idt_ptr
0xe0105060 idt_entries
COMMON 0xe0105860 0x10008 task/task.o
0xe0105860 tasking_tmpStack
0xe0115860 kernel_process
0xe0115864 idle_thread
COMMON 0xe0115868 0x4 mem/mem.o
0xe0115868 mem_placementAddr
COMMON 0xe011586c 0x8 mem/paging.o
0xe011586c current_pagedir
0xe0115870 kernel_pagedir
*(.bss)
.bss 0xe0115874 0x0 core/kmain.o
.bss 0xe0115874 0x0 core/sys.o
.bss 0xe0115874 0x8 core/monitor.o
.bss 0xe011587c 0xc task/timer.o
*fill* 0xe0115888 0x18 00
.bss 0xe01158a0 0x40 task/idt.o
.bss 0xe01158e0 0xc task/task.o
0xe01158e0 processes
0xe01158e4 threads
0xe01158e8 current_thread
.bss 0xe01158ec 0x0 task/syscall.o
.bss 0xe01158ec 0x0 lib/stdlib.o
.bss 0xe01158ec 0x0 lib/bitset.o
*fill* 0xe01158ec 0x14 00
.bss 0xe0115900 0x60 mem/mem.o
0xe0115900 freepagecount
.bss 0xe0115960 0x8 mem/paging.o
*fill* 0xe0115968 0x18 00
.bss 0xe0115980 0x2e mem/gdt.o
*fill* 0xe01159ae 0x2 00
.bss 0xe01159b0 0x0 mem/heap.o
.bss 0xe01159b0 0x0 mem/seg.o
.bss 0xe01159b0 0x0 linker/elf.o
0xe01159b0 ebss = .
0xe01159b0 end = .
0xe01159b0 _end = .
0xe01159b0 __end = .
LOAD core/loader_.o
LOAD core/kmain.o
LOAD core/sys.o
LOAD core/monitor.o
LOAD task/timer.o
LOAD task/idt.o
LOAD task/idt_.o
LOAD task/task.o
LOAD task/task_.o
LOAD task/syscall.o
LOAD lib/stdlib.o
LOAD lib/bitset.o
LOAD mem/mem.o
LOAD mem/paging.o
LOAD mem/gdt.o
LOAD mem/heap.o
LOAD mem/seg.o
LOAD linker/elf.o
OUTPUT(stem.elf elf32-i386)
.comment 0x00000000 0x11
.comment 0x00000000 0x11 core/kmain.o
0x12 (size before relaxing)
.comment 0x00000000 0x12 core/sys.o
.comment 0x00000000 0x12 core/monitor.o
.comment 0x00000000 0x12 task/timer.o
.comment 0x00000000 0x12 task/idt.o
.comment 0x00000000 0x12 task/task.o
.comment 0x00000000 0x12 task/syscall.o
.comment 0x00000000 0x12 lib/stdlib.o
.comment 0x00000000 0x12 lib/bitset.o
.comment 0x00000000 0x12 mem/mem.o
.comment 0x00000000 0x12 mem/paging.o
.comment 0x00000000 0x12 mem/gdt.o
.comment 0x00000000 0x12 mem/heap.o
.comment 0x00000000 0x12 mem/seg.o
.comment 0x00000000 0x12 linker/elf.o
.note.GNU-stack
0x00000000 0x0
.note.GNU-stack
0x00000000 0x0 core/kmain.o
.note.GNU-stack
0x00000000 0x0 core/sys.o
.note.GNU-stack
0x00000000 0x0 core/monitor.o
.note.GNU-stack
0x00000000 0x0 task/timer.o
.note.GNU-stack
0x00000000 0x0 task/idt.o
.note.GNU-stack
0x00000000 0x0 task/task.o
.note.GNU-stack
0x00000000 0x0 task/syscall.o
.note.GNU-stack
0x00000000 0x0 lib/stdlib.o
.note.GNU-stack
0x00000000 0x0 lib/bitset.o
.note.GNU-stack
0x00000000 0x0 mem/mem.o
.note.GNU-stack
0x00000000 0x0 mem/paging.o
.note.GNU-stack
0x00000000 0x0 mem/gdt.o
.note.GNU-stack
0x00000000 0x0 mem/heap.o
.note.GNU-stack
0x00000000 0x0 mem/seg.o
.note.GNU-stack
0x00000000 0x0 linker/elf.o
|