blob: 46fc7b615fe1a61c72e8ae98f8f1a0614f60e1b4 (
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
|
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 0x2928 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 0x9bb task/idt.o
0xe010065c idt_isrHandler
0xe01006f4 idt_irqHandler
0xe01007fc idt_init
0xe0101005 idt_handleIrq
*fill* 0xe0101017 0x9 00
.text 0xe0101020 0x259 task/idt_.o
0xe0101020 gdt_flush
0xe010103d idt_flush
0xe01010a5 isr0
0xe01010af isr1
0xe01010b9 isr2
0xe01010c3 isr3
0xe01010cd isr4
0xe01010d7 isr5
0xe01010e1 isr6
0xe01010eb isr7
0xe01010f5 isr8
0xe01010fd isr9
0xe0101107 isr10
0xe010110f isr11
0xe0101117 isr12
0xe010111f isr13
0xe0101127 isr14
0xe010112f isr15
0xe0101139 isr16
0xe0101143 isr17
0xe010114d isr18
0xe0101157 isr19
0xe0101161 isr20
0xe010116b isr21
0xe0101175 isr22
0xe010117f isr23
0xe0101189 isr24
0xe0101193 isr25
0xe010119d isr26
0xe01011a7 isr27
0xe01011b1 isr28
0xe01011bb isr29
0xe01011c5 isr30
0xe01011cf isr31
0xe01011d9 irq0
0xe01011e3 irq1
0xe01011ed irq2
0xe01011f7 irq3
0xe0101201 irq4
0xe010120b irq5
0xe0101215 irq6
0xe010121f irq7
0xe0101229 irq8
0xe0101233 irq9
0xe010123d irq10
0xe0101247 irq11
0xe0101251 irq12
0xe010125b irq13
0xe0101265 irq14
0xe010126f irq15
*fill* 0xe0101279 0x3 00
.text 0xe010127c 0x2e8 task/task.o
0xe010127c tasking_init
0xe010136f tasking_switch
0xe0101401 tasking_handleException
0xe0101481 thread_new
*fill* 0xe0101564 0xc 00
.text 0xe0101570 0xa task/task_.o
0xe0101570 read_eip
0xe0101573 task_idle
*fill* 0xe010157a 0x2 00
.text 0xe010157c 0xca lib/stdlib.o
0xe010157c memcpy
0xe01015b9 memset
0xe01015e8 memsetw
0xe010161e strlen
*fill* 0xe0101646 0x2 00
.text 0xe0101648 0x173 lib/bitset.o
0xe0101648 bitset_set
0xe010169c bitset_clear
0xe01016f2 bitset_test
0xe0101734 bitset_firstFree
*fill* 0xe01017bb 0x1 00
.text 0xe01017bc 0x29f mem/mem.o
0xe0101922 kmalloc_page
0xe0101969 kfree_page
0xe01019a4 kheap_init
0xe01019f9 kmalloc
0xe0101a37 kfree
*fill* 0xe0101a5b 0x1 00
.text 0xe0101a5c 0x513 mem/paging.o
0xe0101a5c frame_alloc
0xe0101a89 frame_free
0xe0101aa4 paging_init
0xe0101c3c paging_cleanup
0xe0101c97 pagedir_switch
0xe0101cc6 paging_fault
0xe0101da1 pagedir_getPage
0xe0101e80 page_map
0xe0101f08 page_unmap
0xe0101f2b page_unmapFree
*fill* 0xe0101f6f 0x1 00
.text 0xe0101f70 0x19f mem/gdt.o
0xe0101fff gdt_init
*fill* 0xe010210f 0x1 00
.text 0xe0102110 0x858 mem/heap.o
0xe01022a0 heap_create
0xe0102673 heap_alloc
0xe01027d4 heap_free
.iplt 0xe0102968 0x0 load address 0x00102968
.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 0xc 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 0x0 lib/stdlib.o
.data 0xe010400c 0x0 lib/bitset.o
.data 0xe010400c 0x0 mem/mem.o
.data 0xe010400c 0x0 mem/paging.o
.data 0xe010400c 0x0 mem/gdt.o
.data 0xe010400c 0x0 mem/heap.o
.igot.plt 0xe010400c 0x0 load address 0x0010400c
.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 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 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 0x27
.comment 0x00000000 0x27 core/kmain.o
0x28 (size before relaxing)
.comment 0x00000000 0x28 core/sys.o
.comment 0x00000000 0x28 core/monitor.o
.comment 0x00000000 0x28 task/timer.o
.comment 0x00000000 0x28 task/idt.o
.comment 0x00000000 0x28 task/task.o
.comment 0x00000000 0x28 lib/stdlib.o
.comment 0x00000000 0x28 lib/bitset.o
.comment 0x00000000 0x28 mem/mem.o
.comment 0x00000000 0x28 mem/paging.o
.comment 0x00000000 0x28 mem/gdt.o
.comment 0x00000000 0x28 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 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
|