Annotation-System/hmml_to_html/out.html

287 lines
18 KiB
HTML

<html>
<head>
<meta charset="UTF-8">
<!-- Load the player -->
<script type="text/javascript" src="player.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="title">
<span class="episode_name">Studying the Machine Interrupt Registers</span>
<div class="refs_container">
<span>References &#9660;</span>
<div class="mouse_catcher"></div>
<div class="refs">
<a data-id="3" href="https://github.com/ucb-bar/rocket/blob/master/src/main/scala/instructions.scala" target="_blank" class="ref">
<span class="ref_content">
<div class="source">GitHub</div>
<div class="ref_title">instructions.scala</div>
</span>
<span data-timestamp="543" class="timecode"><span class="ref_index">[1]</span><span class="time">9:03</span></span>
</a>
<a data-id="3" href="https://en.wikipedia.org/wiki/Register-transfer_level" target="_blank" class="ref">
<span class="ref_content">
<div class="source">Wikipedia</div>
<div class="ref_title">Register-transfer level</div>
</span>
<span data-timestamp="543" class="timecode"><span class="ref_index">[2]</span><span class="time">9:03</span></span>
</a>
<a data-id="4" href="https://forums.sifive.com/t/confusion-regarding-freedom-e-sdk-inline-asm/383" target="_blank" class="ref">
<span class="ref_content">
<div class="source">SiFive Forums</div>
<div class="ref_title">Confusion Regarding Freedom E SDK inline asm</div>
</span>
<span data-timestamp="955" class="timecode"><span class="ref_index">[3]</span><span class="time">15:55</span></span>
</a>
<a data-id="6" href="https://riscv.org/specifications" target="_blank" class="ref">
<span class="ref_content">
<div class="source">RISC-V"</div>
<div class="ref_title">User-Level ISA Specification v2.1</div>
</span>
<span data-timestamp="1344" class="timecode"><span class="ref_index">[4]</span><span class="time">22:24</span></span>
</a>
<a data-id="8" href="http://ericw.ca/notes/a-tiny-guide-to-gcc-inline-assembly.html" target="_blank" class="ref">
<span class="ref_content">
<div class="source">ericw.</div>
<div class="ref_title">A Tiny Guide to GCC Inline Assembly</div>
</span>
<span data-timestamp="1733" class="timecode"><span class="ref_index">[5]</span><span class="time">28:53</span></span>
</a>
<a data-id="10" href="https://riscv.org/specifications/privileged-isa/" target="_blank" class="ref">
<span class="ref_content">
<div class="source">RISC-V</div>
<div class="ref_title">Draft Privileged ISA Specification v1.9.1</div>
</span>
<span data-timestamp="2421" class="timecode"><span class="ref_index">[6]</span><span class="time">40:21</span></span>
</a>
</div>
</div>
<span class="annotator_container">Annotator: <span class="annotator">Miblo</span></span>
</div>
<div class="player_container">
<div class="video_container" data-videoId="ug5WkCROkOk"></div>
<div class="markers_container">
<div class="marker" data-timestamp="6">
<div class="content"><span class="timecode">0:06</span>Recap and set the stage for the day</div>
<div class="progress faded">
<div class="content"><span class="timecode">0:06</span>Recap and set the stage for the day</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">0:06</span>Recap and set the stage for the day</div>
</div>
</div>
<div class="marker" data-timestamp="51">
<div class="content"><span class="timecode">0:51</span>Intuition on two's complement</div>
<div class="progress faded">
<div class="content"><span class="timecode">0:51</span>Intuition on two's complement</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">0:51</span>Intuition on two's complement</div>
</div>
</div>
<div class="marker" data-timestamp="250">
<div class="content"><span class="timecode">4:10</span>We are counting with zeroes</div>
<div class="progress faded">
<div class="content"><span class="timecode">4:10</span>We are counting with zeroes</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">4:10</span>We are counting with zeroes</div>
</div>
</div>
<div class="marker" data-timestamp="543" data-ref="3">
<div class="content"><span class="timecode">9:03</span>Revisit instructions.scala<sup>1</sup> and research register-transfer level<sup>2</sup></div>
<div class="progress faded">
<div class="content"><span class="timecode">9:03</span>Revisit instructions.scala<sup>1</sup> and research register-transfer level<sup>2</sup></div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">9:03</span>Revisit instructions.scala<sup>1</sup> and research register-transfer level<sup>2</sup></div>
</div>
</div>
<div class="marker" data-timestamp="955" data-ref="4">
<div class="content"><span class="timecode">15:55</span>Come to understand how to specify that rs1 represents an immediate or a register, thanks to the reply to the "Confusion Regarding Freedom E SDK inline asm" forum thread<sup>3</sup></div>
<div class="progress faded">
<div class="content"><span class="timecode">15:55</span>Come to understand how to specify that rs1 represents an immediate or a register, thanks to the reply to the "Confusion Regarding Freedom E SDK inline asm" forum thread<sup>3</sup></div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">15:55</span>Come to understand how to specify that rs1 represents an immediate or a register, thanks to the reply to the "Confusion Regarding Freedom E SDK inline asm" forum thread<sup>3</sup></div>
</div>
</div>
<div class="marker" data-timestamp="1105">
<div class="content"><span class="timecode">18:25</span>Read clear_csr() to put csrrc into perspective with our new understanding of pseudo-instructions and the i vs r hints</div>
<div class="progress faded">
<div class="content"><span class="timecode">18:25</span>Read clear_csr() to put csrrc into perspective with our new understanding of pseudo-instructions and the i vs r hints</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">18:25</span>Read clear_csr() to put csrrc into perspective with our new understanding of pseudo-instructions and the i vs r hints</div>
</div>
</div>
<div class="marker" data-timestamp="1344" data-ref="6">
<div class="content"><span class="timecode">22:24</span>Read about CSRRCI in the CSR Instructions section of the User-Level ISA Specification<sup>4</sup></div>
<div class="progress faded">
<div class="content"><span class="timecode">22:24</span>Read about CSRRCI in the CSR Instructions section of the User-Level ISA Specification<sup>4</sup></div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">22:24</span>Read about CSRRCI in the CSR Instructions section of the User-Level ISA Specification<sup>4</sup></div>
</div>
</div>
<div class="marker" data-timestamp="1385">
<div class="content"><span class="timecode">23:05</span>Walk through clear_csr() again</div>
<div class="progress faded">
<div class="content"><span class="timecode">23:05</span>Walk through clear_csr() again</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">23:05</span>Walk through clear_csr() again</div>
</div>
</div>
<div class="marker" data-timestamp="1733" data-ref="8">
<div class="content"><span class="timecode">28:53</span>GNU Assembly Syntax: Constraints and Syntax<sup>5</sup></div>
<div class="progress faded">
<div class="content"><span class="timecode">28:53</span>GNU Assembly Syntax: Constraints and Syntax<sup>5</sup></div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">28:53</span>GNU Assembly Syntax: Constraints and Syntax<sup>5</sup></div>
</div>
</div>
<div class="marker" data-timestamp="2115">
<div class="content"><span class="timecode">35:15</span>Continue reading clear_csr()</div>
<div class="progress faded">
<div class="content"><span class="timecode">35:15</span>Continue reading clear_csr()</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">35:15</span>Continue reading clear_csr()</div>
</div>
</div>
<div class="marker" data-timestamp="2421" data-ref="10">
<div class="content"><span class="timecode">40:21</span>Pop back up to the top of the stack, to reset_demo(), and read about the currently allocated RISC-V machine-level CSR addresses<sup>6</sup></div>
<div class="progress faded">
<div class="content"><span class="timecode">40:21</span>Pop back up to the top of the stack, to reset_demo(), and read about the currently allocated RISC-V machine-level CSR addresses<sup>6</sup></div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">40:21</span>Pop back up to the top of the stack, to reset_demo(), and read about the currently allocated RISC-V machine-level CSR addresses<sup>6</sup></div>
</div>
</div>
<div class="marker" data-timestamp="2651">
<div class="content"><span class="timecode">44:11</span>Read about Machine Interrupt Registers, including the mie (machine interrupt-enable) register</div>
<div class="progress faded">
<div class="content"><span class="timecode">44:11</span>Read about Machine Interrupt Registers, including the mie (machine interrupt-enable) register</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">44:11</span>Read about Machine Interrupt Registers, including the mie (machine interrupt-enable) register</div>
</div>
</div>
<div class="marker" data-timestamp="2966">
<div class="content"><span class="timecode">49:26</span>Note how common it is in plic_driver.c for us to compute an address of a memory mapped register in order to mess with interrupts</div>
<div class="progress faded">
<div class="content"><span class="timecode">49:26</span>Note how common it is in plic_driver.c for us to compute an address of a memory mapped register in order to mess with interrupts</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">49:26</span>Note how common it is in plic_driver.c for us to compute an address of a memory mapped register in order to mess with interrupts</div>
</div>
</div>
<div class="marker" data-timestamp="3105">
<div class="content"><span class="timecode">51:45</span>A few words on the sponge mode that we're in</div>
<div class="progress faded">
<div class="content"><span class="timecode">51:45</span>A few words on the sponge mode that we're in</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">51:45</span>A few words on the sponge mode that we're in</div>
</div>
</div>
<div class="marker" data-timestamp="3170">
<div class="content"><span class="timecode">52:50</span>Continue reading about the Machine Interrupt Registers</div>
<div class="progress faded">
<div class="content"><span class="timecode">52:50</span>Continue reading about the Machine Interrupt Registers</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">52:50</span>Continue reading about the Machine Interrupt Registers</div>
</div>
</div>
<div class="marker" data-timestamp="3513">
<div class="content"><span class="timecode">58:33</span>Return to demo_gpio.c and come to understand the clear_csr() calls in relation to the documentation</div>
<div class="progress faded">
<div class="content"><span class="timecode">58:33</span>Return to demo_gpio.c and come to understand the clear_csr() calls in relation to the documentation</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">58:33</span>Return to demo_gpio.c and come to understand the clear_csr() calls in relation to the documentation</div>
</div>
</div>
<div class="marker" data-timestamp="4008">
<div class="content"><span class="timecode">1:06:48</span>We're out of time for today</div>
<div class="progress faded">
<div class="content"><span class="timecode">1:06:48</span>We're out of time for today</div>
</div>
<div class="progress main">
<div class="content"><span class="timecode">1:06:48</span>We're out of time for today</div>
</div>
</div>
</div>
</div>
<script>
var player = new Player(document.querySelector(".player_container"), onRefChanged);
window.addEventListener("resize", function() { player.updateSize(); });
document.addEventListener("keypress", function(ev) {
switch (ev.key) {
case 'n':
case 'd':
case 's': {
player.jumpToNextMarker();
} break;
case 'p':
case 'a':
case 'w': {
player.jumpToPrevMarker();
} break;
}
});
var refTimecodes = document.querySelectorAll(".refs .ref .timecode");
for (var i = 0; i < refTimecodes.length; ++i) {
refTimecodes[i].addEventListener("click", function(ev) {
if (player) {
var time = ev.currentTarget.getAttribute("data-timestamp");
player.setTime(parseInt(time, 10));
player.play();
ev.preventDefault();
ev.stopPropagation();
return false;
}
});
}
var refSources = document.querySelectorAll(".refs .ref");
for (var i = 0; i < refSources.length; ++i) {
refSources[i].addEventListener("click", function(ev) {
if (player) {
player.pause();
}
});
}
function onRefChanged(ref) {
if (ref !== undefined && ref !== null) {
document.querySelector(".refs_container").classList.add("current");
var refElements = document.querySelectorAll(".refs .ref");
var refs = ref.split(",");
for (var i = 0; i < refElements.length; ++i) {
if (refs.includes(refElements[i].getAttribute("data-id"))) {
refElements[i].classList.add("current");
} else {
refElements[i].classList.remove("current");
}
}
} else {
document.querySelector(".refs_container").classList.remove("current");
var refs = document.querySelectorAll(".refs .ref");
for (var i = 0; i < refs.length; ++i) {
refs[i].classList.remove("current");
}
}
}
</script>
</body>
</html>