-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Unpacked v2.6. This gives us the opportunity to easily get the diff between v2.4 and v2.6.
- Loading branch information
Showing
359 changed files
with
3,958 additions
and
7,132 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
From XM 2.1 serie to 2.3 | ||
------------------------ | ||
|
||
* XtratuM configuration now uses the Kconfig method (Linux 2.6 series) | ||
* Affects: core, rsw (bootloaders), xi | ||
|
||
* GCov support added: it is possible to perform a coverage analisys | ||
* Affects: core, xmgcov (tools) | ||
|
||
* xmcparser: number of line added, now when an error is detected, the | ||
parser outputs the offending line number. | ||
* Affects: xmcparser | ||
|
||
* XML new attribute "features" added to processor | ||
* Affects: xmcparser (tools) | ||
|
||
* XM_VT_EXT_QUEUING_PORT/XM_VT_EXT_SAMPLING_PORT extended interrupts | ||
removed | ||
* Affects: core, libxm | ||
|
||
* Added XM_VT_EXT_OBJDESC, an object attached to an object descritor can | ||
raise an extended interrupt which is associated with the object | ||
descriptor | ||
* Affects: core, libxm | ||
|
||
* Added a field objDescPend and objDescMask to the structure | ||
partitionControlTable_t to be able to individually manage the | ||
XM_VT_EXT_OBJDESC extended interrupt. | ||
* Affects: core, libxm | ||
|
||
* Added functions ObjDescSignalMask/ObjDescSignalUnmask ... to libxm to | ||
manage objDescPend and objDescMask | ||
* Affects: libxm | ||
|
||
* XML modified to include the load address of partitions | ||
* Affects: core, xmcparser | ||
|
||
* XEF (XtratuM Executable Format) added, now it is possible to relocate | ||
partitions | ||
* Affects: core, bootloader (RSW) | ||
|
||
* Large page support added | ||
* Affects: core | ||
|
||
* Most of the parameters such as max number of partitions, are not longer | ||
specified during the compilation of XtratuM. | ||
* Affects: core, xmcparser, bootloader (RSW) | ||
|
||
* Object concept altered, now an object cannot be opened or closed | ||
* Affects: core, libxm | ||
|
||
* XM_hm_open: removed | ||
* Affects: libxm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,10 +3,10 @@ | |
* | ||
* $VERSION$ | ||
* | ||
* Author: Miguel Masmano <[email protected]> | ||
* $AUTHOR$ | ||
* | ||
* $LICENSE: | ||
* (c) Universidad Politecnica de Valencia. All rights reserved. | ||
* COPYRIGHT (c) Fent Innovative Software Solutions S.L. | ||
* Read LICENSE.txt file for the license.terms. | ||
*/ | ||
|
||
|
@@ -15,13 +15,19 @@ | |
#include <brk.h> | ||
#include <kdevice.h> | ||
#include <stdc.h> | ||
#include <virtmm.h> | ||
#include <vmmap.h> | ||
#include <physmm.h> | ||
|
||
#ifdef CONFIG_DEV_MEMBLOCK | ||
static kDevice_t *memBlockTab; | ||
|
||
extern void *MemcpyPhys(void *dst, const void *src, xm_u32_t count); | ||
|
||
static struct memBlockData { | ||
xm_s32_t pos; | ||
struct xmcMemBlock *cfg; | ||
xmAddress_t addr; | ||
} *memBlockData; | ||
|
||
|
||
|
@@ -35,7 +41,8 @@ static xm_s32_t ReadMemBlock(const kDevice_t *kDev, xm_u8_t *buffer, xm_s32_t le | |
if ((memBlockData[kDev->subId].cfg->size-memBlockData[kDev->subId].pos-len)<0) | ||
len=memBlockData[kDev->subId].cfg->size-memBlockData[kDev->subId].pos; | ||
|
||
memcpy(buffer, (xm_u8_t *)(memBlockData[kDev->subId].cfg->startAddr+memBlockData[kDev->subId].pos), len); | ||
memcpy(buffer, (xm_u8_t *)(memBlockData[kDev->subId].addr+memBlockData[kDev->subId].pos), len); | ||
//MemcpyPhys(buffer, (xm_u8_t *)(memBlockData[kDev->subId].cfg->startAddr+memBlockData[kDev->subId].pos), len); | ||
memBlockData[kDev->subId].pos+=len; | ||
|
||
return len; | ||
|
@@ -46,7 +53,8 @@ static xm_s32_t WriteMemBlock(const kDevice_t *kDev, xm_u8_t *buffer, xm_s32_t l | |
if ((memBlockData[kDev->subId].cfg->size-memBlockData[kDev->subId].pos-len)<0) | ||
len=memBlockData[kDev->subId].cfg->size-memBlockData[kDev->subId].pos; | ||
|
||
memcpy((xm_u8_t *)(memBlockData[kDev->subId].cfg->startAddr+memBlockData[kDev->subId].pos), buffer, len); | ||
memcpy((xm_u8_t *)(memBlockData[kDev->subId].addr+memBlockData[kDev->subId].pos), buffer, len); | ||
//MemcpyPhys((xm_u8_t *)(memBlockData[kDev->subId].cfg->startAddr+memBlockData[kDev->subId].pos), buffer, len); | ||
memBlockData[kDev->subId].pos+=len; | ||
|
||
return len; | ||
|
@@ -73,29 +81,34 @@ static xm_s32_t SeekMemBlock(const kDevice_t *kDev, xm_u32_t offset, xm_u32_t wh | |
|
||
static xm_s32_t __VBOOT InitMemBlock(void) { | ||
xm_s32_t e; | ||
|
||
xm_s32_t i, noPages; | ||
|
||
GET_MEMZ(memBlockTab, sizeof(kDevice_t)*xmcTab.deviceTab.noMemBlocks); | ||
GET_MEMZ(memBlockData, sizeof(struct memBlockData)*xmcTab.deviceTab.noMemBlocks); | ||
|
||
for (e=0; e<xmcTab.deviceTab.noMemBlocks; e++) { | ||
memBlockTab[e]=(kDevice_t) { | ||
.subId=e, | ||
.Reset=ResetMemBlock, | ||
.Write=WriteMemBlock, | ||
.Read=ReadMemBlock, | ||
.Seek=SeekMemBlock, | ||
}; | ||
memBlockData[e]=(struct memBlockData){ | ||
.pos=0, | ||
.cfg=&xmcMemBlockTab[e], | ||
}; | ||
for (e = 0; e < xmcTab.deviceTab.noMemBlocks; e++) { | ||
memBlockTab[e] = (kDevice_t) { | ||
.subId=e, | ||
.Reset=ResetMemBlock, | ||
.Write=WriteMemBlock, | ||
.Read=ReadMemBlock, | ||
.Seek=SeekMemBlock, | ||
}; | ||
memBlockData[e]=(struct memBlockData) { | ||
.pos=0, | ||
.cfg=&xmcMemBlockTab[e], | ||
}; | ||
noPages=SIZE2PAGES(xmcMemBlockTab[e].size); | ||
if (!(memBlockData[e].addr=VmmAlloc(noPages))) { | ||
SystemPanic(0, 0, "[InitMemBlock] System is out of free frames\n"); | ||
} | ||
for (i=0; i<(noPages*PAGE_SIZE); i+=PAGE_SIZE) | ||
VmMapPage(xmcMemBlockTab[e].startAddr+i, memBlockData[e].addr+i,_PG_PRESENT|_PG_RW); | ||
kprintf("Mapped memory block device at 0x%x\n", memBlockData[e].addr); | ||
} | ||
return 0; | ||
} | ||
|
||
//static void ShutdownMemBlock(void) { | ||
//} | ||
|
||
static const kDevice_t *GetMemBlock(xm_u32_t subId) { | ||
return &memBlockTab[subId]; | ||
} | ||
|
Oops, something went wrong.