1

Sync after submission

This commit is contained in:
2023-03-08 15:18:50 +01:00
parent 5349bca520
commit e7e2feb179
14 changed files with 1807 additions and 28 deletions

235
chap/background.aux Normal file
View File

@ -0,0 +1,235 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{listings}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Background}{3}{chapter.2}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{loa}{\addvspace {10\p@ }}
\newlabel{ch:background}{{2}{3}{Background}{chapter.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Handling of External Events}{4}{section.2.1}\protected@file@percent }
\newlabel{sec:eventhandling}{{2.1}{4}{Handling of External Events}{section.2.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Fundamental Concepts}{4}{section.2.2}\protected@file@percent }
\newlabel{sec:fundamentals}{{2.2}{4}{Fundamental Concepts}{section.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Interrupt}{4}{subsection.2.2.1}\protected@file@percent }
\newlabel{subsec:interrupt}{{2.2.1}{4}{Interrupt}{subsection.2.2.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Interrupt Controller}{5}{subsection.2.2.2}\protected@file@percent }
\newlabel{subsec:controller}{{2.2.2}{5}{Interrupt Controller}{subsection.2.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.3}Interrupt Handler}{5}{subsection.2.2.3}\protected@file@percent }
\newlabel{subsec:handler}{{2.2.3}{5}{Interrupt Handler}{subsection.2.2.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Interrupt Handler Execution.\relax }}{6}{figure.2.1}\protected@file@percent }
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{fig:interruptexecution}{{2.1}{6}{Interrupt Handler Execution.\relax }{figure.2.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.4}Interrupt Trigger Mode}{6}{subsection.2.2.4}\protected@file@percent }
\newlabel{subsec:triggermode}{{2.2.4}{6}{Interrupt Trigger Mode}{subsection.2.2.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.5}Spurious Interrupt}{6}{subsection.2.2.5}\protected@file@percent }
\newlabel{subsec:spurious}{{2.2.5}{6}{Spurious Interrupt}{subsection.2.2.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Used Technologies}{7}{section.2.3}\protected@file@percent }
\newlabel{sec:technologies}{{2.3}{7}{Used Technologies}{section.2.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}Advanced Configuration and Power Interface}{7}{subsection.2.3.1}\protected@file@percent }
\newlabel{subsec:acpi}{{2.3.1}{7}{Advanced Configuration and Power Interface}{subsection.2.3.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}CPU Identification}{7}{subsection.2.3.2}\protected@file@percent }
\newlabel{subsec:cpuid}{{2.3.2}{7}{CPU Identification}{subsection.2.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.3}Symmetric Multiprocessing}{7}{subsection.2.3.3}\protected@file@percent }
\newlabel{subsec:smp}{{2.3.3}{7}{Symmetric Multiprocessing}{subsection.2.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.4}Model Specific Register}{8}{subsection.2.3.4}\protected@file@percent }
\newlabel{subsec:msr}{{2.3.4}{8}{Model Specific Register}{subsection.2.3.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.5}Memory Mapped I/O}{8}{subsection.2.3.5}\protected@file@percent }
\newlabel{subsec:mmio}{{2.3.5}{8}{Memory Mapped I/O}{subsection.2.3.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.6}Programmable Interval Timer}{8}{subsection.2.3.6}\protected@file@percent }
\newlabel{subsec:pit}{{2.3.6}{8}{Programmable Interval Timer}{subsection.2.3.6}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.4}Intel's Interrupt Controllers}{8}{section.2.4}\protected@file@percent }
\newlabel{sec:intelcontrollers}{{2.4}{8}{Intel's Interrupt Controllers}{section.2.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}Programmable Interrupt Controller}{8}{subsection.2.4.1}\protected@file@percent }
\newlabel{subsec:intelpic}{{2.4.1}{8}{Programmable Interrupt Controller}{subsection.2.4.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces The PC/AT PIC Architecture~\blx@tocontentsinit {0}\autocite [sec.~1.13]{pcat}.\relax }}{9}{figure.2.2}\protected@file@percent }
\newlabel{fig:pcatpic}{{2.2}{9}{The PC/AT PIC Architecture~\autocite [sec.~1.13]{pcat}.\relax }{figure.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.2}Advanced Programmable Interrupt Controller}{10}{subsection.2.4.2}\protected@file@percent }
\newlabel{subsec:intelapic}{{2.4.2}{10}{Advanced Programmable Interrupt Controller}{subsection.2.4.2}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces The Discrete APIC Architecture~\blx@tocontentsinit {0}\autocite [sec.~5.1]{mpspec}.\relax }}{11}{figure.2.3}\protected@file@percent }
\newlabel{fig:discreteapic}{{2.3}{11}{The Discrete APIC Architecture~\autocite [sec.~5.1]{mpspec}.\relax }{figure.2.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.4}{\ignorespaces The Integrated APIC Architecture~\blx@tocontentsinit {0}\autocite [sec.~5.2]{mpspec}.\relax }}{12}{figure.2.4}\protected@file@percent }
\newlabel{fig:integratedapic}{{2.4}{12}{The Integrated APIC Architecture~\autocite [sec.~5.2]{mpspec}.\relax }{figure.2.4}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.5}{\ignorespaces System Bus vs APIC Bus~\blx@tocontentsinit {0}\autocite [sec.~3.11.1]{ia32}.\relax }}{13}{figure.2.5}\protected@file@percent }
\newlabel{fig:systemvsapicbus}{{2.5}{13}{System Bus vs APIC Bus~\autocite [sec.~3.11.1]{ia32}.\relax }{figure.2.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.5}PC/AT Compatibility}{13}{section.2.5}\protected@file@percent }
\newlabel{sec:pcatcompat}{{2.5}{13}{PC/AT Compatibility}{section.2.5}{}}
\@setckpt{chap/background}{
\setcounter{page}{15}
\setcounter{equation}{0}
\setcounter{enumi}{5}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{16}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{2}
\setcounter{section}{5}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{tcbbreakpart}{1}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{4}
\setcounter{FancyVerbLine}{0}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{22}
\setcounter{FV@TrueTabGroupLevel}{0}
\setcounter{FV@TrueTabCounter}{0}
\setcounter{FV@HighlightLinesStart}{0}
\setcounter{FV@HighlightLinesStop}{0}
\setcounter{FancyVerbLineBreakLast}{0}
\setcounter{FV@BreakBufferDepth}{0}
\setcounter{float@type}{16}
\setcounter{minted@FancyVerbLineTemp}{0}
\setcounter{minted@pygmentizecounter}{0}
\setcounter{listing}{0}
\setcounter{tcblisting}{0}
\setcounter{caption@flags}{6}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}
\setcounter{subtable}{0}
\setcounter{section@level}{1}
\setcounter{Item}{10}
\setcounter{Hfootnote}{16}
\setcounter{bookmark@seq@number}{20}
\setcounter{AlgoLine}{0}
\setcounter{algocfline}{0}
\setcounter{algocfproc}{0}
\setcounter{algocf}{0}
\setcounter{lofdepth}{1}
\setcounter{lotdepth}{1}
\setcounter{svg@param@lastpage}{0}
\setcounter{svg@param@currpage}{-1}
\setcounter{su@anzahl}{0}
\setcounter{LT@tables}{0}
\setcounter{LT@chunks}{0}
\setcounter{@pps}{0}
\setcounter{@ppsavesec}{0}
\setcounter{@ppsaveapp}{0}
\setcounter{AM@survey}{0}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{30}
\setcounter{maxnames}{3}
\setcounter{minnames}{3}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{0}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{blx@maxsection}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{cbx@tempcnta}{0}
\setcounter{cbx@tempcntb}{2}
\setcounter{cbx@tempcntc}{0}
\setcounter{cbx@tempcntd}{-1}
\setcounter{tcb@cnt@codeblock}{0}
}

View File

