Working on page protection
This commit is contained in:
parent
7b35afb291
commit
ca2c676df9
|
@ -38,13 +38,16 @@ SECTIONS {
|
||||||
|
|
||||||
.text ALIGN (0x1000) :
|
.text ALIGN (0x1000) :
|
||||||
{
|
{
|
||||||
|
_text = .;
|
||||||
*(.text)
|
*(.text)
|
||||||
|
_text_end = .;
|
||||||
}
|
}
|
||||||
|
|
||||||
.data ALIGN (0x1000) :
|
.data ALIGN (0x1000) :
|
||||||
{
|
{
|
||||||
_data = .;
|
_data = .;
|
||||||
*(.data)
|
*(.data)
|
||||||
|
_data_end = .;
|
||||||
}
|
}
|
||||||
|
|
||||||
.eh_frame ALIGN (0x1000) :
|
.eh_frame ALIGN (0x1000) :
|
||||||
|
@ -55,7 +58,9 @@ SECTIONS {
|
||||||
|
|
||||||
.rodata ALIGN (0x1000) :
|
.rodata ALIGN (0x1000) :
|
||||||
{
|
{
|
||||||
|
_rodata = .;
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
|
_rodata_end = .;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bss ALIGN (0x1000) :
|
.bss ALIGN (0x1000) :
|
||||||
|
@ -70,5 +75,3 @@ SECTIONS {
|
||||||
|
|
||||||
kernelEnd = .;
|
kernelEnd = .;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -100,10 +100,10 @@ void IoDoStarWars(void)
|
||||||
|
|
||||||
//bprintf(BStdOut, "\n");
|
//bprintf(BStdOut, "\n");
|
||||||
|
|
||||||
for (uint i = 0; i < sizeof(score)/sizeof(struct Note); i++) {
|
for (uint i = 0; i < 41; i++) {
|
||||||
IoDoTone(score[i].tone, score[i].time);
|
//IoDoTone(score[i].tone, score[i].time);
|
||||||
//bprintf(BStdOut, "%d ", i);
|
bprintf(BStdOut, "%d ", score[i].time);
|
||||||
//BStdOut->flusher(BStdOut);
|
BStdOut->flusher(BStdOut);
|
||||||
}
|
}
|
||||||
IoQuietSpeaker();
|
IoQuietSpeaker();
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,13 @@ volatile pde_t MmPD[512 * RAM_MAX] __attribute__((__aligned__(KPAGESIZE)));;
|
||||||
|
|
||||||
volatile pte_t MmPT[512 * NB_4K] __attribute__((__aligned__(KPAGESIZE)));;
|
volatile pte_t MmPT[512 * NB_4K] __attribute__((__aligned__(KPAGESIZE)));;
|
||||||
|
|
||||||
|
extern ulong _text;
|
||||||
|
extern ulong _text_end;
|
||||||
|
extern ulong _rodata;
|
||||||
|
extern ulong _rodata_end;
|
||||||
|
extern ulong _data;
|
||||||
|
extern ulong _data_end;
|
||||||
|
|
||||||
ulong MmStackGuards[2] = { 0 };
|
ulong MmStackGuards[2] = { 0 };
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -68,6 +75,24 @@ void MmInitPaging(void)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TEXT
|
||||||
|
if ((ulong)(i*KPAGESIZE) >= (ulong)_text && (ulong)(i*KPAGESIZE) <= (ulong)_text_end) {
|
||||||
|
MmPT[i] = ((ulong)(i*KPAGESIZE));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// RODATA
|
||||||
|
if ((ulong)(i*KPAGESIZE) >= (ulong)_rodata && (ulong)(i*KPAGESIZE) <= (ulong)_rodata_end) {
|
||||||
|
MmPT[i] = ((ulong)(i*KPAGESIZE)) | MF_PRESENT;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// DATA
|
||||||
|
if ((ulong)(i*KPAGESIZE) >= (ulong)_data && (ulong)(i*KPAGESIZE) <= (ulong)_data_end) {
|
||||||
|
MmPT[i] = ((ulong)(i*KPAGESIZE)) | MF_PRESENT;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
MmPT[i] = ((ulong)(i*KPAGESIZE)) | MF_PRESENT | MF_READWRITE;
|
MmPT[i] = ((ulong)(i*KPAGESIZE)) | MF_PRESENT | MF_READWRITE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue