Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

  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
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
comment "Machine Types"

if CONFIG_M68KCLASSIC

config CONFIG_AMIGA
	bool "Amiga support"
	depends on CONFIG_MMU
	select CONFIG_MMU_MOTOROLA if CONFIG_MMU
	help
	  This option enables support for the Amiga series of computers. If
	  you plan to use this kernel on an Amiga, say Y here and browse the
	  material available in <file:Documentation/m68k>; otherwise say N.

config CONFIG_ATARI
	bool "Atari support"
	depends on CONFIG_MMU
	select CONFIG_MMU_MOTOROLA if CONFIG_MMU
	help
	  This option enables support for the 68000-based Atari series of
	  computers (including the TT, Falcon and Medusa). If you plan to use
	  this kernel on an Atari, say Y here and browse the material
	  available in <file:Documentation/m68k>; otherwise say N.

config CONFIG_MAC
	bool "Macintosh support"
	depends on CONFIG_MMU
	select CONFIG_MMU_MOTOROLA if CONFIG_MMU
	help
	  This option enables support for the Apple Macintosh series of
	  computers (yes, there is experimental support now, at least for part
	  of the series).

	  Say N unless you're willing to code the remaining necessary support.
	  ;)

config CONFIG_APOLLO
	bool "Apollo support"
	depends on CONFIG_MMU
	select CONFIG_MMU_MOTOROLA if CONFIG_MMU
	help
	  Say Y here if you want to run Linux on an MC680x0-based Apollo
	  Domain workstation such as the DN3500.

config CONFIG_VME
	bool "VME (Motorola and BVM) support"
	depends on CONFIG_MMU
	select CONFIG_MMU_MOTOROLA if CONFIG_MMU
	help
	  Say Y here if you want to build a kernel for a 680x0 based CONFIG_VME
	  board.  Boards currently supported include Motorola boards CONFIG_MVME147,
	  MVME162, MVME166, MVME167, MVME172, and MVME177.  BVME4000 and
	  CONFIG_BVME6000 boards from BVM Ltd are also supported.

config CONFIG_MVME147
	bool "MVME147 support"
	depends on CONFIG_MMU
	depends on CONFIG_VME
	help
	  Say Y to include support for early Motorola CONFIG_VME boards.  This will
	  build a kernel which can run on CONFIG_MVME147 single-board computers.  If
	  you select this option you will have to select the appropriate
	  drivers for CONFIG_SCSI, Ethernet and serial ports later on.

config CONFIG_MVME16x
	bool "MVME162, 166 and 167 support"
	depends on CONFIG_MMU
	depends on CONFIG_VME
	help
	  Say Y to include support for Motorola CONFIG_VME boards.  This will build a
	  kernel which can run on MVME162, MVME166, MVME167, MVME172, and
	  MVME177 boards.  If you select this option you will have to select
	  the appropriate drivers for CONFIG_SCSI, Ethernet and serial ports later
	  on.

config CONFIG_BVME6000
	bool "BVME4000 and BVME6000 support"
	depends on CONFIG_MMU
	depends on CONFIG_VME
	help
	  Say Y to include support for CONFIG_VME boards from BVM Ltd.  This will
	  build a kernel which can run on BVME4000 and CONFIG_BVME6000 boards.  If
	  you select this option you will have to select the appropriate
	  drivers for CONFIG_SCSI, Ethernet and serial ports later on.

config CONFIG_HP300
	bool "HP9000/300 and HP9000/400 support"
	depends on CONFIG_MMU
	select CONFIG_MMU_MOTOROLA if CONFIG_MMU
	help
	  This option enables support for the HP9000/300 and HP9000/400 series
	  of workstations. Support for these machines is still somewhat
	  experimental. If you plan to try to use the kernel on such a machine
	  say Y here.
	  Everybody else says N.

