/boot/trunk/arch/ppc32/loader/printf.h |
---|
38,8 → 38,8 |
typedef unsigned char __u8; |
typedef unsigned short __u16; |
typedef unsigned long __u32; |
typedef long long __u64; |
typedef unsigned int __u32; |
typedef unsigned long long __u64; |
typedef __u32 __address; |
typedef __u32 __native; |
/boot/trunk/arch/ppc32/loader/_link.ld |
---|
3,7 → 3,8 |
* |
*/ |
OUTPUT_FORMAT(elf32-powerpc) |
OUTPUT_FORMAT("elf32-powerpc") |
OUTPUT_ARCH(powerpc:common) |
ENTRY(start) |
SECTIONS { |
/boot/trunk/arch/ppc32/loader/Makefile |
---|
46,7 → 46,7 |
OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump |
endif |
CFLAGS = -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mcpu=powerpc |
CFLAGS = -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mcpu=powerpc -m32 |
DEFS = |
SOURCES = \ |
/boot/trunk/arch/ppc64/loader/asm.S |
---|
114,7 → 114,7 |
# jumps to real_mode |
mfmsrd r31 |
mfmsr r31 |
lis r30, ~0@h |
ori r30, r30, ~(msr_ir | msr_dr)@l |
and r31, r31, r30 |
246,7 → 246,7 |
mtspr srr0, r31 |
mfmsrd r31 |
mfmsr r31 |
ori r31, r31, (msr_ir | msr_dr)@l |
mtspr srr1, r31 |
/boot/trunk/arch/ppc64/loader/ofw.h |
---|
42,30 → 42,30 |
typedef struct { |
void *start; |
unsigned int size; |
unsigned long size; |
} memzone_t; |
typedef struct { |
unsigned int total; |
unsigned int count; |
unsigned long total; |
unsigned long count; |
memzone_t zones[MEMMAP_MAX_RECORDS]; |
} memmap_t; |
typedef struct { |
void *addr; |
unsigned int width; |
unsigned int height; |
unsigned int bpp; |
unsigned int scanline; |
unsigned long width; |
unsigned long height; |
unsigned long bpp; |
unsigned long scanline; |
} screen_t; |
extern void init(void); |
extern void ofw_write(const char *str, const int len); |
extern void ofw_write(const char *str, const long len); |
extern void *ofw_translate(const void *virt); |
extern int ofw_map(const void *phys, const void *virt, const int size, const int mode); |
extern int ofw_memmap(memmap_t *map); |
extern int ofw_screen(screen_t *screen); |
extern long ofw_map(const void *phys, const void *virt, const long size, const long mode); |
extern long ofw_memmap(memmap_t *map); |
extern long ofw_screen(screen_t *screen); |
#endif |
/boot/trunk/arch/ppc64/loader/printf.c |
---|
34,7 → 34,7 |
void puts(const char *str) |
{ |
int len = 0; |
long len = 0; |
while (str[len] != 0) |
len++; |
145,7 → 145,7 |
*/ |
void printf(const char *fmt, ...) |
{ |
int i = 0; |
long i = 0; |
va_list ap; |
char c; |
/boot/trunk/arch/ppc64/loader/main.c |
---|
32,7 → 32,7 |
#define KERNEL_START ((void *) &_binary_____________kernel_kernel_bin_start) |
#define KERNEL_END ((void *) &_binary_____________kernel_kernel_bin_end) |
#define KERNEL_SIZE ((unsigned int) KERNEL_END - (unsigned int) KERNEL_START) |
#define KERNEL_SIZE ((unsigned long) KERNEL_END - (unsigned long) KERNEL_START) |
#define HEAP_GAP 1024000 |
41,7 → 41,7 |
static void check_align(const void *addr, const char *desc) |
{ |
if ((unsigned int) addr % PAGE_SIZE != 0) { |
if ((unsigned long) addr % PAGE_SIZE != 0) { |
printf("Error: %s not on page boundary, halting.\n", desc); |
halt(); |
} |
48,12 → 48,12 |
} |
static void fix_overlap(void *va, void **pa, const char *desc, unsigned int *top) |
static void fix_overlap(void *va, void **pa, const char *desc, unsigned long *top) |
{ |
if ((unsigned int) *pa + PAGE_SIZE < *top) { |
if ((unsigned long) *pa + PAGE_SIZE < *top) { |
printf("Warning: %s overlaps kernel physical area\n", desc); |
void *new_va = (void *) (ALIGN_UP((unsigned int) KERNEL_END + HEAP_GAP, PAGE_SIZE) + *top); |
void *new_va = (void *) (ALIGN_UP((unsigned long) KERNEL_END + HEAP_GAP, PAGE_SIZE) + *top); |
void *new_pa = (void *) (HEAP_GAP + *top); |
*top += PAGE_SIZE; |
62,7 → 62,7 |
halt(); |
} |
if ((unsigned int) new_pa + PAGE_SIZE < KERNEL_SIZE) { |
if ((unsigned long) new_pa + PAGE_SIZE < KERNEL_SIZE) { |
printf("Error: %s cannot be relocated, halting.\n", desc); |
halt(); |
} |
103,7 → 103,7 |
void *real_mode_pa = ofw_translate(&real_mode); |
void *trans_pa = ofw_translate(&trans); |
void *bootinfo_pa = ofw_translate(&bootinfo); |
void *fb = (void *) (((unsigned int) bootinfo.screen.addr) & ((unsigned int) ~0 << 17)); |
void *fb = (void *) (((unsigned long) bootinfo.screen.addr) & ((unsigned long) ~0 << 17)); |
printf("\nMemory statistics (total %d MB)\n", bootinfo.memmap.total >> 20); |
printf(" kernel image at %L (size %d bytes)\n", KERNEL_START, KERNEL_SIZE); |
111,8 → 111,8 |
printf(" bootstrap trampoline at %L (physical %L)\n", &real_mode, real_mode_pa); |
printf(" translation table at %L (physical %L)\n", &trans, trans_pa); |
unsigned int top = ALIGN_UP(KERNEL_SIZE, PAGE_SIZE); |
unsigned int addr; |
unsigned long top = ALIGN_UP(KERNEL_SIZE, PAGE_SIZE); |
unsigned long addr; |
for (addr = 0; addr < KERNEL_SIZE; addr += PAGE_SIZE) { |
void *pa = ofw_translate(KERNEL_START + addr); |
fix_overlap(KERNEL_START + addr, &pa, "Kernel image", &top); |
/boot/trunk/arch/ppc64/loader/asm.h |
---|
44,7 → 44,7 |
extern void *trans[TRANS_SIZE]; |
extern void halt(); |
extern void jump_to_kernel(void *bootinfo, unsigned int bootinfo_size, void *trans, unsigned int kernel_size, void *framebuffer, void *real_mode) __attribute__((noreturn)); |
extern void jump_to_kernel(void *bootinfo, unsigned long bootinfo_size, void *trans, unsigned long kernel_size, void *framebuffer, void *real_mode) __attribute__((noreturn)); |
extern void real_mode(); |
#endif |
/boot/trunk/arch/ppc64/loader/printf.h |
---|
38,11 → 38,11 |
typedef unsigned char __u8; |
typedef unsigned short __u16; |
typedef unsigned long __u32; |
typedef long long __u64; |
typedef unsigned int __u32; |
typedef unsigned long __u64; |
typedef __u32 __address; |
typedef __u32 __native; |
typedef __u64 __address; |
typedef __u64 __native; |
typedef char *char_ptr; |
/boot/trunk/arch/ppc64/loader/_link.ld |
---|
3,7 → 3,8 |
* |
*/ |
OUTPUT_FORMAT(elf64-powerpc) |
OUTPUT_FORMAT("elf64-powerpc") |
OUTPUT_ARCH("powerpc:common64") |
ENTRY(start) |
SECTIONS { |
/boot/trunk/arch/ppc64/loader/main.h |
---|
43,8 → 43,8 |
screen_t screen; |
} bootinfo_t; |
extern int _binary_____________kernel_kernel_bin_start; |
extern int _binary_____________kernel_kernel_bin_end; |
extern long _binary_____________kernel_kernel_bin_start; |
extern long _binary_____________kernel_kernel_bin_end; |
extern void start(void); |
extern void bootstrap(void); |
/boot/trunk/arch/ppc64/loader/ofw.c |
---|
33,9 → 33,9 |
#define MAX_OFW_ARGS 10 |
#define BUF_SIZE 1024 |
typedef unsigned int ofw_arg_t; |
typedef unsigned int ihandle; |
typedef unsigned int phandle; |
typedef unsigned long ofw_arg_t; |
typedef unsigned long ihandle; |
typedef unsigned long phandle; |
/** OpenFirmware command structure |
* |
42,8 → 42,8 |
*/ |
typedef struct { |
const char *service; /**< Command name */ |
unsigned int nargs; /**< Number of in arguments */ |
unsigned int nret; /**< Number of out arguments */ |
unsigned long nargs; /**< Number of in arguments */ |
unsigned long nret; /**< Number of out arguments */ |
ofw_arg_t args[MAX_OFW_ARGS]; /**< List of arguments */ |
} ofw_args_t; |
60,11 → 60,11 |
phandle ofw_aliases; |
static int ofw_call(const char *service, const int nargs, const int nret, ofw_arg_t *rets, ...) |
static long ofw_call(const char *service, const long nargs, const long nret, ofw_arg_t *rets, ...) |
{ |
va_list list; |
ofw_args_t args; |
int i; |
long i; |
args.service = service; |
args.nargs = nargs; |
93,15 → 93,15 |
} |
static int ofw_get_property(const phandle device, const char *name, const void *buf, const int buflen) |
static long ofw_get_property(const phandle device, const char *name, const void *buf, const long buflen) |
{ |
return ofw_call("getprop", 4, 1, NULL, device, name, buf, buflen); |
} |
static unsigned int ofw_get_address_cells(const phandle device) |
static unsigned long ofw_get_address_cells(const phandle device) |
{ |
unsigned int ret; |
unsigned long ret; |
if (ofw_get_property(device, "#address-cells", &ret, sizeof(ret)) <= 0) |
if (ofw_get_property(ofw_root, "#address-cells", &ret, sizeof(ret)) <= 0) |
111,9 → 111,9 |
} |
static unsigned int ofw_get_size_cells(const phandle device) |
static unsigned long ofw_get_size_cells(const phandle device) |
{ |
unsigned int ret; |
unsigned long ret; |
if (ofw_get_property(device, "#size-cells", &ret, sizeof(ret)) <= 0) |
if (ofw_get_property(ofw_root, "#size-cells", &ret, sizeof(ret)) <= 0) |
163,7 → 163,7 |
} |
void ofw_write(const char *str, const int len) |
void ofw_write(const char *str, const long len) |
{ |
if (ofw_stdout == 0) |
return; |
184,28 → 184,28 |
} |
int ofw_map(const void *phys, const void *virt, const int size, const int mode) |
long ofw_map(const void *phys, const void *virt, const long size, const long mode) |
{ |
return ofw_call("call-method", 6, 1, NULL, "map", ofw_mmu, mode, size, virt, phys); |
} |
int ofw_memmap(memmap_t *map) |
long ofw_memmap(memmap_t *map) |
{ |
unsigned int buf[BUF_SIZE]; |
int ret = ofw_get_property(ofw_memory, "reg", buf, sizeof(unsigned int) * BUF_SIZE); |
unsigned long buf[BUF_SIZE]; |
long ret = ofw_get_property(ofw_memory, "reg", buf, sizeof(unsigned long) * BUF_SIZE); |
if (ret <= 0) |
return false; |
unsigned int ac = ofw_get_address_cells(ofw_memory); |
unsigned int sc = ofw_get_size_cells(ofw_memory); |
unsigned long ac = ofw_get_address_cells(ofw_memory); |
unsigned long sc = ofw_get_size_cells(ofw_memory); |
int pos; |
long pos; |
map->total = 0; |
map->count = 0; |
for (pos = 0; (pos < ret / sizeof(unsigned int)) && (map->count < MEMMAP_MAX_RECORDS); pos += ac + sc) { |
for (pos = 0; (pos < ret / sizeof(unsigned long)) && (map->count < MEMMAP_MAX_RECORDS); pos += ac + sc) { |
void * start = (void *) buf[pos + ac - 1]; |
unsigned int size = buf[pos + ac + sc - 1]; |
unsigned long size = buf[pos + ac + sc - 1]; |
if (size > 0) { |
map->zones[map->count].start = start; |
217,7 → 217,7 |
} |
int ofw_screen(screen_t *screen) |
long ofw_screen(screen_t *screen) |
{ |
char device_name[BUF_SIZE]; |
/boot/trunk/arch/ppc64/loader/Makefile |
---|
46,7 → 46,7 |
OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump |
endif |
CFLAGS = -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mcpu=powerpc64 |
CFLAGS = -nostdinc -nostdlib -fno-builtin -Werror-implicit-function-declaration -Wmissing-prototypes -Werror -O3 -mcpu=powerpc64 -m64 |
DEFS = |
SOURCES = \ |