diff --git a/sys/dev/dev_dmem.pas b/sys/dev/dev_dmem.pas index 63b87be5..334fd30c 100644 --- a/sys/dev/dev_dmem.pas +++ b/sys/dev/dev_dmem.pas @@ -62,6 +62,57 @@ type size :QWORD; end; + p_set_prt_aperture=^t_set_prt_aperture; + t_set_prt_aperture=packed record + addr :Pointer; + len :QWORD; + apertureId:Integer; + end; + +function set_prt_aperture(data:p_set_prt_aperture):Integer; +var + addr:QWORD; + len :QWORD; +begin + Result:=0; + + addr:=QWORD(data^.addr); + + if ((addr and $3fff) <> 0) then + begin + Exit(EINVAL); + end; + + len:=data^.len; + + if ((QWORD($fc00000000) - addr) < len) then + begin + Exit(EINVAL); + end; + + if (DWORD((addr - QWORD($1000000000)) shr 34) > 58) then + begin + Exit(EINVAL); + end; + + if (Int64(len) < 0) then + begin + Exit(EINVAL); + end; + + if (DWORD(data^.apertureId) > 2) then + begin + Exit(EINVAL); + end; + + if ((len and $3fff) <> 0) then + begin + Exit(EINVAL); + end; + + Writeln('TODO:set_prt_aperture(0x',HexStr(addr,10),',0x',HexStr(len,10),',',data^.apertureId,')'); +end; + Function dmem_ioctl(dev:p_cdev;cmd:QWORD;data:Pointer;fflag:Integer):Integer; var dmap:p_dmem_obj; @@ -143,6 +194,11 @@ begin Result:=dmem_map_get_memory_type(dmap^.dmem,data); end; + $80188008: //sceKernelSetPrtAperture + begin + set_prt_aperture(data); + end; + else begin print_error_td('dmem_ioctl(0x'+HexStr(cmd,8)+')'); diff --git a/sys/init_sysent.pas b/sys/init_sysent.pas index c3f7a2b7..4f213a6c 100644 --- a/sys/init_sysent.pas +++ b/sys/init_sysent.pas @@ -683,7 +683,7 @@ var ), (//[125] sy_narg:3; - sy_call:nil; + sy_call:@sys_netgetiflist; sy_name:'sys_netgetiflist' ), (//[126] diff --git a/sys/kern/kern_bnet.pas b/sys/kern/kern_bnet.pas index 72552219..ce4492ee 100644 --- a/sys/kern/kern_bnet.pas +++ b/sys/kern/kern_bnet.pas @@ -5,7 +5,8 @@ unit kern_bnet; interface -function sys_netcontrol(fd,op:Integer;buf:Pointer;nbuf:DWORD):Integer; +function sys_netcontrol (fd,op:Integer;buf:Pointer;nbuf:DWORD):Integer; +function sys_netgetiflist(param1:Pointer;param2,param3:Integer):Integer; implementation @@ -90,7 +91,11 @@ begin end; end; - +function sys_netgetiflist(param1:Pointer;param2,param3:Integer):Integer; +begin + Writeln('TODO:sys_netgetiflist(0x',HexStr(QWORD(param1),10),',',param2,',',param3,')'); + Result:=0; +end; end.