config CONFIG_SUN3X
	bool "Sun3x support"
	depends on CONFIG_MMU
	select CONFIG_MMU_MOTOROLA if CONFIG_MMU
	select CONFIG_M68030
	help
	  This option enables support for the Sun 3x series of workstations.
	  Be warned that this support is very experimental.
	  Note that Sun 3x kernels are not compatible with Sun 3 hardware.
	  General Linux information on the Sun 3x series (now discontinued)
	  is at <http://www.angelfire.com/ca2/tech68k/sun3.html>.

	  If you don't want to compile a kernel for a Sun 3x, say N.

config CONFIG_Q40
	bool "Q40/Q60 support"
	depends on CONFIG_MMU
	select CONFIG_MMU_MOTOROLA if CONFIG_MMU
	help
	  The CONFIG_Q40 is a Motorola 68040-based successor to the Sinclair QL
	  manufactured in Germany.  There is an official CONFIG_Q40 home page at
	  <http://www.q40.de/>.  This option enables support for the Q40 and
	  Q60. Select your CPU below.  For 68LC060 don't forget to enable CONFIG_FPU
	  emulation.

config CONFIG_SUN3
	bool "Sun3 support"
	depends on CONFIG_MMU
	depends on !CONFIG_MMU_MOTOROLA
	select CONFIG_MMU_SUN3 if CONFIG_MMU
	select CONFIG_M68020
	help
	  This option enables support for the Sun 3 series of workstations
	  (3/50, 3/60, 3/1xx, 3/2xx systems). Enabling this option requires
	  that all other hardware types must be disabled, as Sun 3 kernels
	  are incompatible with all other m68k targets (including Sun 3x!).

	  If you don't want to compile a kernel exclusively for a Sun 3, say N.

endif # CONFIG_M68KCLASSIC

config CONFIG_PILOT
	bool

config CONFIG_PILOT3
	bool "Pilot 1000/5000, PalmPilot Personal/Pro, or PalmIII support"
	depends on CONFIG_M68328
	select CONFIG_PILOT
	help
	  Support for the Palm Pilot 1000/5000, Personal/Pro and PalmIII.

config CONFIG_XCOPILOT_BUGS
	bool "(X)Copilot support"
	depends on CONFIG_PILOT3
	help
	  Support the bugs of Xcopilot.

config CONFIG_UCSIMM
	bool "uCsimm module support"
	depends on CONFIG_M68EZ328
	help
	  Support for the Arcturus Networks uCsimm module.

config CONFIG_UCDIMM
	bool "uDsimm module support"
	depends on CONFIG_M68VZ328
	help
	  Support for the Arcturus Networks uDsimm module.

config CONFIG_DRAGEN2
	bool "DragenEngine II board support"
	depends on CONFIG_M68VZ328
	help
	  Support for the DragenEngine II board.

config CONFIG_DIRECT_IO_ACCESS
	bool "Allow user to access IO directly"
	depends on (CONFIG_UCSIMM || CONFIG_UCDIMM || CONFIG_DRAGEN2)
	help
	  Disable the CPU internal registers protection in user mode,
	  to allow a user application to read/write them.

config CONFIG_INIT_LCD
	bool "Initialize LCD"
	depends on (CONFIG_UCSIMM || CONFIG_UCDIMM || CONFIG_DRAGEN2)
	help
	  Initialize the LCD controller of the 68x328 processor.

config CONFIG_MEMORY_RESERVE
	int "Memory reservation (MiB)"
	depends on (CONFIG_UCSIMM || CONFIG_UCDIMM)
	help
	  Reserve certain memory regions on 68x328 based boards.

config CONFIG_ARN5206
	bool "Arnewsh 5206 board support"
	depends on CONFIG_M5206
	help
	  Support for the Arnewsh 5206 board.

config CONFIG_M5206eC3
	bool "Motorola M5206eC3 board support"
	depends on CONFIG_M5206e
	help
	  Support for the Motorola CONFIG_M5206eC3 board.

config CONFIG_ELITE
	bool "Motorola M5206eLITE board support"
	depends on CONFIG_M5206e
	help
	  Support for the Motorola M5206eLITE board.