@ -1,7 +1,7 @@
\chapter{Background}
\label{ch:background}
In this chapter, important domain-specific concepts will be explained, to create the necessary foundation to follow \autoref{ch:implementation}.
In this chapter, important domain-specific concepts will be explained, to create the necessary foundation to follow \autoref{ch:interrupthandling} and \autoref{ch:implementation}.
Important terms present in the glossary are marked in \textbf{bold} on their first occurrence.
\clearpage
@ -304,7 +304,7 @@ In comparison to the PIC, the external interrupt handling sequence changed:
\item When the interrupt is being handled by the OS, it sends an EOI to the local APIC\footnote{
In case of edge-triggered interrupts. For level-triggered interrupts see \autoref{subsec:ioapiceoi}.},
\ which clears the corresponding bit in the ISR\@.
Note how the OS only interacts directly with the local APIC, not the I/O APIC.
Note how the OS only interacts directly with the local APIC, not the I/O APIC\@.
\end{enumerate}
To allow splitting the APIC architecture into local APICs of multiple CPU cores and I/O APICs, the individual components communicate over a bus.
@ -334,12 +334,12 @@ A notable difference between xApic and x2Apic architectures is the register acce
\label{sec:pcatcompat}
For compatibility with older computer systems, two cascaded PICs are usually present in current computer systems (see \autoref{fig:discreteapic}/\autoref{fig:integratedapic}).
The local APIC can be initialized to operate with these PICs instead of the I/O APIC, this is called \textbf{\gls{virtual wire mode}}.
It is possible to operate with both the PIC and I/O APIC as controllers for external interrupts in \textit{mixed mode}, but this is very uncommon.
Because the presence of a local APIC usually guarantees the presence of an I/O APIC, this thesis only focuses on interrupt handling with either two PICs (\textbf{\gls{pic mode}}), in case no APIC is available, or the full APIC architecture (local APIC and I/O APIC in \textbf{\gls{symmetric io mode}})\footnote{
For more information on operating modes, consult the \textquote{MultiProcessor Specification}~\autocite[sec.~3.6.2.1]{mpspec}.}.
The local APIC can be initialized to operate with these PICs instead of the I/O APIC, this is called \textbf{\gls{virtual wire mode}}~\autocite[sec.~3.6.2.2]{mpspec}.
It is possible to operate with both the PIC and I/O APIC as controllers for external interrupts in \textit{mixed mode}~\autocite[sec.~3.6.2.3]{mpspec}, but this is very uncommon.
Because the presence of a local APIC usually guarantees the presence of an I/O APIC, this thesis only focuses on interrupt handling with either two PICs with a single processor (\textbf{\gls{pic mode}}~\autocite[sec.~3.6.2.1]{mpspec}), in case no APIC is available, or the full APIC architecture (local APIC and I/O APIC in \textbf{\gls{symmetric io mode}}~\cite[sec.~3.6.2.3]{mpspec}).
Hardware following the MultiProcessor Specification must either implement PIC mode or virtual wire mode for PC/AT compatibility.
To switch from PIC to symmetric I/O mode, some (older) hardware provides the \textbf{\gls{imcr}}, a special register that controls the physical connection of the PIC to the CPU\@.
To switch from PIC mode (if implemented) to symmetric I/O mode, the \textbf{\gls{imcr}}, a special register which controls the physical connection of the PIC to the CPU, has to be configured.
In the original discrete APIC architecture, the IMCR can choose if either the PIC or local APIC is connected to the CPU (see \autoref{fig:discreteapic}), since the xApic architecture the IMCR only connects or disconnects the PIC to the local APIC's LINT0 INTI (see \autoref{fig:integratedapic}).
When the IMCR is set to connect the PIC, and the xApic \textquote{global enable/disable} flag is unset (see \autoref{subsec:lapicenable}), the system is functionally equivalent to an IA-32 CPU without an integrated local APIC~\autocite[sec.~3.11.4.3]{ia32}.
Modern systems (and QEMU) do not support PIC Mode and thus do not have the IMCR\@.

202
chap/conclusion.aux Normal file
View File

@ -0,0 +1,202 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{listings}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\numberline {6}Conclusion}{53}{chapter.6}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{loa}{\addvspace {10\p@ }}
\newlabel{ch:conclusion}{{6}{53}{Conclusion}{chapter.6}{}}
\@writefile{toc}{\contentsline {section}{\numberline {6.1}Comparing PIC and APIC Implementations}{54}{section.6.1}\protected@file@percent }
\newlabel{sec:comparingpicapic}{{6.1}{54}{Comparing PIC and APIC Implementations}{section.6.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {6.2}Future Improvements}{54}{section.6.2}\protected@file@percent }
\newlabel{sec:futureimprov}{{6.2}{54}{Future Improvements}{section.6.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}Dependence on ACPI}{54}{subsection.6.2.1}\protected@file@percent }
\newlabel{subsec:acpidependance}{{6.2.1}{54}{Dependence on ACPI}{subsection.6.2.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}Discrete APIC and x2Apic}{55}{subsection.6.2.2}\protected@file@percent }
\newlabel{subsec:discretex2}{{6.2.2}{55}{Discrete APIC and x2Apic}{subsection.6.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}PCI Devices}{55}{subsection.6.2.3}\protected@file@percent }
\newlabel{subsec:pcidevices}{{6.2.3}{55}{PCI Devices}{subsection.6.2.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.4}Multiprocessor Systems}{55}{subsection.6.2.4}\protected@file@percent }
\newlabel{subsec:multiprocessor}{{6.2.4}{55}{Multiprocessor Systems}{subsection.6.2.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.5}UEFI Support}{56}{subsection.6.2.5}\protected@file@percent }
\newlabel{subsec:uefisupport}{{6.2.5}{56}{UEFI Support}{subsection.6.2.5}{}}
\@setckpt{chap/conclusion}{
\setcounter{page}{57}
\setcounter{equation}{0}
\setcounter{enumi}{4}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{5}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{6}
\setcounter{section}{2}
\setcounter{subsection}{5}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{tcbbreakpart}{1}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{188}
\setcounter{FancyVerbLine}{12}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{64}
\setcounter{FV@TrueTabGroupLevel}{0}
\setcounter{FV@TrueTabCounter}{0}
\setcounter{FV@HighlightLinesStart}{0}
\setcounter{FV@HighlightLinesStop}{0}
\setcounter{FancyVerbLineBreakLast}{0}
\setcounter{FV@BreakBufferDepth}{0}
\setcounter{float@type}{16}
\setcounter{minted@FancyVerbLineTemp}{0}
\setcounter{minted@pygmentizecounter}{48}
\setcounter{listing}{0}
\setcounter{tcblisting}{0}
\setcounter{caption@flags}{6}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}
\setcounter{subtable}{0}
\setcounter{section@level}{2}
\setcounter{Item}{50}
\setcounter{Hfootnote}{45}
\setcounter{bookmark@seq@number}{71}
\setcounter{AlgoLine}{0}
\setcounter{algocfline}{0}
\setcounter{algocfproc}{0}
\setcounter{algocf}{0}
\setcounter{lofdepth}{1}
\setcounter{lotdepth}{1}
\setcounter{svg@param@lastpage}{0}
\setcounter{svg@param@currpage}{-1}
\setcounter{su@anzahl}{0}
\setcounter{LT@tables}{0}
\setcounter{LT@chunks}{0}
\setcounter{@pps}{0}
\setcounter{@ppsavesec}{0}
\setcounter{@ppsaveapp}{0}
\setcounter{AM@survey}{0}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{101}
\setcounter{maxnames}{3}
\setcounter{minnames}{3}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{0}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{blx@maxsection}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{cbx@tempcnta}{0}
\setcounter{cbx@tempcntb}{20}
\setcounter{cbx@tempcntc}{0}
\setcounter{cbx@tempcntd}{-1}
\setcounter{tcb@cnt@codeblock}{0}
}

192
chap/figures.aux Normal file
View File

@ -0,0 +1,192 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{listings}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\numberline {A}Figures}{59}{appendix.1.A}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{loa}{\addvspace {10\p@ }}
\newlabel{ch:figures}{{A}{59}{Figures}{appendix.1.A}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {A.1}{\ignorespaces Enabling the APIC Subsystem.\relax }}{60}{figure.1.A.1}\protected@file@percent }
\newlabel{fig:apicenable}{{A.1}{60}{Enabling the APIC Subsystem.\relax }{figure.1.A.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {A.2}{\ignorespaces Starting SMP Operation.\relax }}{61}{figure.1.A.2}\protected@file@percent }
\newlabel{fig:smpenable}{{A.2}{61}{Starting SMP Operation.\relax }{figure.1.A.2}{}}
\@setckpt{chap/figures}{
\setcounter{page}{63}
\setcounter{equation}{0}
\setcounter{enumi}{4}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{1}
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{2}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{tcbbreakpart}{1}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{188}
\setcounter{FancyVerbLine}{12}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{70}
\setcounter{FV@TrueTabGroupLevel}{0}
\setcounter{FV@TrueTabCounter}{0}
\setcounter{FV@HighlightLinesStart}{0}
\setcounter{FV@HighlightLinesStop}{0}
\setcounter{FancyVerbLineBreakLast}{0}
\setcounter{FV@BreakBufferDepth}{0}
\setcounter{float@type}{16}
\setcounter{minted@FancyVerbLineTemp}{0}
\setcounter{minted@pygmentizecounter}{48}
\setcounter{listing}{0}
\setcounter{tcblisting}{0}
\setcounter{caption@flags}{6}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}
\setcounter{subtable}{0}
\setcounter{section@level}{2}
\setcounter{Item}{50}
\setcounter{Hfootnote}{45}
\setcounter{bookmark@seq@number}{72}
\setcounter{AlgoLine}{0}
\setcounter{algocfline}{0}
\setcounter{algocfproc}{0}
\setcounter{algocf}{0}
\setcounter{lofdepth}{1}
\setcounter{lotdepth}{1}
\setcounter{svg@param@lastpage}{0}
\setcounter{svg@param@currpage}{-1}
\setcounter{su@anzahl}{0}
\setcounter{LT@tables}{0}
\setcounter{LT@chunks}{0}
\setcounter{@pps}{1}
\setcounter{@ppsavesec}{6}
\setcounter{@ppsaveapp}{0}
\setcounter{AM@survey}{0}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{101}
\setcounter{maxnames}{3}
\setcounter{minnames}{3}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{0}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{blx@maxsection}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{cbx@tempcnta}{0}
\setcounter{cbx@tempcntb}{20}
\setcounter{cbx@tempcntc}{0}
\setcounter{cbx@tempcntd}{-1}
\setcounter{tcb@cnt@codeblock}{0}
}

290
chap/implementation.aux Normal file
View File

