mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-08 14:25:57 +02:00
+ introduced PtrInt and PtrUInt
* made strscan 64 bit safe
This commit is contained in:
parent
65cc0f990f
commit
021652683a
@ -43,11 +43,9 @@
|
|||||||
|
|
||||||
|
|
||||||
function strpos(str1,str2 : pchar) : pchar;
|
function strpos(str1,str2 : pchar) : pchar;
|
||||||
|
|
||||||
var
|
var
|
||||||
p : pchar;
|
p : pchar;
|
||||||
lstr2 : longint;
|
lstr2 : SizeInt;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
strpos:=nil;
|
strpos:=nil;
|
||||||
p:=strscan(str1,str2^);
|
p:=strscan(str1,str2^);
|
||||||
@ -61,14 +59,18 @@
|
|||||||
strpos:=p;
|
strpos:=p;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
inc(longint(p));
|
inc(p);
|
||||||
p:=strscan(p,str2^);
|
p:=strscan(p,str2^);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.3 2002-09-07 15:07:46 peter
|
Revision 1.4 2003-12-29 19:24:12 florian
|
||||||
|
+ introduced PtrInt and PtrUInt
|
||||||
|
* made strscan 64 bit safe
|
||||||
|
|
||||||
|
Revision 1.3 2002/09/07 15:07:46 peter
|
||||||
* old logs removed and tabs fixed
|
* old logs removed and tabs fixed
|
||||||
|
|
||||||
}
|
}
|
@ -177,12 +177,16 @@ Type
|
|||||||
StrLenInt = Int64;
|
StrLenInt = Int64;
|
||||||
SizeInt = Int64;
|
SizeInt = Int64;
|
||||||
SizeUInt = QWord;
|
SizeUInt = QWord;
|
||||||
|
PtrInt = Int64;
|
||||||
|
PtrUInt = QWord;
|
||||||
{$endif CPU64}
|
{$endif CPU64}
|
||||||
|
|
||||||
{$ifdef CPU32}
|
{$ifdef CPU32}
|
||||||
StrLenInt = Longint;
|
StrLenInt = Longint;
|
||||||
SizeInt = Longint;
|
SizeInt = Longint;
|
||||||
SizeUInt = DWord;
|
SizeUInt = DWord;
|
||||||
|
PtrInt = Longint;
|
||||||
|
PtrUInt = DWord;
|
||||||
{$endif CPU32}
|
{$endif CPU32}
|
||||||
|
|
||||||
{ Zero - terminated strings }
|
{ Zero - terminated strings }
|
||||||
@ -531,12 +535,12 @@ procedure WideCharToStrVar(S : PWideChar;var Dest : AnsiString);
|
|||||||
Type
|
Type
|
||||||
TWide2AnsiMove=procedure(source:pwidechar;dest:pchar;len:longint);
|
TWide2AnsiMove=procedure(source:pwidechar;dest:pchar;len:longint);
|
||||||
TAnsi2WideMove=procedure(source:pchar;dest:pwidechar;len:longint);
|
TAnsi2WideMove=procedure(source:pchar;dest:pwidechar;len:longint);
|
||||||
|
|
||||||
TWideStringManager = record
|
TWideStringManager = record
|
||||||
Wide2AnsiMove : TWide2AnsiMove;
|
Wide2AnsiMove : TWide2AnsiMove;
|
||||||
Ansi2WideMove : TAnsi2WideMove;
|
Ansi2WideMove : TAnsi2WideMove;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Procedure GetWideStringManager (Var Manager : TWideStringManager);
|
Procedure GetWideStringManager (Var Manager : TWideStringManager);
|
||||||
Procedure SetWideStringManager (Const New : TWideStringManager);
|
Procedure SetWideStringManager (Const New : TWideStringManager);
|
||||||
Procedure SetWideStringManager (Const New : TWideStringManager; Var Old: TWideStringManager);
|
Procedure SetWideStringManager (Const New : TWideStringManager; Var Old: TWideStringManager);
|
||||||
@ -713,7 +717,11 @@ const
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.80 2003-11-29 17:27:05 michael
|
Revision 1.81 2003-12-29 19:24:12 florian
|
||||||
|
+ introduced PtrInt and PtrUInt
|
||||||
|
* made strscan 64 bit safe
|
||||||
|
|
||||||
|
Revision 1.80 2003/11/29 17:27:05 michael
|
||||||
+ Added overloaded version of SetWideStringManager without old parameter
|
+ Added overloaded version of SetWideStringManager without old parameter
|
||||||
|
|
||||||
Revision 1.79 2003/11/28 20:36:13 michael
|
Revision 1.79 2003/11/28 20:36:13 michael
|
||||||
@ -858,4 +866,4 @@ const
|
|||||||
instead of direct comparisons of low/high values of orddefs because
|
instead of direct comparisons of low/high values of orddefs because
|
||||||
qword is a special case
|
qword is a special case
|
||||||
|
|
||||||
}
|
}
|
@ -42,6 +42,7 @@ asm
|
|||||||
.LDone:
|
.LDone:
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FpSysCall(sysnr,param1:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL1'];
|
function FpSysCall(sysnr,param1:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL1'];
|
||||||
{
|
{
|
||||||
This function puts the registers in place, does the call, and then
|
This function puts the registers in place, does the call, and then
|
||||||
@ -81,6 +82,7 @@ asm
|
|||||||
.LDone:
|
.LDone:
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL3'];
|
function FpSysCall(sysnr,param1,param2,param3:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL3'];
|
||||||
{
|
{
|
||||||
This function puts the registers in place, does the call, and then
|
This function puts the registers in place, does the call, and then
|
||||||
@ -107,14 +109,44 @@ function FpSysCall(sysnr,param1,param2,param3,param4:TSysParam):TSysResult; asse
|
|||||||
copies back the registers as they are after the SysCall.
|
copies back the registers as they are after the SysCall.
|
||||||
}
|
}
|
||||||
asm
|
asm
|
||||||
|
stmfd r13!,{r4}
|
||||||
|
ldr r4,param4
|
||||||
|
swi #0x900071
|
||||||
|
cmn r0,#126
|
||||||
|
bls .LDone
|
||||||
|
ldr r1,.LErrno
|
||||||
|
rsb r0,r0,#0
|
||||||
|
str r0,[r1]
|
||||||
|
mvn r0,#0
|
||||||
|
b .LDone
|
||||||
|
.LErrno:
|
||||||
|
.word Errno
|
||||||
|
.LDone:
|
||||||
|
ldmfd r13!,{r4}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL5'];
|
function FpSysCall(sysnr,param1,param2,param3,param4,param5:TSysParam):TSysResult; assembler;[public,alias:'FPC_SYSCALL5'];
|
||||||
{
|
{
|
||||||
This function puts the registers in place, does the call, and then
|
This function puts the registers in place, does the call, and then
|
||||||
copies back the registers as they are after the SysCall.
|
copies back the registers as they are after the SysCall.
|
||||||
}
|
}
|
||||||
asm
|
asm
|
||||||
|
stmfd r13!,{r4-r5}
|
||||||
|
ldr r5,param5
|
||||||
|
ldr r4,param4
|
||||||
|
swi #0x900071
|
||||||
|
cmn r0,#126
|
||||||
|
bls .LDone
|
||||||
|
ldr r1,.LErrno
|
||||||
|
rsb r0,r0,#0
|
||||||
|
str r0,[r1]
|
||||||
|
mvn r0,#0
|
||||||
|
b .LDone
|
||||||
|
.LErrno:
|
||||||
|
.word Errno
|
||||||
|
.LDone:
|
||||||
|
ldmfd r13!,{r4-r5}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -124,11 +156,27 @@ function FpSysCall(sysnr,param1,param2,param3,param4,param5,param6:TSysParam):TS
|
|||||||
copies back the registers as they are after the SysCall.
|
copies back the registers as they are after the SysCall.
|
||||||
}
|
}
|
||||||
asm
|
asm
|
||||||
|
stmfd r13!,{r4-r6}
|
||||||
|
ldr r6,param6
|
||||||
|
ldr r5,param5
|
||||||
|
ldr r4,param4
|
||||||
|
swi #0x900071
|
||||||
|
cmn r0,#126
|
||||||
|
bls .LDone
|
||||||
|
ldr r1,.LErrno
|
||||||
|
rsb r0,r0,#0
|
||||||
|
str r0,[r1]
|
||||||
|
mvn r0,#0
|
||||||
|
b .LDone
|
||||||
|
.LErrno:
|
||||||
|
.word Errno
|
||||||
|
.LDone:
|
||||||
|
ldmfd r13!,{r4-r6}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
// Old style syscall:
|
// Old style syscall:
|
||||||
// Better use ktrace/strace/gdb for debugging.
|
// Better use ktrace/strace/gdb for debugging.
|
||||||
|
|
||||||
Procedure FpSysCall( callnr:longint;var regs : SysCallregs );assembler;
|
Procedure FpSysCall( callnr:longint;var regs : SysCallregs );assembler;
|
||||||
{
|
{
|
||||||
This function puts the registers in place, does the call, and then
|
This function puts the registers in place, does the call, and then
|
||||||
@ -193,7 +241,11 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2003-12-03 17:34:12 florian
|
Revision 1.3 2003-12-29 19:24:12 florian
|
||||||
|
+ introduced PtrInt and PtrUInt
|
||||||
|
* made strscan 64 bit safe
|
||||||
|
|
||||||
|
Revision 1.2 2003/12/03 17:34:12 florian
|
||||||
+ started to implement arm syscalls
|
+ started to implement arm syscalls
|
||||||
|
|
||||||
Revision 1.1 2003/08/28 00:08:29 florian
|
Revision 1.1 2003/08/28 00:08:29 florian
|
||||||
|
Loading…
Reference in New Issue
Block a user