config CONFIG_M5235EVB
	bool "Freescale M5235EVB support"
	depends on CONFIG_M523x
	help
	  Support for the Freescale CONFIG_M5235EVB board.

config CONFIG_M5249C3
	bool "Motorola M5249C3 board support"
	depends on CONFIG_M5249
	help
	  Support for the Motorola CONFIG_M5249C3 board.

config CONFIG_M5272C3
	bool "Motorola M5272C3 board support"
	depends on CONFIG_M5272
	help
	  Support for the Motorola CONFIG_M5272C3 board.

config CONFIG_WILDFIRE
	bool "Intec Automation Inc. WildFire board support"
	depends on CONFIG_M528x
	help
	  Support for the Intec Automation Inc. WildFire.

config CONFIG_WILDFIREMOD
	bool "Intec Automation Inc. WildFire module support"
	depends on CONFIG_M528x
	help
	  Support for the Intec Automation Inc. WildFire module.

config CONFIG_ARN5307
	bool "Arnewsh 5307 board support"
	depends on CONFIG_M5307
	help
	  Support for the Arnewsh 5307 board.

config CONFIG_M5307C3
	bool "Motorola M5307C3 board support"
	depends on CONFIG_M5307
	help
	  Support for the Motorola CONFIG_M5307C3 board.

config CONFIG_SECUREEDGEMP3
	bool "SnapGear SecureEdge/MP3 platform support"
	depends on CONFIG_M5307
	help
	  Support for the SnapGear SecureEdge/MP3 platform.

config CONFIG_M5407C3
	bool "Motorola M5407C3 board support"
	depends on CONFIG_M5407
	help
	  Support for the Motorola CONFIG_M5407C3 board.

config CONFIG_AMCORE
	bool "Sysam AMCORE board support"
	depends on CONFIG_M5307
	help
	  Support for the Sysam CONFIG_AMCORE open-hardware generic board.

config CONFIG_FIREBEE
	bool "FireBee board support"
	depends on CONFIG_M547x
	help
	  Support for the FireBee ColdFire 5475 based board.

config CONFIG_CLEOPATRA
	bool "Feith CLEOPATRA board support"
	depends on (CONFIG_M5307 || CONFIG_M5407)
	help
	  Support for the Feith Cleopatra boards.

config CONFIG_CANCam
	bool "Feith CANCam board support"
	depends on CONFIG_M5272
	help
	  Support for the Feith CONFIG_CANCam board.

config CONFIG_SCALES
	bool "Feith SCALES board support"
	depends on CONFIG_M5272
	help
	  Support for the Feith CONFIG_SCALES board.

config CONFIG_NETtel
	bool "SecureEdge/NETtel board support"
	depends on (CONFIG_M5206e || CONFIG_M5272 || CONFIG_M5307)
	help
	  Support for the SnapGear CONFIG_NETtel/SecureEdge/SnapGear boards.

config CONFIG_MOD5272
	bool "Netburner MOD-5272 board support"
	depends on CONFIG_M5272
	help
	  Support for the Netburner MOD-5272 board.

if !CONFIG_MMU || CONFIG_COLDFIRE

comment "Machine Options"

config CONFIG_UBOOT
	bool "Support for U-Boot command line parameters"
	help
	  If you say Y here kernel will try to collect command
	  line parameters from the initial u-boot stack.
	default n

config CONFIG_4KSTACKS
	bool "Use 4Kb for kernel stacks instead of 8Kb"
	default y
	help
	  If you say Y here the kernel will use a 4Kb stacksize for the
	  kernel stack attached to each process/thread. This facilitates
	  running more threads on a system and also reduces the pressure
	  on the VM subsystem for higher order allocations.

comment "RAM configuration"

config CONFIG_RAMBASE
	hex "Address of the base of RAM"
	default "0"
	help
	  Define the address that RAM starts at. On many platforms this is
	  0, the base of the address space. And this is the default. Some
	  platforms choose to setup their RAM at other addresses within the
	  processor address space.

