You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
C++
53 lines
1.5 KiB
C++
#include "arch/lapic.h"
|
|
#include "boot/startup_ap.h"
|
|
#include "debug/output.h"
|
|
|
|
#include "arch/cga.h"
|
|
#include "arch/textwindow.h"
|
|
|
|
// Main function
|
|
// (the bootstrap processor starts here)}
|
|
extern "C" int main() {
|
|
unsigned int numCPUs = Core::count();
|
|
DBG_VERBOSE << "Number of CPUs: " << numCPUs << endl;
|
|
|
|
////test cga implemantation
|
|
//CGA::setCursor(1, 2);
|
|
//unsigned x,y;
|
|
//CGA::getCursor(x, y);
|
|
//CGA::setCursor(x+1, y+1);
|
|
//for(uint8_t i = 0; i < 10; i++)
|
|
// CGA::show(i, i, i+0x30, CGA::Attribute());
|
|
|
|
//test textwindow implemantation
|
|
TextWindow tw_global = TextWindow(0, 80, 0, 25, true);
|
|
tw_global.reset(' ', CGA::Attribute(CGA::LIGHT_GREEN, CGA::BLUE, false));
|
|
|
|
TextWindow tw = TextWindow(0, 10, 0, 10, true);
|
|
tw.reset();
|
|
tw.setPos(0,0);
|
|
tw.print("lorem ipsum dolor sit amit", 26);
|
|
tw.setPos(0,-1);
|
|
tw.print("test", 4, CGA::Attribute(CGA::BLACK, CGA::BLUE));
|
|
int x,y;
|
|
tw.getPos(x,y);
|
|
tw.setPos(x+1,y);
|
|
|
|
/* Start application processors
|
|
* To avoid unexpected behaviour, make sure that interrupts are not
|
|
* enabled before the APs are booted. Otherwise it might interfere with the
|
|
* Startup IPIs or even block devices like keyboard because of a missing EOI
|
|
*/
|
|
ApplicationProcessor::boot();
|
|
|
|
return 0;
|
|
}
|
|
|
|
// Main function for application processors
|
|
extern "C" int main_ap() {
|
|
DBG_VERBOSE << "CPU core " << static_cast<int>(Core::getID()) << " / LAPIC "
|
|
<< static_cast<int>(LAPIC::getID()) << " in main_ap()" << endl;
|
|
|
|
return 0;
|
|
}
|