Merge branch 'main' of gitlab.ibr.cs.tu-bs.de:vss/teaching/ss25/v_bsb1/Gruppe_018
This commit is contained in:
@@ -32,4 +32,5 @@ context_launch:
|
|||||||
align 16
|
align 16
|
||||||
fake_systemv_abi:
|
fake_systemv_abi:
|
||||||
mov rdi, r15
|
mov rdi, r15
|
||||||
|
mov rsi, r14
|
||||||
ret
|
ret
|
||||||
|
|||||||
3
main.cc
3
main.cc
@@ -34,7 +34,6 @@ Ticketlock koutlock;
|
|||||||
//};
|
//};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TextStream dout[Core::MAX] = {
|
TextStream dout[Core::MAX] = {
|
||||||
{0, 40, 10, 14},
|
{0, 40, 10, 14},
|
||||||
{40, 80, 10, 14},
|
{40, 80, 10, 14},
|
||||||
@@ -128,8 +127,6 @@ extern "C" int main() {
|
|||||||
DBG << "Main CPU " << static_cast<int>(LAPIC::getID()) << endl << flush;
|
DBG << "Main CPU " << static_cast<int>(LAPIC::getID()) << endl << flush;
|
||||||
|
|
||||||
test1_thread.go();
|
test1_thread.go();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Application{}.action();
|
//Application{}.action();
|
||||||
while (true){
|
while (true){
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "../../arch/core.h"
|
#include "../../arch/core.h"
|
||||||
#include "../../interrupt/guard.h"
|
#include "../../interrupt/guard.h"
|
||||||
#include "../../debug/output.h"
|
#include "../../debug/output.h"
|
||||||
|
#include "../../arch/context.h"
|
||||||
char text[] = "Ich mag\n\
|
char text[] = "Ich mag\n\
|
||||||
Saftige Pflaumen voller Aroma\n\
|
Saftige Pflaumen voller Aroma\n\
|
||||||
Ich knuddel jede Oma ins Koma\n\
|
Ich knuddel jede Oma ins Koma\n\
|
||||||
@@ -22,7 +23,8 @@ Und wacht sie aus'm Koma auf, kriegt sie von mir 'n Sticker\n\
|
|||||||
\n";
|
\n";
|
||||||
|
|
||||||
extern Ticketlock koutlock;
|
extern Ticketlock koutlock;
|
||||||
|
extern Context* test2; extern Context* test1;
|
||||||
|
extern uint8_t test1_stack[], test2_stack[];
|
||||||
void activeWaitDelay(uint64_t cycles) {
|
void activeWaitDelay(uint64_t cycles) {
|
||||||
uint64_t counter = 0; // Use volatile to prevent optimization
|
uint64_t counter = 0; // Use volatile to prevent optimization
|
||||||
for (uint64_t i = 0; i < cycles; ++i) {
|
for (uint64_t i = 0; i < cycles; ++i) {
|
||||||
@@ -48,9 +50,9 @@ void Application::action() { // NOLINT
|
|||||||
//koutlock.unlock();
|
//koutlock.unlock();
|
||||||
}
|
}
|
||||||
Core::pause();
|
Core::pause();
|
||||||
//activeWaitDelay(1000000000);
|
activeWaitDelay(10000000);
|
||||||
if(cnt >= sizeof(text)-1)
|
if(cnt >= sizeof(text)-1)
|
||||||
cnt=0;
|
cnt=0;
|
||||||
|
context_switch(test2,test1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user