@ -0,0 +1,290 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{listings}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Implementation}{29}{chapter.4}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{loa}{\addvspace {10\p@ }}
\newlabel{ch:implementation}{{4}{29}{Implementation}{chapter.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Design Decisions and Scope}{30}{section.4.1}\protected@file@percent }
\newlabel{sec:design}{{4.1}{30}{Design Decisions and Scope}{section.4.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Caller Hierarchy of the Main Components.\relax }}{30}{figure.4.1}\protected@file@percent }
\newlabel{fig:implarch}{{4.1}{30}{Caller Hierarchy of the Main Components.\relax }{figure.4.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Integration into HhuOS}{32}{section.4.2}\protected@file@percent }
\newlabel{sec:apxhhuos}{{4.2}{32}{Integration into HhuOS}{section.4.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Interrupt Handling in HhuOS}{32}{subsection.4.2.1}\protected@file@percent }
\newlabel{subsec:apxcurrenthhuos}{{4.2.1}{32}{Interrupt Handling in HhuOS}{subsection.4.2.1}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.1}{\ignorespaces \hspace *{1ex}The InterruptHandler Interface (InterruptHandler.h)~\blx@tocontentsinit {0}\autocite {hhuos}}}{33}{tcb@cnt@codeblock.4.1}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.2}{\ignorespaces \hspace *{1ex}Assigning an Interrupt Handler (InterruptDispatcher.cpp)~\blx@tocontentsinit {0}\autocite {hhuos}}}{33}{tcb@cnt@codeblock.4.2}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.3}{\ignorespaces \hspace *{1ex}Triggering an Interrupt Handler (InterruptDispatcher.cpp)~\blx@tocontentsinit {0}\autocite {hhuos}}}{33}{tcb@cnt@codeblock.4.3}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.4}{\ignorespaces \hspace *{1ex}The PIT Interrupt Handler (Pit.cpp)~\blx@tocontentsinit {0}\autocite {hhuos}}}{33}{tcb@cnt@codeblock.4.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}Necessary Modifications to HhuOS}{33}{subsection.4.2.2}\protected@file@percent }
\newlabel{subsec:hhuosintegration}{{4.2.2}{33}{Necessary Modifications to HhuOS}{subsection.4.2.2}{}}
\newlabel{lst:interruptserviceafter}{{4.5}{34}{Necessary Modifications to HhuOS}{tcb@cnt@codeblock.4.5}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.5}{\ignorespaces \hspace *{1ex}Using the Correct Interrupt Controller (InterruptService.cpp)}}{34}{tcb@cnt@codeblock.4.5}\protected@file@percent }
\newlabel{lst:pithandlerafter}{{4.6}{34}{Necessary Modifications to HhuOS}{tcb@cnt@codeblock.4.6}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.6}{\ignorespaces \hspace *{1ex}Disabling PIT Preemption (Pit.cpp)}}{34}{tcb@cnt@codeblock.4.6}\protected@file@percent }
\newlabel{lst:systemafter}{{4.7}{34}{Necessary Modifications to HhuOS}{tcb@cnt@codeblock.4.7}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.7}{\ignorespaces \hspace *{1ex}Enabling the APIC System (System.cpp)}}{34}{tcb@cnt@codeblock.4.7}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}Public Interface of the APIC Subsystem}{34}{subsection.4.2.3}\protected@file@percent }
\newlabel{subsec:hhuospublicinterface}{{4.2.3}{34}{Public Interface of the APIC Subsystem}{subsection.4.2.3}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.8}{\ignorespaces \hspace *{1ex}The APIC Public Interface (Apic.h)}}{35}{tcb@cnt@codeblock.4.8}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Local APIC}{35}{section.4.3}\protected@file@percent }
\newlabel{sec:apxlocalapic}{{4.3}{35}{Local APIC}{section.4.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}Disabling PIC Mode}{35}{subsection.4.3.1}\protected@file@percent }
\newlabel{subsec:apxdisablepic}{{4.3.1}{35}{Disabling PIC Mode}{subsection.4.3.1}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.9}{\ignorespaces \hspace *{1ex}Disabling PIC Mode (LocalApic.cpp)}}{35}{tcb@cnt@codeblock.4.9}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}Accessing Local APIC Registers in xApic Mode}{36}{subsection.4.3.2}\protected@file@percent }
\newlabel{subsec:apxxapicregacc}{{4.3.2}{36}{Accessing Local APIC Registers in xApic Mode}{subsection.4.3.2}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.10}{\ignorespaces \hspace *{1ex}Allocating the Local APIC's MMIO Region (LocalApic.cpp)}}{36}{tcb@cnt@codeblock.4.10}\protected@file@percent }
\newlabel{lst:lapicmmiowrite}{{4.11}{36}{Accessing Local APIC Registers in xApic Mode}{tcb@cnt@codeblock.4.11}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.11}{\ignorespaces \hspace *{1ex}Writing a Local APIC MMIO Register (LocalApic.cpp)}}{36}{tcb@cnt@codeblock.4.11}\protected@file@percent }
\newlabel{lst:msrentry}{{4.12}{36}{Accessing Local APIC Registers in xApic Mode}{tcb@cnt@codeblock.4.12}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.12}{\ignorespaces \hspace *{1ex}The MSREntry Structure (LocalApicRegisters.h)}}{36}{tcb@cnt@codeblock.4.12}\protected@file@percent }
\newlabel{lst:svrentry}{{4.13}{36}{Accessing Local APIC Registers in xApic Mode}{tcb@cnt@codeblock.4.13}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.13}{\ignorespaces \hspace *{1ex}The SVREntry Structure (LocalApicRegisters.h)}}{36}{tcb@cnt@codeblock.4.13}\protected@file@percent }
\newlabel{lst:lvtentry}{{4.14}{37}{Accessing Local APIC Registers in xApic Mode}{tcb@cnt@codeblock.4.14}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.14}{\ignorespaces \hspace *{1ex}The LVTEntry Structure (LocalApicRegisters.h)}}{37}{tcb@cnt@codeblock.4.14}\protected@file@percent }
\newlabel{lst:icrentry}{{4.15}{37}{Accessing Local APIC Registers in xApic Mode}{tcb@cnt@codeblock.4.15}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.15}{\ignorespaces \hspace *{1ex}The ICREntry Structure (LocalApicRegisters.h)}}{37}{tcb@cnt@codeblock.4.15}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.16}{\ignorespaces \hspace *{1ex}Writing the IA32\textunderscore {}APIC\textunderscore {}BASE MSR (LocalApic.cpp)}}{37}{tcb@cnt@codeblock.4.16}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.17}{\ignorespaces \hspace *{1ex}Writing the SVR (LocalApic.cpp)}}{37}{tcb@cnt@codeblock.4.17}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.18}{\ignorespaces \hspace *{1ex}Writing the LVT (LocalApic.cpp)}}{37}{tcb@cnt@codeblock.4.18}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.19}{\ignorespaces \hspace *{1ex}Writing the ICR (LocalApic.cpp)}}{37}{tcb@cnt@codeblock.4.19}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.3}Initializing the LVT}{38}{subsection.4.3.3}\protected@file@percent }
\newlabel{subsec:apxlvtinit}{{4.3.3}{38}{Initializing the LVT}{subsection.4.3.3}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.20}{\ignorespaces \hspace *{1ex}Configuring the Local Error Interrupt (LocalApic.cpp)}}{38}{tcb@cnt@codeblock.4.20}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.4}Handling the Spurious Interrupt}{38}{subsection.4.3.4}\protected@file@percent }
\newlabel{subsec:apxsvr}{{4.3.4}{38}{Handling the Spurious Interrupt}{subsection.4.3.4}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.21}{\ignorespaces \hspace *{1ex}Setting the Spurious Interrupt Vector (LocalApic.cpp)}}{38}{tcb@cnt@codeblock.4.21}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.22}{\ignorespaces \hspace *{1ex}Checking for Spurious Interrupts (InterruptDispatcher.cpp)}}{38}{tcb@cnt@codeblock.4.22}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.23}{\ignorespaces \hspace *{1ex}Ignoring Spurious Interrupts (InterruptDispatcher.cpp)}}{38}{tcb@cnt@codeblock.4.23}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.5}Using the APIC Timer}{39}{subsection.4.3.5}\protected@file@percent }
\newlabel{subsec:apxapictimer}{{4.3.5}{39}{Using the APIC Timer}{subsection.4.3.5}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.24}{\ignorespaces \hspace *{1ex}Calibrating the APIC Timer (ApicTimer.cpp)}}{39}{tcb@cnt@codeblock.4.24}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.25}{\ignorespaces \hspace *{1ex}Microsecond Delay without Interrupts (Pit.cpp)}}{39}{tcb@cnt@codeblock.4.25}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.26}{\ignorespaces \hspace *{1ex}Handling the APIC Timer Interrupt (ApicTimer.cpp)}}{40}{tcb@cnt@codeblock.4.26}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.6}Handling Local APIC Errors}{40}{subsection.4.3.6}\protected@file@percent }
\newlabel{subsec:apxhandlingerror}{{4.3.6}{40}{Handling Local APIC Errors}{subsection.4.3.6}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.27}{\ignorespaces \hspace *{1ex}The Local APIC Error Interrupt Handler (ApicErrorHandler.cpp)}}{40}{tcb@cnt@codeblock.4.27}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.4}I/O APIC}{40}{section.4.4}\protected@file@percent }
\newlabel{sec:apxioapic}{{4.4}{40}{I/O APIC}{section.4.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.1}Accessing I/O APIC Registers}{40}{subsection.4.4.1}\protected@file@percent }
\newlabel{subsec:iolistings}{{4.4.1}{40}{Accessing I/O APIC Registers}{subsection.4.4.1}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.28}{\ignorespaces \hspace *{1ex}Writing an I/O APIC MMIO Register (IoApic.h)}}{40}{tcb@cnt@codeblock.4.28}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.29}{\ignorespaces \hspace *{1ex}Writing an I/O APIC Indirect Register (IoApic.cpp)}}{41}{tcb@cnt@codeblock.4.29}\protected@file@percent }
\newlabel{lst:redtblentry}{{4.30}{41}{Accessing I/O APIC Registers}{tcb@cnt@codeblock.4.30}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.30}{\ignorespaces \hspace *{1ex}The REDTBLEntry Structure (IoApicRegisters.h)}}{41}{tcb@cnt@codeblock.4.30}\protected@file@percent }
\newlabel{lst:writeredtbl}{{4.31}{41}{Accessing I/O APIC Registers}{tcb@cnt@codeblock.4.31}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.31}{\ignorespaces \hspace *{1ex}Writing the REDTBL (IoApic.cpp)}}{41}{tcb@cnt@codeblock.4.31}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4.2}Interrupt Overrides}{41}{subsection.4.4.2}\protected@file@percent }
\newlabel{subsec:apxirqoverrides}{{4.4.2}{41}{Interrupt Overrides}{subsection.4.4.2}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.32}{\ignorespaces \hspace *{1ex}The External Interrupt Override Structure (IoApic.h)}}{41}{tcb@cnt@codeblock.4.32}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.33}{\ignorespaces \hspace *{1ex}Initializing the REDTBL (IoApic.cpp)}}{42}{tcb@cnt@codeblock.4.33}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.34}{\ignorespaces \hspace *{1ex}Unmasking an IRQ (Apic.cpp)}}{42}{tcb@cnt@codeblock.4.34}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.35}{\ignorespaces \hspace *{1ex}Unmasking an IRQ Internally (IoApic.cpp)}}{42}{tcb@cnt@codeblock.4.35}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.5}Symmetric Multiprocessing}{43}{section.4.5}\protected@file@percent }
\newlabel{sec:apxsymmetric}{{4.5}{43}{Symmetric Multiprocessing}{section.4.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.1}Issuing Inter-Processor Interrupts}{43}{subsection.4.5.1}\protected@file@percent }
\newlabel{subsec:apxipis}{{4.5.1}{43}{Issuing Inter-Processor Interrupts}{subsection.4.5.1}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.36}{\ignorespaces \hspace *{1ex}Issuing an INIT IPI (LocalApic.cpp)}}{43}{tcb@cnt@codeblock.4.36}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.37}{\ignorespaces \hspace *{1ex}Issuing a SIPI (LocalApic.cpp)}}{43}{tcb@cnt@codeblock.4.37}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.2}Preparing Symmetric Multiprocessing Startup}{43}{subsection.4.5.2}\protected@file@percent }
\newlabel{subsec:apxpreparesmp}{{4.5.2}{43}{Preparing Symmetric Multiprocessing Startup}{subsection.4.5.2}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.38}{\ignorespaces \hspace *{1ex}The Boot Routine's Variables (smp\textunderscore {}boot.asm)}}{44}{tcb@cnt@codeblock.4.38}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.39}{\ignorespaces \hspace *{1ex}Preparing the Boot Routine's Variables (ApicSmp.cpp)}}{44}{tcb@cnt@codeblock.4.39}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.40}{\ignorespaces \hspace *{1ex}Relocating the Boot Routine (ApicSmp.cpp)}}{45}{tcb@cnt@codeblock.4.40}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.3}Universal Startup Algorithm}{45}{subsection.4.5.3}\protected@file@percent }
\newlabel{subsec:apxmpusa}{{4.5.3}{45}{Universal Startup Algorithm}{subsection.4.5.3}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.41}{\ignorespaces \hspace *{1ex}The Universal Startup Algorithm (ApicSmp.cpp)}}{45}{tcb@cnt@codeblock.4.41}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.42}{\ignorespaces \hspace *{1ex}Signaling AP Boot Completion (smp\textunderscore {}entry.cpp)}}{45}{tcb@cnt@codeblock.4.42}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.4}Application Processor Boot Routine}{45}{subsection.4.5.4}\protected@file@percent }
\newlabel{subsec:apxapboot}{{4.5.4}{45}{Application Processor Boot Routine}{subsection.4.5.4}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.43}{\ignorespaces \hspace *{1ex}Preparing the Switch to Protected Mode (smp\textunderscore {}boot.asm)}}{46}{tcb@cnt@codeblock.4.43}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.44}{\ignorespaces \hspace *{1ex}Switching from Real Mode to Protected Mode (smp\textunderscore {}boot.asm)}}{46}{tcb@cnt@codeblock.4.44}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.45}{\ignorespaces \hspace *{1ex}Reusing Values from the BSP (smp\textunderscore {}boot.asm)}}{46}{tcb@cnt@codeblock.4.45}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.46}{\ignorespaces \hspace *{1ex}Calling the Entry Function (smp\textunderscore {}boot.asm)}}{47}{tcb@cnt@codeblock.4.46}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.5.5}Application Processor Post-Boot Routine}{47}{subsection.4.5.5}\protected@file@percent }
\newlabel{subsec:apxappostboot}{{4.5.5}{47}{Application Processor Post-Boot Routine}{subsection.4.5.5}{}}
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.47}{\ignorespaces \hspace *{1ex}Initializing the Core's Local APIC (LocalApic.cpp)}}{47}{tcb@cnt@codeblock.4.47}\protected@file@percent }
\@writefile{listings}{\contentsline {tcolorbox}{\numberline {4.48}{\ignorespaces \hspace *{1ex}Synchronizing the Arbitration IDs (LocalApic.cpp)}}{47}{tcb@cnt@codeblock.4.48}\protected@file@percent }
\@setckpt{chap/implementation}{
\setcounter{page}{49}
\setcounter{equation}{0}
\setcounter{enumi}{4}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{7}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{4}
\setcounter{section}{5}
\setcounter{subsection}{5}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{1}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{tcbbreakpart}{1}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{182}
\setcounter{FancyVerbLine}{12}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{56}
\setcounter{FV@TrueTabGroupLevel}{0}
\setcounter{FV@TrueTabCounter}{0}
\setcounter{FV@HighlightLinesStart}{0}
\setcounter{FV@HighlightLinesStop}{0}
\setcounter{FancyVerbLineBreakLast}{0}
\setcounter{FV@BreakBufferDepth}{0}
\setcounter{float@type}{16}
\setcounter{minted@FancyVerbLineTemp}{0}
\setcounter{minted@pygmentizecounter}{48}
\setcounter{listing}{0}
\setcounter{tcblisting}{0}
\setcounter{caption@flags}{6}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}
\setcounter{subtable}{0}
\setcounter{section@level}{2}
\setcounter{Item}{50}
\setcounter{Hfootnote}{37}
\setcounter{bookmark@seq@number}{60}
\setcounter{AlgoLine}{0}
\setcounter{algocfline}{0}
\setcounter{algocfproc}{0}
\setcounter{algocf}{0}
\setcounter{lofdepth}{1}
\setcounter{lotdepth}{1}
\setcounter{svg@param@lastpage}{0}
\setcounter{svg@param@currpage}{-1}
\setcounter{su@anzahl}{0}
\setcounter{LT@tables}{0}
\setcounter{LT@chunks}{0}
\setcounter{@pps}{0}
\setcounter{@ppsavesec}{0}
\setcounter{@ppsaveapp}{0}
\setcounter{AM@survey}{0}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{89}
\setcounter{maxnames}{3}
\setcounter{minnames}{3}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{0}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{blx@maxsection}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{cbx@tempcnta}{0}
\setcounter{cbx@tempcntb}{15}
\setcounter{cbx@tempcntc}{0}
\setcounter{cbx@tempcntd}{-1}
\setcounter{tcb@cnt@codeblock}{48}
}

