We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
RISCY BUSINESS»Episode Guide
Bit Twiddling Confusion
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:07Mention the poll1
0:07Mention the poll1
0:07Mention the poll1
2:42Recap and set the stage for the day
2:42Recap and set the stage for the day
2:42Recap and set the stage for the day
3:56Embark on understanding PLIC_enable_interrupt()2
📖
3:56Embark on understanding PLIC_enable_interrupt()2
📖
3:56Embark on understanding PLIC_enable_interrupt()2
📖
7:32Consult demo_gpio.c for a use case of PLIC_enable_interrupt()
📖
7:32Consult demo_gpio.c for a use case of PLIC_enable_interrupt()
📖
7:32Consult demo_gpio.c for a use case of PLIC_enable_interrupt()
📖
12:18Consult env/hifive1.h for the INT_DEVICE_BUTTON_* and BUTTON_*_OFFSET defines
📖
12:18Consult env/hifive1.h for the INT_DEVICE_BUTTON_* and BUTTON_*_OFFSET defines
📖
12:18Consult env/hifive1.h for the INT_DEVICE_BUTTON_* and BUTTON_*_OFFSET defines
📖
16:15Consult PLIC_enable_interrupt() in conjunction with the FE310-G000 Interrupts and the SiFive PLIC Register Map table3
📖
16:15Consult PLIC_enable_interrupt() in conjunction with the FE310-G000 Interrupts and the SiFive PLIC Register Map table3
📖
16:15Consult PLIC_enable_interrupt() in conjunction with the FE310-G000 Interrupts and the SiFive PLIC Register Map table3
📖
19:06Calculating the value of INT_DEVICE_BUTTON_0 and the result of shifting it >> 3
📖
🖌
19:06Calculating the value of INT_DEVICE_BUTTON_0 and the result of shifting it >> 3
📖
🖌
19:06Calculating the value of INT_DEVICE_BUTTON_0 and the result of shifting it >> 3
📖
🖌
21:50Hunt for more information about the GPIO pins
📖
21:50Hunt for more information about the GPIO pins
📖
21:50Hunt for more information about the GPIO pins
📖
24:58Summarise what current_ptr is being set to and move on to working out how the current mask works
📖
24:58Summarise what current_ptr is being set to and move on to working out how the current mask works
📖
24:58Summarise what current_ptr is being set to and move on to working out how the current mask works
📖
27:47The current mask
📖
🖌
27:47The current mask
📖
🖌
27:47The current mask
📖
🖌
31:380x17 >> 3
📖
🖌
31:380x17 >> 3
📖
🖌
31:380x17 >> 3
📖
🖌
33:06miblo It's 128, according to: printf("%d\n", 1 << (0x17 & 0x7));
🗪
33:06miblo It's 128, according to: printf("%d\n", 1 << (0x17 & 0x7));
🗪
33:06miblo It's 128, according to: printf("%d\n", 1 << (0x17 & 0x7));
🗪
37:41The AND operator
37:41The AND operator
37:41The AND operator
38:45Realise that it should be in hex
📖
38:45Realise that it should be in hex
📖
38:45Realise that it should be in hex
📖
39:08miblo It's not 7 and 17, though, it's 0x7 and 0x17
🗪
39:08miblo It's not 7 and 17, though, it's 0x7 and 0x17
🗪
39:08miblo It's not 7 and 17, though, it's 0x7 and 0x17
🗪
39:52The current mask, take #2
📖
🖌
39:52The current mask, take #2
📖
🖌
39:52The current mask, take #2
📖
🖌
43:05miblo I think you should be shifting up the 1 by 0b00111 bits, if that makes a difference
🗪
43:05miblo I think you should be shifting up the 1 by 0b00111 bits, if that makes a difference
🗪
43:05miblo I think you should be shifting up the 1 by 0b00111 bits, if that makes a difference
🗪
43:17The current mask, take #3
📖
🖌
43:17The current mask, take #3
📖
🖌
43:17The current mask, take #3
📖
🖌
44:43The address of current_ptr
📖
🖌
44:43The address of current_ptr
📖
🖌
44:43The address of current_ptr
📖
🖌
47:27miblo We're doing 0x17 >> 3? This does equal 2, apparently
🗪
47:27miblo We're doing 0x17 >> 3? This does equal 2, apparently
🗪
47:27miblo We're doing 0x17 >> 3? This does equal 2, apparently
🗪
48:20Our conceptual understanding of PLIC_enable_interrupt()
📖
48:20Our conceptual understanding of PLIC_enable_interrupt()
📖
48:20Our conceptual understanding of PLIC_enable_interrupt()
📖
52:23miblo I think it's moving the current_ptr to one of the target 1 enables, i.e. the third one, or 0x0C002082 (with 0x0C002080 being the first target 1 enable)
🗪
52:23miblo I think it's moving the current_ptr to one of the target 1 enables, i.e. the third one, or 0x0C002082 (with 0x0C002080 being the first target 1 enable)
🗪
52:23miblo I think it's moving the current_ptr to one of the target 1 enables, i.e. the third one, or 0x0C002082 (with 0x0C002080 being the first target 1 enable)
🗪
53:24Target Enable 0 at 0x0C002082 in memory, and the relative location of current_ptr
📖
🖌
53:24Target Enable 0 at 0x0C002082 in memory, and the relative location of current_ptr
📖
🖌
53:24Target Enable 0 at 0x0C002082 in memory, and the relative location of current_ptr
📖
🖌
58:49Consult the FE310-G000 Interrupts and consider which bit PLIC_enable_interrupt() is setting
58:49Consult the FE310-G000 Interrupts and consider which bit PLIC_enable_interrupt() is setting
58:49Consult the FE310-G000 Interrupts and consider which bit PLIC_enable_interrupt() is setting
59:34azolotko source & 0x7 can produce values from 0 to 7 depending on value of source. So the shift may vary, it doesn't have to be exactly 7
🗪
59:34azolotko source & 0x7 can produce values from 0 to 7 depending on value of source. So the shift may vary, it doesn't have to be exactly 7
🗪
59:34azolotko source & 0x7 can produce values from 0 to 7 depending on value of source. So the shift may vary, it doesn't have to be exactly 7
🗪
1:00:16What PLIC_enable_interrupt() does for source 0x8, to compare with the previous 0x17
📖
🖌
1:00:16What PLIC_enable_interrupt() does for source 0x8, to compare with the previous 0x17
📖
🖌
1:00:16What PLIC_enable_interrupt() does for source 0x8, to compare with the previous 0x17
📖
🖌
1:07:19Consider that it's computing the correct thing for gpio0, and look back at the 0x17 example
📖
🖌
1:07:19Consider that it's computing the correct thing for gpio0, and look back at the 0x17 example
📖
🖌
1:07:19Consider that it's computing the correct thing for gpio0, and look back at the 0x17 example
📖
🖌
1:12:38miblo What is current set to?
🗪
1:12:38miblo What is current set to?
🗪
1:12:38miblo What is current set to?
🗪
1:14:30We are out of time for today
1:14:30We are out of time for today
1:14:30We are out of time for today