1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     os_MemoryTypes.h
4   Copyright (C)2009 Nintendo Co., Ltd.  All rights reserved.
5   These coded instructions, statements, and computer programs contain
6   proprietary information of Nintendo of America Inc. and/or Nintendo
7   Company Ltd., and are protected by Federal copyright law. They may
8   not be disclosed to third parties or copied or duplicated in any form,
9   in whole or in part, without the prior written consent of Nintendo.
10   $Rev: 32444 $
11  *---------------------------------------------------------------------------
12 
13 
14 */
15 /* Please see man pages for details
16 
17 
18 
19 */
20 #ifndef NN_OS_OS_MEMORYTYPES_H_
21 #define NN_OS_OS_MEMORYTYPES_H_
22 
23 #include <nn/types.h>
24 
25 #ifdef __cplusplus
26 
27 namespace nn { namespace os {
28 
29 /*
30 
31 
32 
33 */
34 enum MemoryState
35 {
36     MEMORY_STATE_FREE,
37     MEMORY_STATE_RESERVED,
38     MEMORY_STATE_IO,
39     MEMORY_STATE_STATIC,
40     MEMORY_STATE_CODE,
41     MEMORY_STATE_PRIVATE,
42     MEMORY_STATE_SHARED,
43     MEMORY_STATE_CONTINUOUS,
44     MEMORY_STATE_ALIASED,
45     MEMORY_STATE_ALIAS,
46     MEMORY_STATE_ALIAS_CODE,
47     MEMORY_STATE_LOCKED,
48 
49     MEMORY_STATE_MAX_BITS   = (1u << 31)
50 };
51 
52 /*
53 
54 
55 
56 */
57 enum PageFlag
58 {
59     MEMORY_FLAG_LOCKED           = (1u << 0),   //
60     MEMORY_FLAG_STATE_CHANGED    = (1u << 1)    //
61 };
62 
63 const int ALLOCATE_OPTION_LINEAR = 0x1u << 8; //
64 
65 /*
66 
67 
68 
69 */
70 enum MemoryOperation
71 {
72     MEMORY_OPERATION_FREE           = (1 << 0),         //
73     MEMORY_OPERATION_RESERVE        = (2 << 0),         //
74     MEMORY_OPERATION_COMMIT         = (3 << 0),         //
75     MEMORY_OPERATION_MAP            = (4 << 0),         //
76     MEMORY_OPERATION_UNMAP          = (5 << 0),         //
77     MEMORY_OPERATION_PROTECT        = (6 << 0),         //
78 
79     MEMORY_OPERATION_REGION_APP     = (1 << 8),         //
80     MEMORY_OPERATION_REGION_SYSTEM  = (2 << 8),         //
81     MEMORY_OPERATION_REGION_BASE    = (3 << 8),         //
82 
83     MEMORY_OPERATION_MASK           = (0xFFu <<  0),    //
84     MEMORY_OPERATION_REGION_MASK    = (0xFu  <<  8),    //
85     MEMORY_OPERATION_FLAG_LINEAR    = (0x1u  << 16),    //
86 
87     MEMORY_OPERATION_MAX_BITS       = (1u << 31)
88 };
89 
90 /*
91 
92 
93 
94 */
95 enum MemoryPermission
96 {
97     MEMORY_PERMISSION_NONE          = 0,            //
98     MEMORY_PERMISSION_READ          = (1u <<  0),   //
99     MEMORY_PERMISSION_WRITE         = (1u <<  1),   //
100     MEMORY_PERMISSION_READ_WRITE    = (MEMORY_PERMISSION_READ | MEMORY_PERMISSION_WRITE),   //
101 
102     MEMORY_PERMISSION_DONT_CARE     = (1u << 28),
103     MEMORY_PERMISSION_MAX_BITS      = (1u << 31)
104 };
105 
106 }}
107 
108 #endif // __cplusplus
109 
110 #endif /* NN_OS_OS_MEMORYTYPES_H_ */
111