View File

@ -103,7 +103,7 @@ To be able to easily extend an APIC implementation for single-core systems to SM
\subsection{Interrupt Handling in HhuOS}
\label{subsec:apxcurrenthhuos}
In hhuOS, external interrupts are handled in two stages (see \autoref{subsec:apxcurrenthhuos} for code examples):
In hhuOS, external interrupts are handled in two stages:
\begin{enumerate}
\item After an IRQ is sent by an interrupt controller, the CPU looks up the interrupt handler address in the IDT\@.

234
chap/interrupthandling.aux Normal file
View File

@ -0,0 +1,234 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{listings}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Using the APIC}{15}{chapter.3}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{loa}{\addvspace {10\p@ }}
\newlabel{ch:interrupthandling}{{3}{15}{Using the APIC}{chapter.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Local APIC}{16}{section.3.1}\protected@file@percent }
\newlabel{sec:lapicinit}{{3.1}{16}{Local APIC}{section.3.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces The Local APIC Block Diagram~\blx@tocontentsinit {0}\autocite [sec.~3.11.4.1]{ia32}.\relax }}{17}{figure.3.1}\protected@file@percent }
\newlabel{fig:localapicblock}{{3.1}{17}{The Local APIC Block Diagram~\autocite [sec.~3.11.4.1]{ia32}.\relax }{figure.3.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Enabling the Local APIC}{18}{subsection.3.1.1}\protected@file@percent }
\newlabel{subsec:lapicenable}{{3.1.1}{18}{Enabling the Local APIC}{subsection.3.1.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces The IA32\textunderscore {}APIC\textunderscore {}BASE MSR~\blx@tocontentsinit {0}\autocite [sec.~3.11.4.4]{ia32}.\relax }}{18}{figure.3.2}\protected@file@percent }
\newlabel{fig:ia32apicbasemsr}{{3.2}{18}{The IA32\textunderscore {}APIC\textunderscore {}BASE MSR~\autocite [sec.~3.11.4.4]{ia32}.\relax }{figure.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Accessing Local APIC Registers in xApic Mode}{18}{subsection.3.1.2}\protected@file@percent }
\newlabel{subsec:xapicregacc}{{3.1.2}{18}{Accessing Local APIC Registers in xApic Mode}{subsection.3.1.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}Handling Local Interrupts}{19}{subsection.3.1.3}\protected@file@percent }
\newlabel{subsec:lapiclvtinit}{{3.1.3}{19}{Handling Local Interrupts}{subsection.3.1.3}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces The Local Vector Table~\blx@tocontentsinit {0}\autocite [sec.~3.11.5.1]{ia32}.\relax }}{19}{figure.3.3}\protected@file@percent }
\newlabel{fig:localapiclvt}{{3.3}{19}{The Local Vector Table~\autocite [sec.~3.11.5.1]{ia32}.\relax }{figure.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.4}Allowing Interrupt Processing}{20}{subsection.3.1.4}\protected@file@percent }
\newlabel{subsec:lapicsoftenable}{{3.1.4}{20}{Allowing Interrupt Processing}{subsection.3.1.4}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.4}{\ignorespaces The Local APIC SVR Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.9]{ia32}.\relax }}{20}{figure.3.4}\protected@file@percent }
\newlabel{fig:ia32apicsvr}{{3.4}{20}{The Local APIC SVR Register~\autocite [sec.~3.11.9]{ia32}.\relax }{figure.3.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.5}Local Interrupt EOI}{21}{subsection.3.1.5}\protected@file@percent }
\newlabel{subsec:lapiceoi}{{3.1.5}{21}{Local Interrupt EOI}{subsection.3.1.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.6}APIC Timer}{21}{subsection.3.1.6}\protected@file@percent }
\newlabel{subsec:lapictimer}{{3.1.6}{21}{APIC Timer}{subsection.3.1.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.7}APIC Error Interrupt}{22}{subsection.3.1.7}\protected@file@percent }
\newlabel{subsec:lapicerror}{{3.1.7}{22}{APIC Error Interrupt}{subsection.3.1.7}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.5}{\ignorespaces Error Status Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.5.3]{ia32}.\relax }}{22}{figure.3.5}\protected@file@percent }
\newlabel{fig:ia32esr}{{3.5}{22}{Error Status Register~\autocite [sec.~3.11.5.3]{ia32}.\relax }{figure.3.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}I/O APIC}{23}{section.3.2}\protected@file@percent }
\newlabel{sec:ioapicinit}{{3.2}{23}{I/O APIC}{section.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Interrupt Overrides}{23}{subsection.3.2.1}\protected@file@percent }
\newlabel{subsec:ioapicpcat}{{3.2.1}{23}{Interrupt Overrides}{subsection.3.2.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}External Interrupt EOI}{24}{subsection.3.2.2}\protected@file@percent }
\newlabel{subsec:ioapiceoi}{{3.2.2}{24}{External Interrupt EOI}{subsection.3.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Multiple I/O APICs}{25}{subsection.3.2.3}\protected@file@percent }
\newlabel{subsec:multiioapic}{{3.2.3}{25}{Multiple I/O APICs}{subsection.3.2.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Symmetric Multiprocessing}{25}{section.3.3}\protected@file@percent }
\newlabel{sec:smpinit}{{3.3}{25}{Symmetric Multiprocessing}{section.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Inter-Processor Interrupts}{25}{subsection.3.3.1}\protected@file@percent }
\newlabel{subsec:ipis}{{3.3.1}{25}{Inter-Processor Interrupts}{subsection.3.3.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.6}{\ignorespaces Interrupt Command Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.6.1]{ia32}.\relax }}{26}{figure.3.6}\protected@file@percent }
\newlabel{fig:ia32icr}{{3.6}{26}{Interrupt Command Register~\autocite [sec.~3.11.6.1]{ia32}.\relax }{figure.3.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Universal Startup Algorithm}{26}{subsection.3.3.2}\protected@file@percent }
\newlabel{subsec:apstartup}{{3.3.2}{26}{Universal Startup Algorithm}{subsection.3.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.3}Application Processor Boot Routine}{27}{subsection.3.3.3}\protected@file@percent }
\newlabel{subsec:apboot}{{3.3.3}{27}{Application Processor Boot Routine}{subsection.3.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.4}Application Processor Post-Boot Routine}{28}{subsection.3.3.4}\protected@file@percent }
\newlabel{subsec:apsystementry}{{3.3.4}{28}{Application Processor Post-Boot Routine}{subsection.3.3.4}{}}
\@setckpt{chap/interrupthandling}{
\setcounter{page}{29}
\setcounter{equation}{0}
\setcounter{enumi}{9}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{14}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{3}
\setcounter{section}{3}
\setcounter{subsection}{4}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{6}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{tcbbreakpart}{1}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{30}
\setcounter{FancyVerbLine}{0}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{36}
\setcounter{FV@TrueTabGroupLevel}{0}
\setcounter{FV@TrueTabCounter}{0}
\setcounter{FV@HighlightLinesStart}{0}
\setcounter{FV@HighlightLinesStop}{0}
\setcounter{FancyVerbLineBreakLast}{0}
\setcounter{FV@BreakBufferDepth}{0}
\setcounter{float@type}{16}
\setcounter{minted@FancyVerbLineTemp}{0}
\setcounter{minted@pygmentizecounter}{0}
\setcounter{listing}{0}
\setcounter{tcblisting}{0}
\setcounter{caption@flags}{6}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}
\setcounter{subtable}{0}
\setcounter{section@level}{2}
\setcounter{Item}{44}
\setcounter{Hfootnote}{30}
\setcounter{bookmark@seq@number}{38}
\setcounter{AlgoLine}{0}
\setcounter{algocfline}{0}
\setcounter{algocfproc}{0}
\setcounter{algocf}{0}
\setcounter{lofdepth}{1}
\setcounter{lotdepth}{1}
\setcounter{svg@param@lastpage}{0}
\setcounter{svg@param@currpage}{-1}
\setcounter{su@anzahl}{0}
\setcounter{LT@tables}{0}
\setcounter{LT@chunks}{0}
\setcounter{@pps}{0}
\setcounter{@ppsavesec}{0}
\setcounter{@ppsaveapp}{0}
\setcounter{AM@survey}{0}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{80}
\setcounter{maxnames}{3}
\setcounter{minnames}{3}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{0}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{blx@maxsection}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{cbx@tempcnta}{0}
\setcounter{cbx@tempcntb}{2}
\setcounter{cbx@tempcntc}{0}
\setcounter{cbx@tempcntd}{-1}
\setcounter{tcb@cnt@codeblock}{0}
}

