delorie.com/archives/browse.cgi | search |
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f |
From: | "philippe meynard" <philippe DOT meynard AT vendeeconcept DOT com> |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | Re: physical adress of int |
Date: | Fri, 10 Sep 2004 17:14:10 +0200 |
Organization: | Guest of France Telecom's news reading service |
Lines: | 48 |
Message-ID: | <chsgc3$390$1@s5.feed.news.oleane.net> |
References: | <chrpjm$r73$1 AT s5 DOT feed DOT news DOT oleane DOT net> <04b501c4973c$429a31d0$0600000a AT broadpark DOT no> |
NNTP-Posting-Host: | 62.161.106.155 |
X-Trace: | s5.feed.news.oleane.net 1094829251 3360 62.161.106.155 (10 Sep 2004 15:14:11 GMT) |
X-Complaints-To: | abuse AT oleane DOT net |
NNTP-Posting-Date: | Fri, 10 Sep 2004 15:14:11 +0000 (UTC) |
X-Priority: | 3 |
X-MSMail-Priority: | Normal |
X-Newsreader: | Microsoft Outlook Express 6.00.2800.1106 |
X-MimeOLE: | Produced By Microsoft MimeOLE V6.00.2800.1106 |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
I don't want the linear address but the physical address of my varaible see the code i wante used typedef signed int s32; s32 str[6], *volatile self_test_results; PortSeltTest=1; SCBPort=8; ioaddr = my base address board ethernet (intel etheexpress),here 0xe400 /* Perform a system self-test. */ self_test_results = (s32*) ((((long) str) + 15) & ~0xf); self_test_results[0] = 0; self_test_results[1] = -1; outl(VIRT_TO_PHYSADR(self_test_results) | PortSelfTest, ioaddr + SCBPort); do { udelay(10); } while (self_test_results[1] == -1 && --boguscnt >= 0); your solution is not good an idea Thanks "Gisle Vanem" <giva AT bgnett DOT no> a écrit dans le message de news: 04b501c4973c$429a31d0$0600000a AT broadpark DOT no... > "philippe meynard" wrote: > > > I want to know a physical adress of my int variable, it's for my ethernet > > board > > for his initialisation. > > First you use DPMI function 6 to get the segment *linear* base > address. If paging is not in effect, something like this should work: > > #define VIRT_TO_LINEAR(addr) ((unsigned long)(addr) + _virtual_base) > > unsigned long _virtual_base = 0; > __dpmi_get_segment_base_address (_my_ds(), &_virtual_base); > > You can probably use CWSDPR0.EXE to avoid paging. > > --gv >
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |