/// Retrieves the revision version from a packed system version.
#define GET_VERSION_REVISION(version) (((version)>> 8)&0xFF)
-/// Memory regions.
-typedef enum
-{
- MEMREGION_ALL = 0, ///< All regions.
- MEMREGION_APPLICATION = 1, ///< APPLICATION memory.
- MEMREGION_SYSTEM = 2, ///< SYSTEM memory.
- MEMREGION_BASE = 3, ///< BASE memory.
-} MemRegion;
-
-/// OS_VersionBin. Format of the system version: "<major>.<minor>.<build>-<nupver><region>"
+/*! OS_VersionBin. Format of the system version: "<major>.<minor>.<build>-<nupver><region>" */
typedef struct
{
u8 build;
return (*(vu32*)0x1FF80000) & ~0xFF;
}
-/**
- * @brief Gets the size of the specified memory region.
- * @param region Memory region to check.
- * @return The size of the memory region, in bytes.
- */
-static inline u32 osGetMemRegionSize(MemRegion region)
-{
- if(region == MEMREGION_ALL) {
- return osGetMemRegionSize(MEMREGION_APPLICATION) + osGetMemRegionSize(MEMREGION_SYSTEM) + osGetMemRegionSize(MEMREGION_BASE);
- } else {
- return *(vu32*) (0x1FF80040 + (region - 1) * 0x4);
- }
-}
-
-/**
- * @brief Gets the number of used bytes within the specified memory region.
- * @param region Memory region to check.
- * @return The number of used bytes of memory.
- */
-s64 osGetMemRegionUsed(MemRegion region);
-
-/**
- * @brief Gets the number of free bytes within the specified memory region.
- * @param region Memory region to check.
- * @return The number of free bytes of memory.
- */
-static inline s64 osGetMemRegionFree(MemRegion region)
-{
- return (s64) osGetMemRegionSize(region) - osGetMemRegionUsed(region);
-}
-
/**
* @brief Gets the current time.
* @return The number of milliseconds since 1st Jan 1900 00:00.
return 0;
}
-s64 osGetMemRegionUsed(MemRegion region) {
- s64 mem_used;
- svcGetSystemInfo(&mem_used, 0, region);
- return mem_used;
-}
-
//---------------------------------------------------------------------------------
static datetime_t getSysTime(void) {
//---------------------------------------------------------------------------------
#include <3ds/types.h>
#include <3ds/svc.h>
#include <3ds/env.h>
-#include <3ds/os.h>
extern char* fake_heap_start;
extern char* fake_heap_end;
void __attribute__((weak)) __system_allocateHeaps() {
u32 tmp=0;
- if(envIsHomebrew()) {
- // Use launcher-provided heap information.
- __ctru_heap_size = envGetHeapSize();
- __ctru_linear_heap_size = envGetLinearHeapSize();
- } else {
- // Distribute available memory into halves, aligning to page size.
- u32 size = (osGetMemRegionFree(MEMREGION_APPLICATION) / 2) & 0xFFFFF000;
- __ctru_heap_size = size;
- __ctru_linear_heap_size = size;
- }
+ // Retrieve heap sizes.
+ __ctru_heap_size = envGetHeapSize();
+ __ctru_linear_heap_size = envGetLinearHeapSize();
// Allocate the application heap
__ctru_heap = 0x08000000;