blob: dca785f9037e2fb7b2a475875423c823633833c2 (
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
|
Allocating common symbols
Common symbol size file
idt_ptr 0x6 task/idt.o
mem_placementAddr 0x4 mem/mem.o
idt_entries 0x800 task/idt.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 0x29b0 load address 0x00100040
*(.text)
.text 0xe0100040 0x25 core/loader_.o
*fill* 0xe0100065 0x3 00
.text 0xe0100068 0xef core/kmain.o
0xe0100068 kmain_othertask
0xe010007c kmain_stage2
0xe01000b4 kmain
*fill* 0xe0100157 0x1 00
.text 0xe0100158 0xed core/sys.o
0xe0100158 outb
0xe0100176 outw
0xe0100196 inb
0xe01001b3 inw
0xe01001d2 panic
0xe0100216 cli
0xe0100229 sti
*fill* 0xe0100245 0x3 00
.text 0xe0100248 0x310 core/monitor.o
0xe0100359 monitor_put
0xe0100465 monitor_clear
0xe01004c2 monitor_write
0xe01004eb monitor_writeHex
.text 0xe0100558 0x104 task/timer.o
0xe0100558 timer_callback
0xe0100590 timer_uptime
0xe010059a timer_time
0xe01005d1 timer_init
.text 0xe010065c 0x9fa task/idt.o
0xe010065c idt_isrHandler
0xe01006f4 idt_irqHandler
0xe0100795 idt_syscallHandler
0xe0100816 idt_init
0xe0101044 idt_handleIrq
*fill* 0xe0101056 0xa 00
.text 0xe0101060 0x293 task/idt_.o
0xe0101060 gdt_flush
0xe010107d idt_flush
0xe0101115 isr0
0xe010111f isr1
0xe0101129 isr2
0xe0101133 isr3
0xe010113d isr4
0xe0101147 isr5
0xe0101151 isr6
0xe010115b isr7
0xe0101165 isr8
0xe010116d isr9
0xe0101177 isr10
0xe010117f isr11
0xe0101187 isr12
0xe010118f isr13
0xe0101197 isr14
0xe010119f isr15
0xe01011a9 isr16
0xe01011b3 isr17
0xe01011bd isr18
0xe01011c7 isr19
0xe01011d1 isr20
0xe01011db isr21
0xe01011e5 isr22
0xe01011ef isr23
0xe01011f9 isr24
0xe0101203 isr25
0xe010120d isr26
0xe0101217 isr27
0xe0101221 isr28
0xe010122b isr29
0xe0101235 isr30
0xe010123f isr31
0xe0101249 irq0
0xe0101253 irq1
0xe010125d irq2
0xe0101267 irq3
0xe0101271 irq4
0xe010127b irq5
0xe0101285 irq6
0xe010128f irq7
0xe0101299 irq8
0xe01012a3 irq9
0xe01012ad irq10
0xe01012b7 irq11
0xe01012c1 irq12
0xe01012cb irq13
0xe01012d5 irq14
0xe01012df irq15
0xe01012e9 syscall64
*fill* 0xe01012f3 0x1 00
.text 0xe01012f4 0x2e8 task/task.o
0xe01012f4 tasking_init
0xe01013e7 tasking_switch
0xe0101479 tasking_handleException
0xe01014f9 thread_new
*fill* 0xe01015dc 0x4 00
.text 0xe01015e0 0xa task/task_.o
0xe01015e0 read_eip
0xe01015e3 task_idle
*fill* 0xe01015ea 0x2 00
.text 0xe01015ec 0x15 task/syscall.o
*fill* 0xe0101601 0x3 00
.text 0xe0101604 0xca lib/stdlib.o
0xe0101604 memcpy
0xe0101641 memset
0xe0101670 memsetw
0xe01016a6 strlen
*fill* 0xe01016ce 0x2 00
.text 0xe01016d0 0x173 lib/bitset.o
0xe01016d0 bitset_set
0xe0101724 bitset_clear
0xe010177a bitset_test
0xe01017bc bitset_firstFree
*fill* 0xe0101843 0x1 00
.text 0xe0101844 0x29f mem/mem.o
0xe01019aa kmalloc_page
0xe01019f1 kfree_page
0xe0101a2c kheap_init
0xe0101a81 kmalloc
0xe0101abf kfree
*fill* 0xe0101ae3 0x1 00
.text 0xe0101ae4 0x513 mem/paging.o
0xe0101ae4 frame_alloc
0xe0101b11 frame_free
0xe0101b2c paging_init
0xe0101cc4 paging_cleanup
0xe0101d1f pagedir_switch
0xe0101d4e paging_fault
0xe0101e29 pagedir_getPage
0xe0101f08 page_map
0xe0101f90 page_unmap
0xe0101fb3 page_unmapFree
*fill* 0xe0101ff7 0x1 00
.text 0xe0101ff8 0x19f mem/gdt.o
0xe0102087 gdt_init
*fill* 0xe0102197 0x1 00
.text 0xe0102198 0x858 mem/heap.o
0xe0102328 heap_create
0xe01026fb heap_alloc
0xe010285c heap_free
.iplt 0xe01029f0 0x0 load address 0x001029f0
.iplt 0x00000000 0x0 core/loader_.o
.rodata 0xe0103000 0x1bb load address 0x00103000
*(.rodata)
.rodata 0xe0103000 0x52 core/kmain.o
.rodata 0xe0103052 0x2c core/sys.o
.rodata 0xe010307e 0xf task/timer.o
*fill* 0xe010308d 0x3 00
.rodata 0xe0103090 0x78 task/idt.o
.rodata 0xe0103108 0x12 task/task.o
.rodata 0xe010311a 0x10 mem/mem.o
.rodata 0xe010312a 0x89 mem/paging.o
.rodata 0xe01031b3 0x8 mem/gdt.o
.rel.dyn 0xe01031bc 0x0 load address 0x001031bb
.rel.iplt 0x00000000 0x0 core/loader_.o
.rel.text 0x00000000 0x0 core/loader_.o
.data 0xe0104000 0x20 load address 0x00104000
*(.data)
.data 0xe0104000 0x0 core/kmain.o
.data 0xe0104000 0x4 core/sys.o
.data 0xe0104004 0x4 core/monitor.o
.data 0xe0104008 0x0 task/timer.o
.data 0xe0104008 0x0 task/idt.o
.data 0xe0104008 0x4 task/task.o
0xe0104008 nextpid
.data 0xe010400c 0x14 task/syscall.o
0xe010400c syscalls
.data 0xe0104020 0x0 lib/stdlib.o
.data 0xe0104020 0x0 lib/bitset.o
.data 0xe0104020 0x0 mem/mem.o
.data 0xe0104020 0x0 mem/paging.o
.data 0xe0104020 0x0 mem/gdt.o
.data 0xe0104020 0x0 mem/heap.o
.igot.plt 0xe0104020 0x0 load address 0x00104020
.igot.plt 0x00000000 0x0 core/loader_.o
.bss 0xe0104020 0x4950 load address 0x00104020
0xe0104020 sbss = .
*(COMMON)
COMMON 0xe0104020 0x820 task/idt.o
0xe0104020 idt_ptr
0xe0104040 idt_entries
COMMON 0xe0104840 0x4 mem/mem.o
0xe0104840 mem_placementAddr
COMMON 0xe0104844 0x8 mem/paging.o
0xe0104844 current_pagedir
0xe0104848 kernel_pagedir
*(.bss)
.bss 0xe010484c 0x4000 core/loader_.o
.bss 0xe010884c 0x0 core/kmain.o
.bss 0xe010884c 0x0 core/sys.o
.bss 0xe010884c 0x8 core/monitor.o
.bss 0xe0108854 0xc task/timer.o
.bss 0xe0108860 0x40 task/idt.o
.bss 0xe01088a0 0xc task/task.o
0xe01088a0 processes
0xe01088a4 threads
0xe01088a8 current_thread
.bss 0xe01088ac 0x0 task/syscall.o
.bss 0xe01088ac 0x0 lib/stdlib.o
.bss 0xe01088ac 0x0 lib/bitset.o
*fill* 0xe01088ac 0x14 00
.bss 0xe01088c0 0x60 mem/mem.o
0xe01088c0 freepagecount
.bss 0xe0108920 0x8 mem/paging.o
*fill* 0xe0108928 0x18 00
.bss 0xe0108940 0x2e mem/gdt.o
*fill* 0xe010896e 0x2 00
.bss 0xe0108970 0x0 mem/heap.o
0xe0108970 ebss = .
0xe0108970 end = .
0xe0108970 _end = .
0xe0108970 __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
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
.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
|