config CONFIG_RAMSIZE
	hex "Size of RAM (in bytes), or 0 for automatic"
	default "0x400000"
	help
	  Define the size of the system RAM. If you select 0 then the
	  kernel will try to probe the RAM size at runtime. This is not
	  supported on all CPU types.

config CONFIG_VECTORBASE
	hex "Address of the base of system vectors"
	default "0"
	help
	  Define the address of the system vectors. Commonly this is
	  put at the start of RAM, but it doesn't have to be. On ColdFire
	  platforms this address is programmed into the VBR register, thus
	  actually setting the address to use.

config CONFIG_MBAR
	hex "Address of the MBAR (internal peripherals)"
	default "0x10000000"
	depends on CONFIG_HAVE_MBAR
	help
	  Define the address of the internal system peripherals. This value
	  is set in the processors CONFIG_MBAR register. This is generally setup by
	  the boot loader, and will not be written by the kernel. By far most
	  ColdFire boards use the default 0x10000000 value, so if unsure then
	  use this.

config CONFIG_IPSBAR
	hex "Address of the IPSBAR (internal peripherals)"
	default "0x40000000"
	depends on CONFIG_HAVE_IPSBAR
	help
	  Define the address of the internal system peripherals. This value
	  is set in the processors CONFIG_IPSBAR register. This is generally setup by
	  the boot loader, and will not be written by the kernel. By far most
	  ColdFire boards use the default 0x40000000 value, so if unsure then
	  use this.

config CONFIG_KERNELBASE
	hex "Address of the base of kernel code"
	default "0x400"
	help
	  Typically on m68k systems the kernel will not start at the base
	  of RAM, but usually some small offset from it. Define the start
	  address of the kernel here. The most common setup will have the
	  processor vectors at the base of RAM and then the start of the
	  kernel. On some platforms some RAM is reserved for boot loaders
	  and the kernel starts after that. The 0x400 default was based on
	  a system with the RAM based at address 0, and leaving enough room
	  for the theoretical maximum number of 256 vectors.

comment "ROM configuration"

config CONFIG_ROM
	bool "Specify ROM linker regions"
	default n
	help
	  Define a CONFIG_ROM region for the linker script. This creates a kernel
	  that can be stored in flash, with possibly the text, and data
	  regions being copied out to RAM at startup.

config CONFIG_ROMBASE
	hex "Address of the base of ROM device"
	default "0"
	depends on CONFIG_ROM
	help
	  Define the address that the CONFIG_ROM region starts at. Some platforms
	  use this to set their chip select region accordingly for the boot
	  device.

config CONFIG_ROMVEC
	hex "Address of the base of the ROM vectors"
	default "0"
	depends on CONFIG_ROM
	help
	  This is almost always the same as the base of the CONFIG_ROM. Since on all
	  68000 type variants the vectors are at the base of the boot device
	  on system startup.

config CONFIG_ROMSTART
	hex "Address of the base of system image in ROM"
	default "0x400"
	depends on CONFIG_ROM
	help
	  Define the start address of the system image in CONFIG_ROM. Commonly this
	  is strait after the CONFIG_ROM vectors.

config CONFIG_ROMSIZE
	hex "Size of the ROM device"
	default "0x100000"
	depends on CONFIG_ROM
	help
	  Size of the CONFIG_ROM device. On some platforms this is used to setup
	  the chip select that controls the boot CONFIG_ROM device.

choice
	prompt "Kernel executes from"
	---help---
	  Choose the memory type that the kernel will be running in.

config CONFIG_RAMKERNEL
	bool "RAM"
	help
	  The kernel will be resident in RAM when running.

config CONFIG_ROMKERNEL
	bool "ROM"
	help
	  The kernel will be resident in FLASH/CONFIG_ROM when running. This is
	  often referred to as Execute-in-Place (XIP), since the kernel
	  code executes from the position it is stored in the FLASH/CONFIG_ROM.

endchoice

endif