View File

@ -56,20 +56,21 @@ After system power-up, the local APIC is in the following state~\autocite[sec.~3
The initialization sequence consists of these steps, all performed before interrupt handling is enabled (see \autoref{fig:apicenable} for the full initialization sequence including all components):
\begin{enumerate}
\item Enable symmetric I/O mode and set the APIC operating mode.
\item Allocate MMIO memory for register access.
\item Enable symmetric I/O mode.
\item Allocate memory for MMIO register access.
\item Initialize the LVT and NMI\@.
\item Initialize the SVR\@.
\item Initialize the TPR\@.
\item Initialize the APIC timer and error handler.
\item Synchronize the arbitration ID\@.
\item Initialize the APIC timer (if used) and error handler.
\item Synchronize the arbitration IDs.
\item Enable interrupts.
\end{enumerate}
\subsection{Enabling the Local APIC}
\label{subsec:lapicenable}
Because the system boots in PIC mode, \code{0x01} should be written to the IMCR~\autocite[sec.~3.6.2.1]{mpspec} to disconnect the PIC from the local APIC's LINT0 INTI (see \autoref{fig:integratedapic}, for the example implementation see \autoref{subsec:apxdisablepic}).
Because the system boots in a PC/AT compatible mode (PIC mode or virtual wire mode), \code{0x01} should be written to the IMCR~\autocite[sec.~3.6.2.1]{mpspec} (in case it exists) to disconnect the PIC from the local APIC's LINT0 INTI (see \autoref{fig:integratedapic}).
In case the IMCR is not available, all 16 PIC interrupts should be masked.
To set the operating mode, it is first determined which modes are supported by executing the \code{cpuid}~\autocite{x86isa} instruction with \code{eax=1}: If bit 9 of the \code{edx} register is set, xApic mode is supported, if bit 21 of the \code{ecx} register is set, x2Apic mode is supported~\autocite[sec.~5.1.2]{cpuid}.
If xApic mode is supported (if the local APIC is an integrated APIC), it will be in that mode already.
@ -102,8 +103,6 @@ The IA-32 manual specifies a caching strategy of \textquote{strong uncachable}\f
The address offsets (from the base address) for the local APIC registers are listed in the IA-32 manual~\autocite[sec.~3.11.4.1]{ia32} and in \autoref{tab:lapicregs}.
For a short note on x2Apic register access, see \autoref{subsec:usingx2apic}.
\subsection{Handling Local Interrupts}
\label{subsec:lapiclvtinit}
@ -127,7 +126,7 @@ Local interrupts can be configured to use different delivery modes (excerpt)~\au
\end{itemize}
Initially, all local interrupts are initialized to PC/AT defaults: Masked, edge-triggered, active-high and with \textit{fixed} delivery mode.
Most importantly, the vector fields (bits 0:7 of each LVT register) are set to their corresponding interrupt vector (see \autoref{subsec:apxlvtinit} for an example implementation).
Most importantly, the vector fields (bits 0:7 of each LVT register) are set to their corresponding interrupt vector.
After default-initializing the local interrupts, LINT1 has to be configured separately (see \autoref{tab:lapicregslvtlint}), because it is the local APIC's NMI source\footnote{
In older specifications~\autocite{mpspec}, LINT1 is defined as NMI source (see \autoref{fig:integratedapic}).
@ -152,7 +151,7 @@ It makes sense to choose \code{0xFF} for the spurious interrupt vector, as on P6
\label{fig:ia32apicsvr}
\end{figure}
Because the APIC's spurious interrupt has a dedicated interrupt vector (unlike the PIC's spurious interrupt), it can be ignored easily by registering a stub interrupt handler for the appropriate vector (see \autoref{subsec:apxsvr} for an implementation example).
Because the APIC's spurious interrupt has a dedicated interrupt vector (unlike the PIC's spurious interrupt), it can be ignored easily by registering a stub interrupt handler for the appropriate vector.
The final step to initialize the BSP's local APIC is to allow the local APIC to receive interrupts of all priorities.
This is done by writing \code{0x00} to the TPR~\autocite[sec.~3.11.8.3]{ia32} (see \autoref{tab:lapicregstpr}).
@ -218,17 +217,12 @@ To handle these cases, the local APIC provides the local error interrupt, whose
The ESR is a \textquote{write/read} register: Before reading a value from the ESR, it has to be written, which updates the ESR's contents to the error status since the last write.
Writing the ESR also arms the local error interrupt, which does not happen automatically~\autocite[sec.~3.11.5.3]{ia32}.
Enabling the local error interrupt is now as simple as enabling it in the local APIC's LVT and registering an interrupt handler for the appropriate vector (see \autoref{subsec:apxhandlingerror} for an example implementation).
\subsection{Using x2Apic Mode}
\label{subsec:usingx2apic}
% TODO
Enabling the local error interrupt is now as simple as enabling it in the local APIC's LVT and registering an interrupt handler for the appropriate vector.
\section{I/O APIC}
\label{sec:ioapicinit}
To fully replace the PIC and handle external interrupts using the APIC, the I/O APIC, located in the system chipset, has to be initialized by setting its \textbf{\gls{redtbl}} registers~\autocite[sec.~9.5.8]{ich5} (see \autoref{tab:ioapicregsredtbl}).
To fully replace the PIC and handle external interrupts using the APIC, the I/O APIC has to be initialized by setting its \textbf{\gls{redtbl}} registers~\autocite[sec.~9.5.8]{ich5} (see \autoref{tab:ioapicregsredtbl}).
Like the local APIC's LVT, the REDTBL allows configuration of interrupt vectors, masking bits, interrupt delivery modes, pin polarities and trigger modes (see \autoref{subsec:lapiclvtinit}).
Additionally, for external interrupts a destination and destination mode can be specified.
@ -241,11 +235,11 @@ The other fields are set to ISA bus defaults\footnote{
Edge-triggered, active-high.},
\ with \textit{fixed} delivery mode, masked, and the corresponding interrupt vector.
The I/O APIC does not have to be enabled explicitly, if the local APIC is enabled and the REDTBL is initialized correctly, external interrupts will be redirected to the local APIC and handled by the CPU\@.
The I/O APIC does not have to be enabled explicitly: If the local APIC is enabled and the REDTBL is initialized correctly, external interrupts will be redirected to the local APIC and handled by the CPU\@.
Unlike the local APIC's registers, the REDTBL registers are accessed indirectly: Two registers, the \textquote{Index} and \textquote{Data} register~\autocite[sec.~9.5.1]{ich5}, are mapped to the main memory and can be used analogous to the local APIC's registers.
The MMIO base address can be parsed from the MADT (see \autoref{tab:madtioapic}).
Writing an offset to the index register exposes an indirectly accessible I/O APIC register through the data register (see \autoref{subsec:iolistings} for an example implementation).
Writing an offset to the index register exposes an indirectly accessible I/O APIC register through the data register.
This indirect addressing scheme is useful, because the number of external interrupts an I/O APIC supports, and in turn the number of REDTBL registers, can vary\footnote{
Intel's consumer \textbf{\glspl{ich}} always support a fixed amount of 24 external interrupts though~\autocite[sec.~9.5.7]{ich5}.}.

188
chap/introduction.aux Normal file
View File

@ -0,0 +1,188 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{listings}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{loa}{\addvspace {10\p@ }}
\newlabel{ch:introduction}{{1}{1}{Introduction}{chapter.1}{}}
\@setckpt{chap/introduction}{
\setcounter{page}{3}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{1}
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{tcbbreakpart}{0}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{0}
\setcounter{FancyVerbLine}{0}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{10}
\setcounter{FV@TrueTabGroupLevel}{0}
\setcounter{FV@TrueTabCounter}{0}
\setcounter{FV@HighlightLinesStart}{0}
\setcounter{FV@HighlightLinesStop}{0}
\setcounter{FancyVerbLineBreakLast}{0}
\setcounter{FV@BreakBufferDepth}{0}
\setcounter{float@type}{16}
\setcounter{minted@FancyVerbLineTemp}{0}
\setcounter{minted@pygmentizecounter}{0}
\setcounter{listing}{0}
\setcounter{tcblisting}{0}
\setcounter{caption@flags}{0}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}
\setcounter{subtable}{0}
\setcounter{section@level}{0}
\setcounter{Item}{0}
\setcounter{Hfootnote}{0}
\setcounter{bookmark@seq@number}{1}
\setcounter{AlgoLine}{0}
\setcounter{algocfline}{0}
\setcounter{algocfproc}{0}
\setcounter{algocf}{0}
\setcounter{lofdepth}{1}
\setcounter{lotdepth}{1}
\setcounter{svg@param@lastpage}{0}
\setcounter{svg@param@currpage}{-1}
\setcounter{su@anzahl}{0}
\setcounter{LT@tables}{0}
\setcounter{LT@chunks}{0}
\setcounter{@pps}{0}
\setcounter{@ppsavesec}{0}
\setcounter{@ppsaveapp}{0}
\setcounter{AM@survey}{0}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{2}
\setcounter{maxnames}{3}
\setcounter{minnames}{3}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{0}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{blx@maxsection}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{cbx@tempcnta}{0}
\setcounter{cbx@tempcntb}{2}
\setcounter{cbx@tempcntc}{0}
\setcounter{cbx@tempcntd}{-1}
\setcounter{tcb@cnt@codeblock}{0}
}

