wok diff linld/stuff/src/LOAD.CPP @ rev 20751
Add libsbc
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Tue Feb 12 12:12:36 2019 +0100 (2019-02-12) |
parents | 7f39f4ab7511 |
children | 094f58ac8183 |
line diff
1.1 --- a/linld/stuff/src/LOAD.CPP Sun Feb 10 10:35:42 2019 +0100 1.2 +++ b/linld/stuff/src/LOAD.CPP Tue Feb 12 12:12:36 2019 +0100 1.3 @@ -112,11 +112,10 @@ 1.4 const u32 HdrS = 'H' + ('d'<<8) + (u32('r')<<16) + (u32('S')<<24); 1.5 1.6 // register value to launch the kernel real mode code 1.7 +static u32 csip; 1.8 #ifdef NO386 1.9 -u32 csip; 1.10 extern "C" u16 topseg(); 1.11 #else 1.12 -u32 csip=0x90200000; 1.13 #define topseg() 0x9000 1.14 #endif 1.15 u16 rm_size; 1.16 @@ -133,25 +132,21 @@ 1.17 #define _rm_buf(m) (((u8**)(m))[-1]) 1.18 #define _pm_high (((u8*)(m))[-3]) 1.19 #define _rm_size (*(u16*)((u8*)(m)-5)) 1.20 -#ifdef NO386 1.21 #define _csip (*(u32*)((u8*)(m)-9)) 1.22 - *((u16 *)&csip+1)=topseg()+0x20; 1.23 -#else 1.24 -#define _csip csip 1.25 -#endif 1.26 - // Open kernel, read first kb, check it 1.27 - m->errmsg = kernel_file_error; 1.28 - open_image(kernel_name, m); 1.29 - 1.30 char *version_string; 1.31 { 1.32 struct kernelparams_t *kernelparams; 1.33 kernelparams = &(((first1k_t*) (_rm_buf(m) = (u8 *)malloc_or_die(_32k)))->params); 1.34 #define first1k ((first1k_t*)((u8 *)kernelparams-0x1F1)) 1.35 1.36 + *((u16 *)&_csip+1)=topseg()|0x20; 1.37 + // Open kernel, read first kb, check it 1.38 + m->errmsg = kernel_file_error; 1.39 + open_image(kernel_name, m); 1.40 + 1.41 do { 1.42 // Do not use malloc below until heap_top adjustment (see <*>) 1.43 - if (read(m->fd, rm_buf, 0x200) == 0x200) { 1.44 + if (readrm(m, 0x200) == 0x200) { 1.45 1.46 lseekcur(m->fd,-0x200); 1.47 if(kernelparams->setup_sects == 0) { 1.48 @@ -171,7 +166,7 @@ 1.49 m->chunk_size -= _rm_size; 1.50 1.51 // Read remaining rm loader 1.52 - if (read(m->fd, rm_buf, _rm_size) == _rm_size) break; 1.53 + if (readrm(m, _rm_size) == _rm_size) break; 1.54 } 1.55 die(kernel_file_error); 1.56 } while (0);