/kernel/trunk/arch/ppc32/include/exception.h |
---|
42,47 → 42,47 |
#include <typedefs.h> |
struct istate { |
__u32 r0; |
__u32 r2; |
__u32 r3; |
__u32 r4; |
__u32 r5; |
__u32 r6; |
__u32 r7; |
__u32 r8; |
__u32 r9; |
__u32 r10; |
__u32 r11; |
__u32 r13; |
__u32 r14; |
__u32 r15; |
__u32 r16; |
__u32 r17; |
__u32 r18; |
__u32 r19; |
__u32 r20; |
__u32 r21; |
__u32 r22; |
__u32 r23; |
__u32 r24; |
__u32 r25; |
__u32 r26; |
__u32 r27; |
__u32 r28; |
__u32 r29; |
__u32 r30; |
__u32 r31; |
__u32 cr; |
__u32 pc; |
__u32 srr1; |
__u32 lr; |
__u32 ctr; |
__u32 xer; |
__u32 r12; |
__u32 sp; |
uint32_t r0; |
uint32_t r2; |
uint32_t r3; |
uint32_t r4; |
uint32_t r5; |
uint32_t r6; |
uint32_t r7; |
uint32_t r8; |
uint32_t r9; |
uint32_t r10; |
uint32_t r11; |
uint32_t r13; |
uint32_t r14; |
uint32_t r15; |
uint32_t r16; |
uint32_t r17; |
uint32_t r18; |
uint32_t r19; |
uint32_t r20; |
uint32_t r21; |
uint32_t r22; |
uint32_t r23; |
uint32_t r24; |
uint32_t r25; |
uint32_t r26; |
uint32_t r27; |
uint32_t r28; |
uint32_t r29; |
uint32_t r30; |
uint32_t r31; |
uint32_t cr; |
uint32_t pc; |
uint32_t srr1; |
uint32_t lr; |
uint32_t ctr; |
uint32_t xer; |
uint32_t r12; |
uint32_t sp; |
}; |
static inline void istate_set_retaddr(istate_t *istate, __address retaddr) |
static inline void istate_set_retaddr(istate_t *istate, uintptr_t retaddr) |
{ |
istate->pc = retaddr; |
} |
93,7 → 93,7 |
panic("istate_from_uspace not yet implemented"); |
return 0; |
} |
static inline __native istate_get_pc(istate_t *istate) |
static inline unative_t istate_get_pc(istate_t *istate) |
{ |
return istate->pc; |
} |
/kernel/trunk/arch/ppc32/include/fpu_context.h |
---|
40,25 → 40,25 |
#endif |
struct fpu_context { |
__u64 fr14; |
__u64 fr15; |
__u64 fr16; |
__u64 fr17; |
__u64 fr18; |
__u64 fr19; |
__u64 fr20; |
__u64 fr21; |
__u64 fr22; |
__u64 fr23; |
__u64 fr24; |
__u64 fr25; |
__u64 fr26; |
__u64 fr27; |
__u64 fr28; |
__u64 fr29; |
__u64 fr30; |
__u64 fr31; |
__u32 fpscr; |
uint64_t fr14; |
uint64_t fr15; |
uint64_t fr16; |
uint64_t fr17; |
uint64_t fr18; |
uint64_t fr19; |
uint64_t fr20; |
uint64_t fr21; |
uint64_t fr22; |
uint64_t fr23; |
uint64_t fr24; |
uint64_t fr25; |
uint64_t fr26; |
uint64_t fr27; |
uint64_t fr28; |
uint64_t fr29; |
uint64_t fr30; |
uint64_t fr31; |
uint32_t fpscr; |
} __attribute__ ((packed)); |
#endif |
/kernel/trunk/arch/ppc32/include/byteorder.h |
---|
40,24 → 40,24 |
#define BIG_ENDIAN |
static inline __u64 __u64_le2host(__u64 n) |
static inline uint64_t uint64_t_le2host(uint64_t n) |
{ |
return __u64_byteorder_swap(n); |
return uint64_t_byteorder_swap(n); |
} |
/** Convert little-endian __native to host __native |
/** Convert little-endian unative_t to host unative_t |
* |
* Convert little-endian __native parameter to host endianess. |
* Convert little-endian unative_t parameter to host endianess. |
* |
* @param n Little-endian __native argument. |
* @param n Little-endian unative_t argument. |
* |
* @return Result in host endianess. |
* |
*/ |
static inline __native __native_le2host(__native n) |
static inline unative_t unative_t_le2host(unative_t n) |
{ |
__address v; |
uintptr_t v; |
asm volatile ( |
"lwbrx %0, %1, %2\n" |
/kernel/trunk/arch/ppc32/include/cpuid.h |
---|
38,8 → 38,8 |
#include <arch/types.h> |
struct cpu_info { |
__u16 version; |
__u16 revision; |
uint16_t version; |
uint16_t revision; |
} __attribute__ ((packed)); |
static inline void cpu_version(struct cpu_info *info) |
/kernel/trunk/arch/ppc32/include/types.h |
---|
37,22 → 37,22 |
#define NULL 0 |
typedef signed char __s8; |
typedef signed short __s16; |
typedef signed int __s32; |
typedef signed long long __s64; |
typedef signed char int8_t; |
typedef signed short int16_t; |
typedef signed int int32_t; |
typedef signed long long int64_t; |
typedef unsigned char __u8; |
typedef unsigned short __u16; |
typedef unsigned int __u32; |
typedef unsigned long long __u64; |
typedef unsigned char uint8_t; |
typedef unsigned short uint16_t; |
typedef unsigned int uint32_t; |
typedef unsigned long long uint64_t; |
typedef __u32 __address; |
typedef __u32 pfn_t; |
typedef uint32_t uintptr_t; |
typedef uint32_t pfn_t; |
typedef __u32 ipl_t; |
typedef uint32_t ipl_t; |
typedef __u32 __native; |
typedef uint32_t unative_t; |
/** Page Table Entry. */ |
typedef struct { |
/kernel/trunk/arch/ppc32/include/memstr.h |
---|
37,10 → 37,10 |
#define memcpy(dst, src, cnt) __builtin_memcpy((dst), (src), (cnt)) |
extern void memsetw(__address dst, size_t cnt, __u16 x); |
extern void memsetb(__address dst, size_t cnt, __u8 x); |
extern void memsetw(uintptr_t dst, size_t cnt, uint16_t x); |
extern void memsetb(uintptr_t dst, size_t cnt, uint8_t x); |
extern int memcmp(__address src, __address dst, int cnt); |
extern int memcmp(uintptr_t src, uintptr_t dst, int cnt); |
#endif |
/kernel/trunk/arch/ppc32/include/boot/boot.h |
---|
48,28 → 48,28 |
#include <arch/types.h> |
typedef struct { |
__address addr; |
__u32 size; |
uintptr_t addr; |
uint32_t size; |
} utask_t; |
typedef struct { |
__u32 count; |
uint32_t count; |
utask_t tasks[TASKMAP_MAX_RECORDS]; |
} taskmap_t; |
typedef struct { |
__address start; |
__u32 size; |
uintptr_t start; |
uint32_t size; |
} memzone_t; |
typedef struct { |
__u32 total; |
__u32 count; |
uint32_t total; |
uint32_t count; |
memzone_t zones[MEMMAP_MAX_RECORDS]; |
} memmap_t; |
typedef struct { |
__address addr; |
uintptr_t addr; |
unsigned int width; |
unsigned int height; |
unsigned int bpp; |
77,7 → 77,7 |
} screen_t; |
typedef struct { |
__address addr; |
uintptr_t addr; |
unsigned int size; |
} keyboard_t; |
/kernel/trunk/arch/ppc32/include/asm.h |
---|
128,9 → 128,9 |
* The stack is assumed to be STACK_SIZE bytes long. |
* The stack must start on page boundary. |
*/ |
static inline __address get_stack_base(void) |
static inline uintptr_t get_stack_base(void) |
{ |
__address v; |
uintptr_t v; |
asm volatile ( |
"and %0, %%sp, %1\n" |
145,9 → 145,9 |
} |
void cpu_halt(void); |
void asm_delay_loop(__u32 t); |
void asm_delay_loop(uint32_t t); |
extern void userspace_asm(__address uspace_uarg, __address stack, __address entry); |
extern void userspace_asm(uintptr_t uspace_uarg, uintptr_t stack, uintptr_t entry); |
#endif |
/kernel/trunk/arch/ppc32/include/faddr.h |
---|
37,7 → 37,7 |
#include <arch/types.h> |
#define FADDR(fptr) ((__address) (fptr)) |
#define FADDR(fptr) ((uintptr_t) (fptr)) |
#endif |
/kernel/trunk/arch/ppc32/include/mm/frame.h |
---|
43,7 → 43,7 |
#include <arch/types.h> |
extern __address last_frame; |
extern uintptr_t last_frame; |
extern void frame_arch_init(void); |
/kernel/trunk/arch/ppc32/include/mm/page.h |
---|
43,8 → 43,8 |
#ifdef KERNEL |
#ifndef __ASM__ |
# define KA2PA(x) (((__address) (x)) - 0x80000000) |
# define PA2KA(x) (((__address) (x)) + 0x80000000) |
# define KA2PA(x) (((uintptr_t) (x)) - 0x80000000) |
# define PA2KA(x) (((uintptr_t) (x)) + 0x80000000) |
#else |
# define KA2PA(x) ((x) - 0x80000000) |
# define PA2KA(x) ((x) + 0x80000000) |
94,7 → 94,7 |
#define SET_PTL3_FLAGS_ARCH(ptl2, i, x) |
#define SET_FRAME_FLAGS_ARCH(ptl3, i, x) set_pt_flags((pte_t *) (ptl3), (index_t) (i), (x)) |
#define PTE_VALID_ARCH(pte) (*((__u32 *) (pte)) != 0) |
#define PTE_VALID_ARCH(pte) (*((uint32_t *) (pte)) != 0) |
#define PTE_PRESENT_ARCH(pte) ((pte)->p != 0) |
#define PTE_GET_FRAME_ARCH(pte) ((pte)->pfn << 12) |
#define PTE_WRITABLE_ARCH(pte) 1 |
/kernel/trunk/arch/ppc32/include/mm/asid.h |
---|
39,7 → 39,7 |
#define ASID_MAX_ARCH 4096 |
typedef __u32 asid_t; |
typedef uint32_t asid_t; |
#endif |
/kernel/trunk/arch/ppc32/include/context.h |
---|
42,31 → 42,31 |
#define SP_DELTA 16 |
struct context { |
__address sp; |
__address pc; |
uintptr_t sp; |
uintptr_t pc; |
__u32 r2; |
__u32 r13; |
__u32 r14; |
__u32 r15; |
__u32 r16; |
__u32 r17; |
__u32 r18; |
__u32 r19; |
__u32 r20; |
__u32 r21; |
__u32 r22; |
__u32 r23; |
__u32 r24; |
__u32 r25; |
__u32 r26; |
__u32 r27; |
__u32 r28; |
__u32 r29; |
__u32 r30; |
__u32 r31; |
uint32_t r2; |
uint32_t r13; |
uint32_t r14; |
uint32_t r15; |
uint32_t r16; |
uint32_t r17; |
uint32_t r18; |
uint32_t r19; |
uint32_t r20; |
uint32_t r21; |
uint32_t r22; |
uint32_t r23; |
uint32_t r24; |
uint32_t r25; |
uint32_t r26; |
uint32_t r27; |
uint32_t r28; |
uint32_t r29; |
uint32_t r30; |
uint32_t r31; |
__u32 cr; |
uint32_t cr; |
ipl_t ipl; |
} __attribute__ ((packed)); |
/kernel/trunk/arch/ppc32/include/drivers/pic.h |
---|
42,7 → 42,7 |
#define PIC_ACK_LOW 10 |
#define PIC_ACK_HIGH 6 |
void pic_init(__address base, size_t size); |
void pic_init(uintptr_t base, size_t size); |
void pic_enable_interrupt(int intnum); |
void pic_disable_interrupt(int intnum); |
void pic_ack_interrupt(int intnum); |
/kernel/trunk/arch/ppc32/include/drivers/cuda.h |
---|
40,7 → 40,7 |
#define CUDA_IRQ 10 |
extern void cuda_init(__address base, size_t size); |
extern void cuda_init(uintptr_t base, size_t size); |
extern int cuda_get_scancode(void); |
extern void cuda_grab(void); |
extern void cuda_release(void); |
/kernel/trunk/arch/ppc32/src/ddi/ddi.c |
---|
47,7 → 47,7 |
* |
* @return 0 on success or an error code from errno.h. |
*/ |
int ddi_iospace_enable_arch(task_t *task, __address ioaddr, size_t size) |
int ddi_iospace_enable_arch(task_t *task, uintptr_t ioaddr, size_t size) |
{ |
return 0; |
} |
/kernel/trunk/arch/ppc32/src/ppc32.c |
---|
50,7 → 50,7 |
/* Setup usermode */ |
init.cnt = bootinfo.taskmap.count; |
__u32 i; |
uint32_t i; |
for (i = 0; i < bootinfo.taskmap.count; i++) { |
init.tasks[i].addr = PA2KA(bootinfo.taskmap.tasks[i].addr); |
97,7 → 97,7 |
void userspace(uspace_arg_t *kernel_uarg) |
{ |
userspace_asm((__address) kernel_uarg->uspace_uarg, (__address) kernel_uarg->uspace_stack + THREAD_STACK_SIZE - SP_DELTA, (__address) kernel_uarg->uspace_entry); |
userspace_asm((uintptr_t) kernel_uarg->uspace_uarg, (uintptr_t) kernel_uarg->uspace_stack + THREAD_STACK_SIZE - SP_DELTA, (uintptr_t) kernel_uarg->uspace_entry); |
/* Unreachable */ |
for (;;) |
/kernel/trunk/arch/ppc32/src/mm/tlb.c |
---|
56,7 → 56,7 |
* @return PTE on success, NULL otherwise. |
* |
*/ |
static pte_t *find_mapping_and_check(as_t *as, bool lock, __address badvaddr, int access, istate_t *istate, int *pfrc) |
static pte_t *find_mapping_and_check(as_t *as, bool lock, uintptr_t badvaddr, int access, istate_t *istate, int *pfrc) |
{ |
/* |
* Check if the mapping exists in page tables. |
103,7 → 103,7 |
} |
static void pht_refill_fail(__address badvaddr, istate_t *istate) |
static void pht_refill_fail(uintptr_t badvaddr, istate_t *istate) |
{ |
char *symbol = ""; |
char *sym2 = ""; |
118,12 → 118,12 |
} |
static void pht_insert(const __address vaddr, const pfn_t pfn) |
static void pht_insert(const uintptr_t vaddr, const pfn_t pfn) |
{ |
__u32 page = (vaddr >> 12) & 0xffff; |
__u32 api = (vaddr >> 22) & 0x3f; |
uint32_t page = (vaddr >> 12) & 0xffff; |
uint32_t api = (vaddr >> 22) & 0x3f; |
__u32 vsid; |
uint32_t vsid; |
asm volatile ( |
"mfsrin %0, %1\n" |
: "=r" (vsid) |
130,7 → 130,7 |
: "r" (vaddr) |
); |
__u32 sdr1; |
uint32_t sdr1; |
asm volatile ( |
"mfsdr1 %0\n" |
: "=r" (sdr1) |
138,10 → 138,10 |
phte_t *phte = (phte_t *) PA2KA(sdr1 & 0xffff0000); |
/* Primary hash (xor) */ |
__u32 h = 0; |
__u32 hash = vsid ^ page; |
__u32 base = (hash & 0x3ff) << 3; |
__u32 i; |
uint32_t h = 0; |
uint32_t hash = vsid ^ page; |
uint32_t base = (hash & 0x3ff) << 3; |
uint32_t i; |
bool found = false; |
/* Find unused or colliding |
155,7 → 155,7 |
if (!found) { |
/* Secondary hash (not) */ |
__u32 base2 = (~hash & 0x3ff) << 3; |
uint32_t base2 = (~hash & 0x3ff) << 3; |
/* Find unused or colliding |
PTE in PTEG */ |
185,12 → 185,12 |
} |
static void pht_real_insert(const __address vaddr, const pfn_t pfn) |
static void pht_real_insert(const uintptr_t vaddr, const pfn_t pfn) |
{ |
__u32 page = (vaddr >> 12) & 0xffff; |
__u32 api = (vaddr >> 22) & 0x3f; |
uint32_t page = (vaddr >> 12) & 0xffff; |
uint32_t api = (vaddr >> 22) & 0x3f; |
__u32 vsid; |
uint32_t vsid; |
asm volatile ( |
"mfsrin %0, %1\n" |
: "=r" (vsid) |
197,7 → 197,7 |
: "r" (vaddr) |
); |
__u32 sdr1; |
uint32_t sdr1; |
asm volatile ( |
"mfsdr1 %0\n" |
: "=r" (sdr1) |
205,10 → 205,10 |
phte_t *phte_physical = (phte_t *) (sdr1 & 0xffff0000); |
/* Primary hash (xor) */ |
__u32 h = 0; |
__u32 hash = vsid ^ page; |
__u32 base = (hash & 0x3ff) << 3; |
__u32 i; |
uint32_t h = 0; |
uint32_t hash = vsid ^ page; |
uint32_t base = (hash & 0x3ff) << 3; |
uint32_t i; |
bool found = false; |
/* Find unused or colliding |
222,7 → 222,7 |
if (!found) { |
/* Secondary hash (not) */ |
__u32 base2 = (~hash & 0x3ff) << 3; |
uint32_t base2 = (~hash & 0x3ff) << 3; |
/* Find unused or colliding |
PTE in PTEG */ |
260,7 → 260,7 |
*/ |
void pht_refill(int n, istate_t *istate) |
{ |
__address badvaddr; |
uintptr_t badvaddr; |
pte_t *pte; |
int pfrc; |
as_t *as; |
322,7 → 322,7 |
*/ |
bool pht_real_refill(int n, istate_t *istate) |
{ |
__address badvaddr; |
uintptr_t badvaddr; |
if (n == VECTOR_DATA_STORAGE) { |
asm volatile ( |
332,7 → 332,7 |
} else |
badvaddr = istate->pc; |
__u32 physmem; |
uint32_t physmem; |
asm volatile ( |
"mfsprg3 %0\n" |
: "=r" (physmem) |
364,7 → 364,7 |
void tlb_invalidate_asid(asid_t asid) |
{ |
__u32 sdr1; |
uint32_t sdr1; |
asm volatile ( |
"mfsdr1 %0\n" |
: "=r" (sdr1) |
371,7 → 371,7 |
); |
phte_t *phte = (phte_t *) PA2KA(sdr1 & 0xffff0000); |
__u32 i; |
uint32_t i; |
for (i = 0; i < 8192; i++) { |
if ((phte[i].v) && (phte[i].vsid >= (asid << 4)) && (phte[i].vsid < ((asid << 4) + 16))) |
phte[i].v = 0; |
380,7 → 380,7 |
} |
void tlb_invalidate_pages(asid_t asid, __address page, count_t cnt) |
void tlb_invalidate_pages(asid_t asid, uintptr_t page, count_t cnt) |
{ |
// TODO |
tlb_invalidate_all(); |
395,7 → 395,7 |
); \ |
mask = (upper & 0x1ffc) >> 2; \ |
if (upper & 3) { \ |
__u32 tmp = mask; \ |
uint32_t tmp = mask; \ |
length = 128; \ |
while (tmp) { \ |
if ((tmp & 1) == 0) { \ |
412,10 → 412,10 |
void tlb_print(void) |
{ |
__u32 sr; |
uint32_t sr; |
for (sr = 0; sr < 16; sr++) { |
__u32 vsid; |
uint32_t vsid; |
asm volatile ( |
"mfsrin %0, %1\n" |
: "=r" (vsid) |
424,10 → 424,10 |
printf("vsid[%d]: VSID=%.*p (ASID=%d)%s%s\n", sr, sizeof(vsid) * 2, vsid & 0xffffff, (vsid & 0xffffff) >> 4, ((vsid >> 30) & 1) ? " supervisor" : "", ((vsid >> 29) & 1) ? " user" : ""); |
} |
__u32 upper; |
__u32 lower; |
__u32 mask; |
__u32 length; |
uint32_t upper; |
uint32_t lower; |
uint32_t mask; |
uint32_t length; |
PRINT_BAT("ibat[0]", 528, 529); |
PRINT_BAT("ibat[1]", 530, 531); |
/kernel/trunk/arch/ppc32/src/mm/as.c |
---|
55,7 → 55,7 |
{ |
asid_t asid; |
ipl_t ipl; |
__u32 sr; |
uint32_t sr; |
ipl = interrupts_disable(); |
spinlock_lock(&as->lock); |
/kernel/trunk/arch/ppc32/src/mm/frame.c |
---|
39,7 → 39,7 |
#include <align.h> |
#include <macros.h> |
__address last_frame = 0; |
uintptr_t last_frame = 0; |
void frame_arch_init(void) |
{ |
67,7 → 67,7 |
frame_mark_unavailable(0, 8); |
/* Mark the Page Hash Table frames as unavailable */ |
__u32 sdr1; |
uint32_t sdr1; |
asm volatile ( |
"mfsdr1 %0\n" |
: "=r" (sdr1) |
/kernel/trunk/arch/ppc32/src/mm/page.c |
---|
45,12 → 45,12 |
} |
__address hw_map(__address physaddr, size_t size) |
uintptr_t hw_map(uintptr_t physaddr, size_t size) |
{ |
if (last_frame + ALIGN_UP(size, PAGE_SIZE) > KA2PA(KERNEL_ADDRESS_SPACE_END_ARCH)) |
panic("Unable to map physical memory %p (%d bytes)", physaddr, size) |
__address virtaddr = PA2KA(last_frame); |
uintptr_t virtaddr = PA2KA(last_frame); |
pfn_t i; |
for (i = 0; i < ADDR2PFN(ALIGN_UP(size, PAGE_SIZE)); i++) |
page_mapping_insert(AS_KERNEL, virtaddr + PFN2ADDR(i), physaddr + PFN2ADDR(i), PAGE_NOT_CACHEABLE); |
/kernel/trunk/arch/ppc32/src/interrupt.c |
---|
88,7 → 88,7 |
/* Reregister irq to be IPC-ready */ |
void irq_ipc_bind_arch(__native irq) |
void irq_ipc_bind_arch(unative_t irq) |
{ |
int_register(irq, "ipc_int", ipc_int); |
} |
/kernel/trunk/arch/ppc32/src/drivers/pic.c |
---|
38,11 → 38,11 |
#include <byteorder.h> |
#include <bitops.h> |
static volatile __u32 *pic; |
static volatile uint32_t *pic; |
void pic_init(__address base, size_t size) |
void pic_init(uintptr_t base, size_t size) |
{ |
pic = (__u32 *) hw_map(base, size); |
pic = (uint32_t *) hw_map(base, size); |
} |
/kernel/trunk/arch/ppc32/src/drivers/cuda.c |
---|
59,7 → 59,7 |
#define TIP 0x20 |
static volatile __u8 *cuda = NULL; |
static volatile uint8_t *cuda = NULL; |
static iroutine vector; |
190,10 → 190,10 |
}; |
void send_packet(const __u8 kind, index_t count, ...); |
void send_packet(const uint8_t kind, index_t count, ...); |
static void receive_packet(__u8 *kind, index_t count, __u8 data[]) |
static void receive_packet(uint8_t *kind, index_t count, uint8_t data[]) |
{ |
cuda[B] = cuda[B] & ~TIP; |
*kind = cuda[SR]; |
237,8 → 237,8 |
int cuda_get_scancode(void) |
{ |
__u8 kind; |
__u8 data[4]; |
uint8_t kind; |
uint8_t data[4]; |
receive_packet(&kind, 4, data); |
253,7 → 253,7 |
int scan_code = cuda_get_scancode(); |
if (scan_code != -1) { |
__u8 scancode = (__u8) scan_code; |
uint8_t scancode = (uint8_t) scan_code; |
if ((scancode & 0x80) != 0x80) |
chardev_push_character(&kbrd, lchars[scancode & 0x7f]); |
} |
275,9 → 275,9 |
} |
void cuda_init(__address base, size_t size) |
void cuda_init(uintptr_t base, size_t size) |
{ |
cuda = (__u8 *) hw_map(base, size); |
cuda = (uint8_t *) hw_map(base, size); |
int_register(CUDA_IRQ, "cuda", cuda_irq); |
pic_enable_interrupt(CUDA_IRQ); |
290,7 → 290,7 |
} |
void send_packet(const __u8 kind, index_t count, ...) |
void send_packet(const uint8_t kind, index_t count, ...) |
{ |
index_t i; |
va_list va; |