250
chap/tables.aux Normal file
View File

@ -0,0 +1,250 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{listings}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\numberline {B}Tables}{63}{appendix.1.B}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{loa}{\addvspace {10\p@ }}
\newlabel{ch:tables}{{B}{63}{Tables}{appendix.1.B}{}}
\@writefile{toc}{\contentsline {section}{\numberline {B.1}Local APIC Registers}{64}{section.1.B.1}\protected@file@percent }
\newlabel{sec:localapicregisters}{{B.1}{64}{Local APIC Registers}{section.1.B.1}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.1}{\ignorespaces Local APIC Registers used in this Implementation~\blx@tocontentsinit {0}\autocite [sec.~3.11.4.1]{ia32}.\relax }}{64}{table.caption.5}\protected@file@percent }
\newlabel{tab:lapicregs}{{B.1}{64}{Local APIC Registers used in this Implementation~\autocite [sec.~3.11.4.1]{ia32}.\relax }{table.caption.5}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.2}{\ignorespaces Local APIC ID Register (xApic since Pentium 4)~\blx@tocontentsinit {0}\autocite [sec.~3.11.4.6]{ia32}.\relax }}{64}{table.caption.6}\protected@file@percent }
\newlabel{tab:lapicregsid}{{B.2}{64}{Local APIC ID Register (xApic since Pentium 4)~\autocite [sec.~3.11.4.6]{ia32}.\relax }{table.caption.6}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.3}{\ignorespaces Local APIC Version Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.4.8]{ia32}.\relax }}{64}{table.caption.7}\protected@file@percent }
\newlabel{tab:lapicregsver}{{B.3}{64}{Local APIC Version Register~\autocite [sec.~3.11.4.8]{ia32}.\relax }{table.caption.7}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.4}{\ignorespaces Task Priority Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.8.3.1]{ia32}.\relax }}{65}{table.caption.8}\protected@file@percent }
\newlabel{tab:lapicregstpr}{{B.4}{65}{Task Priority Register~\autocite [sec.~3.11.8.3.1]{ia32}.\relax }{table.caption.8}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.5}{\ignorespaces Local APIC EOI Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.8.5]{ia32}.\relax }}{65}{table.caption.9}\protected@file@percent }
\newlabel{tab:lapicregseoi}{{B.5}{65}{Local APIC EOI Register~\autocite [sec.~3.11.8.5]{ia32}.\relax }{table.caption.9}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.6}{\ignorespaces Spurious Interrupt Vector Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.9]{ia32}.\relax }}{65}{table.caption.10}\protected@file@percent }
\newlabel{tab:lapicregssvr}{{B.6}{65}{Spurious Interrupt Vector Register~\autocite [sec.~3.11.9]{ia32}.\relax }{table.caption.10}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.7}{\ignorespaces Error Status Register (Pentium 4)~\blx@tocontentsinit {0}\autocite [sec.~3.11.5.3]{ia32}.\relax }}{65}{table.caption.11}\protected@file@percent }
\newlabel{tab:lapicregsesr}{{B.7}{65}{Error Status Register (Pentium 4)~\autocite [sec.~3.11.5.3]{ia32}.\relax }{table.caption.11}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.8}{\ignorespaces Interrupt Command Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.6.1]{ia32}.\relax }}{66}{table.caption.12}\protected@file@percent }
\newlabel{tab:lapicregsicr}{{B.8}{66}{Interrupt Command Register~\autocite [sec.~3.11.6.1]{ia32}.\relax }{table.caption.12}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.9}{\ignorespaces LVT Timer Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.5.1]{ia32}.\relax }}{66}{table.caption.13}\protected@file@percent }
\newlabel{tab:lapicregslvtt}{{B.9}{66}{LVT Timer Register~\autocite [sec.~3.11.5.1]{ia32}.\relax }{table.caption.13}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.10}{\ignorespaces LVT Error Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.5.1]{ia32}.\relax }}{66}{table.caption.14}\protected@file@percent }
\newlabel{tab:lapicregslvterr}{{B.10}{66}{LVT Error Register~\autocite [sec.~3.11.5.1]{ia32}.\relax }{table.caption.14}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.11}{\ignorespaces LVT LINT1 Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.5.1]{ia32}.\relax }}{67}{table.caption.15}\protected@file@percent }
\newlabel{tab:lapicregslvtlint}{{B.11}{67}{LVT LINT1 Register~\autocite [sec.~3.11.5.1]{ia32}.\relax }{table.caption.15}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.12}{\ignorespaces Timer Initial Count Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.5.4]{ia32}.\relax }}{67}{table.caption.16}\protected@file@percent }
\newlabel{tab:lapicregstimerinit}{{B.12}{67}{Timer Initial Count Register~\autocite [sec.~3.11.5.4]{ia32}.\relax }{table.caption.16}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.13}{\ignorespaces Timer Divide Configuration Register~\blx@tocontentsinit {0}\autocite [sec.~3.11.5.4]{ia32}.\relax }}{67}{table.caption.17}\protected@file@percent }
\newlabel{tab:lapicregstimerdiv}{{B.13}{67}{Timer Divide Configuration Register~\autocite [sec.~3.11.5.4]{ia32}.\relax }{table.caption.17}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.14}{\ignorespaces IA32\textunderscore {} APIC\textunderscore {}BASE MSR~\blx@tocontentsinit {0}\autocite [sec.~3.11.12.1]{ia32}. \relax }}{67}{table.caption.18}\protected@file@percent }
\newlabel{tab:lapicregsmsr}{{B.14}{67}{IA32\textunderscore {} APIC\textunderscore {}BASE MSR~\autocite [sec.~3.11.12.1]{ia32}. \relax }{table.caption.18}{}}
\@writefile{toc}{\contentsline {section}{\numberline {B.2}I/O APIC Registers}{68}{section.1.B.2}\protected@file@percent }
\newlabel{sec:ioapicregs}{{B.2}{68}{I/O APIC Registers}{section.1.B.2}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.15}{\ignorespaces I/O APIC Registers used in this Implementation~\blx@tocontentsinit {0}\autocite [sec.~9.5]{ich5}.\relax }}{68}{table.caption.19}\protected@file@percent }
\newlabel{tab:ioapicregs}{{B.15}{68}{I/O APIC Registers used in this Implementation~\autocite [sec.~9.5]{ich5}.\relax }{table.caption.19}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.16}{\ignorespaces I/O APIC Index Register~\blx@tocontentsinit {0}\autocite [sec.~9.5.2]{ich5}.\relax }}{68}{table.caption.20}\protected@file@percent }
\newlabel{tab:ioapicregsidx}{{B.16}{68}{I/O APIC Index Register~\autocite [sec.~9.5.2]{ich5}.\relax }{table.caption.20}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.17}{\ignorespaces I/O APIC Data Register~\blx@tocontentsinit {0}\autocite [sec.~9.5.3]{ich5}.\relax }}{68}{table.caption.21}\protected@file@percent }
\newlabel{tab:ioapicregsdat}{{B.17}{68}{I/O APIC Data Register~\autocite [sec.~9.5.3]{ich5}.\relax }{table.caption.21}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.18}{\ignorespaces I/O APIC ID Register~\blx@tocontentsinit {0}\autocite [sec.~9.5.6]{ich5}.\relax }}{68}{table.caption.22}\protected@file@percent }
\newlabel{tab:ioapicregsid}{{B.18}{68}{I/O APIC ID Register~\autocite [sec.~9.5.6]{ich5}.\relax }{table.caption.22}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.19}{\ignorespaces I/O APIC Version Register~\blx@tocontentsinit {0}\autocite [sec.~9.5.7]{ich5}.\relax }}{69}{table.caption.23}\protected@file@percent }
\newlabel{tab:ioapicregsver}{{B.19}{69}{I/O APIC Version Register~\autocite [sec.~9.5.7]{ich5}.\relax }{table.caption.23}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.20}{\ignorespaces I/O APIC REDTBL Register~\blx@tocontentsinit {0}\autocite [sec.~9.5.8]{ich5}.\relax }}{69}{table.caption.24}\protected@file@percent }
\newlabel{tab:ioapicregsredtbl}{{B.20}{69}{I/O APIC REDTBL Register~\autocite [sec.~9.5.8]{ich5}.\relax }{table.caption.24}{}}
\@writefile{toc}{\contentsline {section}{\numberline {B.3}System Description Tables}{70}{section.1.B.3}\protected@file@percent }
\newlabel{sec:sdts}{{B.3}{70}{System Description Tables}{section.1.B.3}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.21}{\ignorespaces ACPI MADT~\blx@tocontentsinit {0}\autocite [sec.~5.2.8]{acpi1}.\relax }}{70}{table.caption.25}\protected@file@percent }
\newlabel{tab:madt}{{B.21}{70}{ACPI MADT~\autocite [sec.~5.2.8]{acpi1}.\relax }{table.caption.25}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.22}{\ignorespaces MADT Processor Local APIC Structure~\blx@tocontentsinit {0}\autocite [sec.~5.2.8.1]{acpi1}.\relax }}{70}{table.caption.26}\protected@file@percent }
\newlabel{tab:madtlapic}{{B.22}{70}{MADT Processor Local APIC Structure~\autocite [sec.~5.2.8.1]{acpi1}.\relax }{table.caption.26}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.23}{\ignorespaces Local APIC Flags~\blx@tocontentsinit {0}\autocite [sec.~5.2.8.1]{acpi1}.\relax }}{70}{table.caption.27}\protected@file@percent }
\newlabel{tab:madtlapicflags}{{B.23}{70}{Local APIC Flags~\autocite [sec.~5.2.8.1]{acpi1}.\relax }{table.caption.27}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.24}{\ignorespaces MADT I/O APIC Structure~\blx@tocontentsinit {0}\autocite [sec.~5.2.8.2]{acpi1}.\relax }}{70}{table.caption.28}\protected@file@percent }
\newlabel{tab:madtioapic}{{B.24}{70}{MADT I/O APIC Structure~\autocite [sec.~5.2.8.2]{acpi1}.\relax }{table.caption.28}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.25}{\ignorespaces MADT Interrupt Source Override Structure~\blx@tocontentsinit {0}\autocite [sec.~5.2.8.3.1]{acpi1}.\relax }}{71}{table.caption.29}\protected@file@percent }
\newlabel{tab:madtirqoverride}{{B.25}{71}{MADT Interrupt Source Override Structure~\autocite [sec.~5.2.8.3.1]{acpi1}.\relax }{table.caption.29}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.26}{\ignorespaces INTI Flags~\blx@tocontentsinit {0}\autocite [sec.~5.2.8.3.1]{acpi1}.\relax }}{71}{table.caption.30}\protected@file@percent }
\newlabel{tab:madtintiflags}{{B.26}{71}{INTI Flags~\autocite [sec.~5.2.8.3.1]{acpi1}.\relax }{table.caption.30}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.27}{\ignorespaces MADT I/O APIC NMI Source~\blx@tocontentsinit {0}\autocite [sec.~5.2.8.3.2]{acpi1}.\relax }}{71}{table.caption.31}\protected@file@percent }
\newlabel{tab:madtionmi}{{B.27}{71}{MADT I/O APIC NMI Source~\autocite [sec.~5.2.8.3.2]{acpi1}.\relax }{table.caption.31}{}}
\@writefile{lot}{\contentsline {table}{\numberline {B.28}{\ignorespaces MADT Local APIC NMI Source~\blx@tocontentsinit {0}\autocite [sec.~5.2.8.3.3]{acpi1}.\relax }}{71}{table.caption.32}\protected@file@percent }
\newlabel{tab:madtlnmi}{{B.28}{71}{MADT Local APIC NMI Source~\autocite [sec.~5.2.8.3.3]{acpi1}.\relax }{table.caption.32}{}}
\@setckpt{chap/tables}{
\setcounter{page}{73}
\setcounter{equation}{0}
\setcounter{enumi}{4}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{2}
\setcounter{section}{3}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{28}
\setcounter{parentequation}{0}
\setcounter{tcbbreakpart}{1}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{188}
\setcounter{FancyVerbLine}{12}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{80}
\setcounter{FV@TrueTabGroupLevel}{0}
\setcounter{FV@TrueTabCounter}{0}
\setcounter{FV@HighlightLinesStart}{0}
\setcounter{FV@HighlightLinesStop}{0}
\setcounter{FancyVerbLineBreakLast}{0}
\setcounter{FV@BreakBufferDepth}{0}
\setcounter{float@type}{16}
\setcounter{minted@FancyVerbLineTemp}{0}
\setcounter{minted@pygmentizecounter}{48}
\setcounter{listing}{0}
\setcounter{tcblisting}{0}
\setcounter{caption@flags}{2}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}
\setcounter{subtable}{0}
\setcounter{section@level}{1}
\setcounter{Item}{50}
\setcounter{Hfootnote}{45}
\setcounter{bookmark@seq@number}{76}
\setcounter{AlgoLine}{0}
\setcounter{algocfline}{0}
\setcounter{algocfproc}{0}
\setcounter{algocf}{0}
\setcounter{lofdepth}{1}
\setcounter{lotdepth}{1}
\setcounter{svg@param@lastpage}{0}
\setcounter{svg@param@currpage}{-1}
\setcounter{su@anzahl}{0}
\setcounter{LT@tables}{0}
\setcounter{LT@chunks}{0}
\setcounter{@pps}{1}
\setcounter{@ppsavesec}{6}
\setcounter{@ppsaveapp}{0}
\setcounter{AM@survey}{0}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{157}
\setcounter{maxnames}{3}
\setcounter{minnames}{3}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{0}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{blx@maxsection}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{cbx@tempcnta}{0}
\setcounter{cbx@tempcntb}{5}
\setcounter{cbx@tempcntc}{0}
\setcounter{cbx@tempcntd}{-1}
\setcounter{tcb@cnt@codeblock}{0}
}

