• Navigation überspringen
  • Zur Navigation
  • Zum Seitenende
Organisationsmenü öffnen Organisationsmenü schließen
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
  • FAUZur zentralen FAU Website
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Suche öffnen
  • English
  • Campo
  • StudOn
  • FAUdir
  • Stellenangebote
  • Lageplan
  • Hilfe im Notfall
  1. Friedrich-Alexander-Universität
  2. Technische Fakultät
  3. Department Informatik
Friedrich-Alexander-Universität Lehrstuhl für Informatik 4 (Systemsoftware)
Menu Menu schließen
  • Lehrstuhl
    • Team
    • Aktuelles
    • Kontakt und Anfahrt
    • Leitbild
    • 50-jähriges Jubiläum
    Portal Lehrstuhl
  • Forschung
    • Forschungsbereiche
      • Betriebssysteme
      • Confidential Computing
      • Eingebettete Systemsoftware
      • Verteilte Systeme
    • Projekte
      • AIMBOS
      • BALu
      • BFT2Chain
      • DOSS
      • Mirador
      • NEON
      • PAVE
      • ResPECT
      • Watwa
    • Projektkampagnen
      • maRE
    • Seminar
      • Systemsoftware
    Portal Forschung
  • Publikationen
  • Lehre
    • Sommersemester 2025
      • Applied Software Architecture
      • Ausgewählte Kapitel der Systemsoftware
      • Betriebssystemtechnik
      • Projekt angewandte Systemsoftwaretechnik
      • System-Level Programming
      • Systemnahe Programmierung in C
      • Systemprogrammierung 1
      • Verteilte Systeme
    • Wintersemester 2024/25
      • Betriebssysteme
      • Middleware – Cloud Computing
      • Systemprogrammierung 2
      • Verlässliche Echtzeitsysteme
      • Virtuelle Maschinen
      • Web-basierte Systeme
    Portal Lehre
  • Examensarbeiten
  1. Startseite
  2. Extern

Extern

Bereichsnavigation: Lehre
  • Betriebssysteme
    • Vorlesung
      • Folien
    • Übung
      • Seminar
      • Aufgaben
      • Aufgabe 0: C++ Streams
        • Aufgabe 1: Ein-/Ausgabe
          • Aufgabe 2: Unterbrechungen
            • Aufgabe 3: Pro-/Epilog
              • Aufgabe 4: Kontextwechsel
                • Aufgabe 5: Zeitscheiben
                  • Aufgabe 6: Synchronisation
                    • Aufgabe 7: Anwendung
                      • Assembler Crashkurs
                        • C++ Crashkurs
                          • Entwicklungsumgebung
                            • FAQ
                              • Ruhmeshalle
                              • Evaluation

                              Aufgabe 7: Anwendung

                              • boot
                              Namespaces | Functions | Constants
                              startup_ap.h File Reference

                              Startup of additional cores, the application processors (APs) More...

                              #include "types.h"
                              #include "compiler/fix.h"
                              + Include dependency graph for startup_ap.h:

                              Namespaces

                               ApplicationProcessor
                               Application Processor Boot.
                               

                              Functions

                              void ApplicationProcessor::relocateSetupCode ()
                               Relocate the real mode setup code. More...
                               
                              void ApplicationProcessor::boot ()
                               Boot all application processors. More...
                               
                              void setup_ap () ERROR_ON_CALL("The setup function for application processors shall never be called from your code!")
                               Entry point for application processors. More...
                               
                              void startup_ap () ERROR_ON_CALL("The startup function for application processors shall never be called from your code!")
                               Startup for application processors. More...
                               

                              Constants

                              const uintptr_t ApplicationProcessor::RELOCATED_SETUP = 0x40000
                               Address (below 1 MiB) to which the setup code gets relocated.
                               
                              char ___SETUP_AP_START__
                               Begin of setup code for application processors. More...
                               
                              char ___SETUP_AP_END__
                               End of startup code for application processors. More...
                               
                              char setup_ap_gdt
                               Memory reserved for a temporary real mode GDT within the relocatable memory area of the setup code.
                               
                              char setup_ap_gdtd
                               Memory reserved for a temporary real mode GDT descriptor within the relocatable memory area of the setup code.
                               

                              Detailed Description

                              Startup of additional cores, the application processors (APs)

                              Function Documentation

                              void setup_ap ( )

                              Entry point for application processors.

                              Unlike the bootstrap processor, the application processors have not been setup by the boot loader – they start in Real Mode (16 bit) and have to be switched manually to Protected Mode (32 bit). This is exactly what this real mode function does, handing over control to the (32 bit) function startup_ap()

                              This code is written is assembly (boot/startup_ap.asm) and relocated by ApplicationProcessor::relocateSetupCode() during ApplicationProcessor::boot()

                              void startup_ap ( )

                              Startup for application processors.

                              This function behaves similar to startup_bsp(): Initializes stack pointer, switches to long mode and calls the C++ kernel_init function

                              Variable Documentation

                              char ___SETUP_AP_START__
                              extern

                              Begin of setup code for application processors.

                              The setup code has to switch from real mode (16 bit) to protected mode (32 bit), hence it is written in assembly and must be executed in low memory (< 1 MiB).

                              After kernel start the code is somewhere above 16 MiB (the bootstrap processor was already launched in protected mode by the boot loader). Therefore this symbol is required for relocate the code to the position specified by ApplicationProcessor::RELOCATED_SETUP.

                              Luckily, the setup_ap code in boot/startup_ap.asm is rather simple and doesn't depend on absolute addressing – and is therefore relocatable.

                              Relocation is done by the function ApplicationProcessor::relocateSetupCode()

                              The ___SETUP_AP_START__ symbol is defined in the linker script (compiler/section.ld)

                              char ___SETUP_AP_END__
                              extern

                              End of startup code for application processors.

                              This Symbol is defined in the linker script (compiler/section.ld)

                              Friedrich-Alexander-Universität
                              Erlangen-Nürnberg

                              Schlossplatz 4
                              91054 Erlangen
                              • Impressum
                              • Datenschutz
                              • Barrierefreiheit
                              • Facebook
                              • RSS Feed
                              • Xing
                              Nach oben