surenyi
6 months ago
16 changed files with 26 additions and 36241 deletions
@ -1,3 +1,14 @@ |
|||||
*.o |
*.o |
||||
zloader/LS2K.dtb.i |
zloader/LS2K.dtb.i |
||||
zloader/gzrom |
zloader/gzrom |
||||
|
Targets/LS2K/compile/ls2k/lib/libc/libc.a |
||||
|
Targets/LS2K/compile/ls2k/lib/libm/libm.a |
||||
|
Targets/LS2K/compile/ls2k/lib/libz/libz.a |
||||
|
Targets/LS2K/compile/ls2k/pmon |
||||
|
Targets/LS2K/compile/ls2k/pmon.bin |
||||
|
Targets/LS2K/compile/ls2k/vers.c |
||||
|
Targets/LS2K/compile/ls2k/vers.h |
||||
|
Targets/LS2K/compile/ls2k/version |
||||
|
zloader/initmips.c |
||||
|
zloader/pmon.bin.c |
||||
|
zloader/pmon.bin.gz |
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,6 +0,0 @@ |
|||||
char ostype[] = "PMON"; |
|
||||
char osrelease[] = "4.0.0-Release"; |
|
||||
char osversion[] = "ls2k#51"; |
|
||||
char sccs[8] = { ' ', ' ', ' ', ' ', '@', '(', '#', ')' }; |
|
||||
char vers[] = |
|
||||
"PMON 4.0.0-Release (ls2k) #51: Mon May 13 10:48:46 CST 2024 commit c71005b010100385a039f4a2fcff51d3fe198a43 Author: surenyi <surenyi82@163.com> Date: Sat May 11 11:40:20 2024 +0800 "; |
|
@ -1 +0,0 @@ |
|||||
#define VERS "PMON 4.0.0-Release (ls2k) #51: Mon May 13 10:48:46 CST 2024\r\n" |
|
@ -1 +0,0 @@ |
|||||
52 |
|
Binary file not shown.
Binary file not shown.
@ -1,137 +0,0 @@ |
|||||
void realinitmips(unsigned long long msize); |
|
||||
void enable_cache() |
|
||||
{ |
|
||||
__asm__ volatile( |
|
||||
".set mips2;\n" \ |
|
||||
" mfc0 $4,$16;\n" \ |
|
||||
" and $4,$4,0xfffffff8;\n" \ |
|
||||
" or $4,$4,0x3;\n" \ |
|
||||
" mtc0 $4,$16;\n" \ |
|
||||
" .set mips0;\n" |
|
||||
:: |
|
||||
:"$4" |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
#ifndef NOCACHE2 |
|
||||
void flush_cache2() |
|
||||
{ |
|
||||
asm volatile( |
|
||||
".set mips3;\n" \ |
|
||||
" mfc0 $3, $15; # read processor ID register;\n" \ |
|
||||
" li $2, 0x6303; #godson2f prid;\n" \ |
|
||||
" beq $2, $3, godson_2f;\n" \ |
|
||||
" nop;\n" \ |
|
||||
" li $2, 0x6302; #godson2e prid;\n" \ |
|
||||
" bne $2, $3,11f; #godson3a/2g need not flush\n" \ |
|
||||
" nop;\n" \ |
|
||||
"# godson2e;\n" \ |
|
||||
" godson_2f: " \ |
|
||||
" li $2, 0x80000000;\n" \ |
|
||||
" addu $3,$2,512*1024;\n" \ |
|
||||
"10:\n" \ |
|
||||
" cache 3, 0($2);\n" \ |
|
||||
" cache 3, 1($2);\n" \ |
|
||||
" cache 3, 2($2);\n" \ |
|
||||
" cache 3, 3($2);\n" \ |
|
||||
" addu $2, 32;\n" \ |
|
||||
" bne $2,$3, 10b;\n" \ |
|
||||
" nop;\n" \ |
|
||||
"11:\n" \ |
|
||||
:::"$2","$3" |
|
||||
); |
|
||||
} |
|
||||
#else |
|
||||
void flush_cache() |
|
||||
{ |
|
||||
|
|
||||
#ifndef WAYBIT |
|
||||
#define WAYBIT 0 |
|
||||
#endif |
|
||||
#define WAY__(x) #x |
|
||||
#define WAY_(x,y) WAY__((x<<y)) |
|
||||
#define WAY(x) WAY_(x,WAYBIT) |
|
||||
asm volatile( |
|
||||
" .set mips3;\n" |
|
||||
" li $5,0x80000000;\n" |
|
||||
" addu $6,$5,16384;\n" |
|
||||
"1:\n" |
|
||||
" cache 1," WAY(0) "($5);\n" |
|
||||
" cache 1," WAY(1) "($5);\n" |
|
||||
" cache 1," WAY(2) "($5);\n" |
|
||||
" cache 1," WAY(3) "($5);\n" |
|
||||
" cache 0," WAY(0) "($5);\n" |
|
||||
" cache 0," WAY(1) "($5);\n" |
|
||||
" cache 0," WAY(2) "($5);\n" |
|
||||
" cache 0," WAY(3) "($5);\n" |
|
||||
" add $5,$5,32;\n" |
|
||||
" bne $5,$6,1b;\n" |
|
||||
" nop;\n" |
|
||||
" .set mips0;\n" |
|
||||
::: "$5","$6"); |
|
||||
} |
|
||||
#endif |
|
||||
void initmips(unsigned long long msize,unsigned long long dmsize, unsigned long long dctrl) |
|
||||
{ |
|
||||
long *edata=(void *)0x8f256d98; |
|
||||
long *end=(void *)0x8f29d65c; |
|
||||
int *p; |
|
||||
|
|
||||
int debug=(msize==0); |
|
||||
#if defined(LS3A2H_STR) || defined(LS2K_STR) |
|
||||
long long str_ra,str_flag,str_sp; |
|
||||
str_ra = *((long long*)0xafaaa040); |
|
||||
str_sp = *((long long*)0xafaaa048); |
|
||||
str_flag = *((long long*)0xafaaa050); |
|
||||
#endif |
|
||||
// CPU_TLBClear();
|
|
||||
tgt_puts("Uncompressing Bios"); |
|
||||
if(!debug||dctrl&1)enable_cache(); |
|
||||
|
|
||||
#if defined(LS3A2H_STR) || defined(LS2K_STR) |
|
||||
if ((str_sp < 0x9800000000000000) || (str_ra < 0xffffffff80000000) |
|
||||
|| (str_flag != 0x5a5a5a5a5a5a5a5a)) { |
|
||||
#endif |
|
||||
while(1) |
|
||||
{ |
|
||||
if(run_unzip(biosdata,0x8f010000)>=0)break; |
|
||||
} |
|
||||
#if defined(LS3A2H_STR) || defined(LS2K_STR) |
|
||||
} |
|
||||
#endif |
|
||||
tgt_puts("OK,Booting Bios\r\n"); |
|
||||
for(p=edata;p<=end;p++) |
|
||||
{ |
|
||||
*p=0; |
|
||||
} |
|
||||
memset(0x8f010000-0x1000,0,0x1000);//0x8f010000-0x1000 for frame(registers),memset for pretty
|
|
||||
run_unzip(gdbstub, (int)0x80008000); |
|
||||
*(int *)(int)0x80008018 = COM1_BASE_ADDR; |
|
||||
#ifdef NOCACHE2 |
|
||||
flush_cache(); |
|
||||
#else |
|
||||
flush_cache2(); |
|
||||
#endif |
|
||||
realinitmips(debug?dmsize:msize); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
void realinitmips(unsigned long long msize) |
|
||||
{ |
|
||||
asm ("li $29,0x8f010000-0x4000;\n" \ |
|
||||
" li $2,0x8f0d1164;\n" \ |
|
||||
" move $4,%0;\n" \ |
|
||||
" jalr $2;\n" \ |
|
||||
" nop;\n" \ |
|
||||
" 1: b 1b;nop;" \ |
|
||||
: |
|
||||
: "r" (msize) |
|
||||
: "$29", "$2","$4"); |
|
||||
|
|
||||
} |
|
||||
int tgt_puts(char *str) |
|
||||
{ |
|
||||
while(*str) |
|
||||
tgt_putchar(*str++); |
|
||||
return 0; |
|
||||
} |
|
File diff suppressed because it is too large
Binary file not shown.
Loading…
Reference in new issue