192
chap/testing.aux Normal file
View File

@ -0,0 +1,192 @@
\relax
\providecommand{\transparent@use}[1]{}
\providecommand\hyper@newdestlabel[2]{}
\@writefile{listings}{\addvspace {10pt}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Testing}{49}{chapter.5}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{loa}{\addvspace {10\p@ }}
\newlabel{ch:verification}{{5}{49}{Testing}{chapter.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}Methodology}{50}{section.5.1}\protected@file@percent }
\newlabel{sec:verificationmethods}{{5.1}{50}{Methodology}{section.5.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}Results}{50}{section.5.2}\protected@file@percent }
\newlabel{sec:verificationresults}{{5.2}{50}{Results}{section.5.2}{}}
\@setckpt{chap/testing}{
\setcounter{page}{53}
\setcounter{equation}{0}
\setcounter{enumi}{4}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{3}
\setcounter{mpfootnote}{0}
\setcounter{part}{0}
\setcounter{chapter}{5}
\setcounter{section}{2}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{tcbbreakpart}{1}
\setcounter{tcblayer}{0}
\setcounter{tcolorbox@number}{188}
\setcounter{FancyVerbLine}{12}
\setcounter{linenumber}{1}
\setcounter{LN@truepage}{60}
\setcounter{FV@TrueTabGroupLevel}{0}
\setcounter{FV@TrueTabCounter}{0}
\setcounter{FV@HighlightLinesStart}{0}
\setcounter{FV@HighlightLinesStop}{0}
\setcounter{FancyVerbLineBreakLast}{0}
\setcounter{FV@BreakBufferDepth}{0}
\setcounter{float@type}{16}
\setcounter{minted@FancyVerbLineTemp}{0}
\setcounter{minted@pygmentizecounter}{48}
\setcounter{listing}{0}
\setcounter{tcblisting}{0}
\setcounter{caption@flags}{6}
\setcounter{continuedfloat}{0}
\setcounter{subfigure}{0}
\setcounter{subtable}{0}
\setcounter{section@level}{1}
\setcounter{Item}{50}
\setcounter{Hfootnote}{40}
\setcounter{bookmark@seq@number}{63}
\setcounter{AlgoLine}{0}
\setcounter{algocfline}{0}
\setcounter{algocfproc}{0}
\setcounter{algocf}{0}
\setcounter{lofdepth}{1}
\setcounter{lotdepth}{1}
\setcounter{svg@param@lastpage}{0}
\setcounter{svg@param@currpage}{-1}
\setcounter{su@anzahl}{0}
\setcounter{LT@tables}{0}
\setcounter{LT@chunks}{0}
\setcounter{@pps}{0}
\setcounter{@ppsavesec}{0}
\setcounter{@ppsaveapp}{0}
\setcounter{AM@survey}{0}
\setcounter{tabx@nest}{0}
\setcounter{listtotal}{0}
\setcounter{listcount}{0}
\setcounter{liststart}{0}
\setcounter{liststop}{0}
\setcounter{citecount}{0}
\setcounter{citetotal}{0}
\setcounter{multicitecount}{0}
\setcounter{multicitetotal}{0}
\setcounter{instcount}{90}
\setcounter{maxnames}{3}
\setcounter{minnames}{3}
\setcounter{maxitems}{3}
\setcounter{minitems}{1}
\setcounter{citecounter}{0}
\setcounter{maxcitecounter}{0}
\setcounter{savedcitecounter}{0}
\setcounter{uniquelist}{0}
\setcounter{uniquename}{0}
\setcounter{refsection}{0}
\setcounter{refsegment}{0}
\setcounter{maxextratitle}{0}
\setcounter{maxextratitleyear}{0}
\setcounter{maxextraname}{0}
\setcounter{maxextradate}{0}
\setcounter{maxextraalpha}{0}
\setcounter{abbrvpenalty}{50}
\setcounter{highnamepenalty}{50}
\setcounter{lownamepenalty}{25}
\setcounter{maxparens}{3}
\setcounter{parenlevel}{0}
\setcounter{blx@maxsection}{0}
\setcounter{mincomprange}{10}
\setcounter{maxcomprange}{100000}
\setcounter{mincompwidth}{1}
\setcounter{afterword}{0}
\setcounter{savedafterword}{0}
\setcounter{annotator}{0}
\setcounter{savedannotator}{0}
\setcounter{author}{0}
\setcounter{savedauthor}{0}
\setcounter{bookauthor}{0}
\setcounter{savedbookauthor}{0}
\setcounter{commentator}{0}
\setcounter{savedcommentator}{0}
\setcounter{editor}{0}
\setcounter{savededitor}{0}
\setcounter{editora}{0}
\setcounter{savededitora}{0}
\setcounter{editorb}{0}
\setcounter{savededitorb}{0}
\setcounter{editorc}{0}
\setcounter{savededitorc}{0}
\setcounter{foreword}{0}
\setcounter{savedforeword}{0}
\setcounter{holder}{0}
\setcounter{savedholder}{0}
\setcounter{introduction}{0}
\setcounter{savedintroduction}{0}
\setcounter{namea}{0}
\setcounter{savednamea}{0}
\setcounter{nameb}{0}
\setcounter{savednameb}{0}
\setcounter{namec}{0}
\setcounter{savednamec}{0}
\setcounter{translator}{0}
\setcounter{savedtranslator}{0}
\setcounter{shortauthor}{0}
\setcounter{savedshortauthor}{0}
\setcounter{shorteditor}{0}
\setcounter{savedshorteditor}{0}
\setcounter{labelname}{0}
\setcounter{savedlabelname}{0}
\setcounter{institution}{0}
\setcounter{savedinstitution}{0}
\setcounter{lista}{0}
\setcounter{savedlista}{0}
\setcounter{listb}{0}
\setcounter{savedlistb}{0}
\setcounter{listc}{0}
\setcounter{savedlistc}{0}
\setcounter{listd}{0}
\setcounter{savedlistd}{0}
\setcounter{liste}{0}
\setcounter{savedliste}{0}
\setcounter{listf}{0}
\setcounter{savedlistf}{0}
\setcounter{location}{0}
\setcounter{savedlocation}{0}
\setcounter{organization}{0}
\setcounter{savedorganization}{0}
\setcounter{origlocation}{0}
\setcounter{savedoriglocation}{0}
\setcounter{origpublisher}{0}
\setcounter{savedorigpublisher}{0}
\setcounter{publisher}{0}
\setcounter{savedpublisher}{0}
\setcounter{language}{0}
\setcounter{savedlanguage}{0}
\setcounter{origlanguage}{0}
\setcounter{savedoriglanguage}{0}
\setcounter{pageref}{0}
\setcounter{savedpageref}{0}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}
\setcounter{textcitemaxnames}{0}
\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}
\setcounter{biburlnumpenalty}{0}
\setcounter{biburlucpenalty}{0}
\setcounter{biburllcpenalty}{0}
\setcounter{smartand}{1}
\setcounter{bbx:relatedcount}{0}
\setcounter{bbx:relatedtotal}{0}
\setcounter{cbx@tempcnta}{0}
\setcounter{cbx@tempcntb}{13}
\setcounter{cbx@tempcntc}{0}
\setcounter{cbx@tempcntd}{-1}
\setcounter{tcb@cnt@codeblock}{0}
}

View File

@ -69,6 +69,7 @@
\RequirePackage{etoolbox}
\RequirePackage{siunitx}
\RequirePackage{setspace}
\RequirePackage{pdfpages}
% Options
\floatstyle{boxed} % boxes around figures
@ -337,7 +338,8 @@
}%
{}
\declaration
% \declaration
\includepdf[pages=-]{decl.pdf}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

BIN
decl.pdf Normal file

Binary file not shown.

View File

@ -48,7 +48,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Datum der Abgabe %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\submissiondate{March 3rd, 2023}
\submissiondate{March 8th, 2023}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Erstgutachter %